* mi/mi-common.c (_initialize_gdb_mi_common): Remove.
authorTom Tromey <tromey@redhat.com>
Tue, 22 Nov 2011 21:18:38 +0000 (21:18 +0000)
committerTom Tromey <tromey@redhat.com>
Tue, 22 Nov 2011 21:18:38 +0000 (21:18 +0000)
Use static_assert to check the size of
async_reason_string_lookup.
* common/gdb_assert.h (static_assert): New macro.

gdb/ChangeLog
gdb/common/gdb_assert.h
gdb/mi/mi-common.c

index d94e506..f748f76 100644 (file)
@@ -1,3 +1,10 @@
+2011-11-22  Tom Tromey  <tromey@redhat.com>
+
+       * 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  <amodra@gmail.com>
 
        * rs6000-tdep.c (ppc_deal_with_atomic_sequence): Correct branch
index 634049e..de1a1c9 100644 (file)
 #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.h>:assert() that it is
index ab126f6..e7dd3c4 100644 (file)
@@ -18,6 +18,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #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"));
-}