Use unsigned as base type for some enums
authorTom Tromey <tom@tromey.com>
Fri, 27 Jul 2018 01:52:47 +0000 (19:52 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 3 Oct 2018 21:19:06 +0000 (15:19 -0600)
commitad69edbb4b230582ecd1863e68d0c2044f5ad901
treebafe26e96f1575c3f21d221e569545b07c2e7ed2
parent780942fc2422d80a49b748e484890f11db31f49e
Use unsigned as base type for some enums

-fsanitize=undefined complains about using operator~ on various enum
types that are used with DEF_ENUM_FLAGS_TYPE.  This patch fixes these
problems by explicitly setting the base type for these enums to
unsigned.  It also adds a static assert to enum_flags to ensure that
future enums used this way have an unsigned underlying type.

gdb/ChangeLog
2018-10-03  Tom Tromey  <tom@tromey.com>

* common/enum-flags.h (enum_flags::operator~): Add static assert.
* symfile-add-flags.h (enum symfile_add_flag): Use unsigned as
base type.
* objfile-flags.h (enum objfile_flag): Use unsigned as base type.
* gdbtypes.h (enum type_instance_flag_value): Use unsigned as base
type.
* c-lang.h (enum c_string_type_values): Use unsigned as base
type.
* btrace.h (enum btrace_thread_flag): Use unsigned as base type.
gdb/ChangeLog
gdb/btrace.h
gdb/c-lang.h
gdb/common/enum-flags.h
gdb/gdbtypes.h
gdb/objfile-flags.h
gdb/symfile-add-flags.h