diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d94e5066d8..f748f76cce 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2011-11-22 Tom Tromey + + * mi/mi-common.c (_initialize_gdb_mi_common): Remove. + Use static_assert to check the size of + async_reason_string_lookup. + * common/gdb_assert.h (static_assert): New macro. + 2011-11-22 Alan Modra * rs6000-tdep.c (ppc_deal_with_atomic_sequence): Correct branch diff --git a/gdb/common/gdb_assert.h b/gdb/common/gdb_assert.h index 634049e803..de1a1c9870 100644 --- a/gdb/common/gdb_assert.h +++ b/gdb/common/gdb_assert.h @@ -20,6 +20,12 @@ #ifndef GDB_ASSERT_H #define GDB_ASSERT_H +/* A static assertion. This will cause a compile-time error if EXPR, + which must be a compile-time constant, is false. */ + +#define static_assert(expr) \ + extern int never_defined_just_used_for_checking[(expr) ? 1 : -1] + /* PRAGMATICS: "gdb_assert.h":gdb_assert() is a lower case (rather than upper case) macro since that provides the closest fit to the existing lower case macro :assert() that it is diff --git a/gdb/mi/mi-common.c b/gdb/mi/mi-common.c index ab126f6b85..e7dd3c46c8 100644 --- a/gdb/mi/mi-common.c +++ b/gdb/mi/mi-common.c @@ -18,6 +18,7 @@ along with this program. If not, see . */ #include "defs.h" +#include "gdb_assert.h" #include "mi-common.h" static const char * const async_reason_string_lookup[] = @@ -37,19 +38,10 @@ static const char * const async_reason_string_lookup[] = NULL }; +static_assert (ARRAY_SIZE (async_reason_string_lookup) == EXEC_ASYNC_LAST + 1); + const char * async_reason_lookup (enum async_reply_reason reason) { return async_reason_string_lookup[reason]; } - -/* Provide a prototype to silence -Wmissing-prototypes. */ -extern initialize_file_ftype _initialize_gdb_mi_common; - -void -_initialize_gdb_mi_common (void) -{ - if (ARRAY_SIZE (async_reason_string_lookup) != EXEC_ASYNC_LAST + 1) - internal_error (__FILE__, __LINE__, - _("async_reason_string_lookup is inconsistent")); -}