* 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.
This commit is contained in:
Tom Tromey 2011-11-22 21:18:38 +00:00
parent fc87b9e825
commit f5afdc187d
3 changed files with 16 additions and 11 deletions

View 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> 2011-11-22 Alan Modra <amodra@gmail.com>
* rs6000-tdep.c (ppc_deal_with_atomic_sequence): Correct branch * rs6000-tdep.c (ppc_deal_with_atomic_sequence): Correct branch

View File

@ -20,6 +20,12 @@
#ifndef GDB_ASSERT_H #ifndef GDB_ASSERT_H
#define 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 /* PRAGMATICS: "gdb_assert.h":gdb_assert() is a lower case (rather
than upper case) macro since that provides the closest fit to the than upper case) macro since that provides the closest fit to the
existing lower case macro <assert.h>:assert() that it is existing lower case macro <assert.h>:assert() that it is

View File

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h" #include "defs.h"
#include "gdb_assert.h"
#include "mi-common.h" #include "mi-common.h"
static const char * const async_reason_string_lookup[] = static const char * const async_reason_string_lookup[] =
@ -37,19 +38,10 @@ static const char * const async_reason_string_lookup[] =
NULL NULL
}; };
static_assert (ARRAY_SIZE (async_reason_string_lookup) == EXEC_ASYNC_LAST + 1);
const char * const char *
async_reason_lookup (enum async_reply_reason reason) async_reason_lookup (enum async_reply_reason reason)
{ {
return async_reason_string_lookup[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"));
}