mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-01 11:59:27 +08:00
Ignore warning about using different types of enums in switch
When compiling with clang 6, I see a bunch of warnings like this: /home/emaisin/src/binutils-gdb/gdb/amd64-linux-tdep.c:1427:8: error: comparison of two values with different enumeration types in switch statement ('enum amd64_syscall' and 'amd 64_x32_syscall') [-Werror,-Wenum-compare-switch] case amd64_x32_sys_move_pages: ^~~~~~~~~~~~~~~~~~~~~~~~ In this switch, we indeed use enumerators of both types amd64_x32_syscall and amd64_syscall. This is done on purpose, and the enum values are chosen so that they are complementary. I think it's still a useful warning, so I chose to ignore just that particular case. gdb/ChangeLog: * common/diagnostics.h (DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES): New macro. * amd64-linux-tdep.c (amd64_canonicalize_syscall): Use it.
This commit is contained in:
@ -1,3 +1,9 @@
|
||||
2017-12-29 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* common/diagnostics.h
|
||||
(DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES): New macro.
|
||||
* amd64-linux-tdep.c (amd64_canonicalize_syscall): Use it.
|
||||
|
||||
2017-12-29 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* linux-thread-db.c (thread_db_detach): Remove call to
|
||||
|
@ -363,6 +363,9 @@ amd64_all_but_ip_registers_record (struct regcache *regcache)
|
||||
static enum gdb_syscall
|
||||
amd64_canonicalize_syscall (enum amd64_syscall syscall_number)
|
||||
{
|
||||
DIAGNOSTIC_PUSH
|
||||
DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
|
||||
|
||||
switch (syscall_number) {
|
||||
case amd64_sys_read:
|
||||
case amd64_x32_sys_read:
|
||||
@ -1430,6 +1433,8 @@ amd64_canonicalize_syscall (enum amd64_syscall syscall_number)
|
||||
default:
|
||||
return gdb_sys_no_syscall;
|
||||
}
|
||||
|
||||
DIAGNOSTIC_POP
|
||||
}
|
||||
|
||||
/* Parse the arguments of current system call instruction and record
|
||||
|
@ -38,6 +38,8 @@
|
||||
DIAGNOSTIC_IGNORE ("-Wdeprecated-register")
|
||||
# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
|
||||
DIAGNOSTIC_IGNORE ("-Wunused-function")
|
||||
# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \
|
||||
DIAGNOSTIC_IGNORE ("-Wenum-compare-switch")
|
||||
|
||||
#elif defined (__GNUC__) /* GCC */
|
||||
|
||||
@ -45,12 +47,15 @@
|
||||
# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
|
||||
# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
|
||||
DIAGNOSTIC_IGNORE ("-Wunused-function")
|
||||
# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
|
||||
|
||||
#else /* Other compilers */
|
||||
|
||||
# define DIAGNOSTIC_IGNORE_SELF_MOVE
|
||||
# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
|
||||
# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION
|
||||
# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* COMMON_DIAGNOSTICS_H */
|
||||
|
Reference in New Issue
Block a user