From ad69edbb4b230582ecd1863e68d0c2044f5ad901 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 26 Jul 2018 19:52:47 -0600 Subject: 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 * 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/c-lang.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gdb/c-lang.h') diff --git a/gdb/c-lang.h b/gdb/c-lang.h index ae17abd..f9eab04 100644 --- a/gdb/c-lang.h +++ b/gdb/c-lang.h @@ -35,7 +35,7 @@ struct parser_state; /* The various kinds of C string and character. Note that these values are chosen so that they may be or'd together in certain ways. */ -enum c_string_type_values +enum c_string_type_values : unsigned { /* An ordinary string: "value". */ C_STRING = 0, -- cgit v1.1