/* Generated by ./xlat/gen.sh from ./xlat/sigtrap_codes.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(TRAP_BRKPT) || (defined(HAVE_DECL_TRAP_BRKPT) && HAVE_DECL_TRAP_BRKPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TRAP_BRKPT) == (1), "TRAP_BRKPT != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TRAP_BRKPT 1
#endif
#if defined(TRAP_TRACE) || (defined(HAVE_DECL_TRAP_TRACE) && HAVE_DECL_TRAP_TRACE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TRAP_TRACE) == (2), "TRAP_TRACE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TRAP_TRACE 2
#endif
#if defined(TRAP_BRANCH) || (defined(HAVE_DECL_TRAP_BRANCH) && HAVE_DECL_TRAP_BRANCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TRAP_BRANCH) == (3), "TRAP_BRANCH != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TRAP_BRANCH 3
#endif
#if defined(TRAP_HWBKPT) || (defined(HAVE_DECL_TRAP_HWBKPT) && HAVE_DECL_TRAP_HWBKPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TRAP_HWBKPT) == (4), "TRAP_HWBKPT != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TRAP_HWBKPT 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

extern const struct xlat sigtrap_codes[];

# else

#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
#  endif
const struct xlat sigtrap_codes[] = {
#if defined(TRAP_STEP) || (defined(HAVE_DECL_TRAP_STEP) && HAVE_DECL_TRAP_STEP)
  XLAT(TRAP_STEP),
#endif
 XLAT(TRAP_BRKPT),
#if defined(TRAP_TRACEFLOW) || (defined(HAVE_DECL_TRAP_TRACEFLOW) && HAVE_DECL_TRAP_TRACEFLOW)
  XLAT(TRAP_TRACEFLOW),
#endif
 XLAT(TRAP_TRACE),
#if defined(TRAP_WATCHPT) || (defined(HAVE_DECL_TRAP_WATCHPT) && HAVE_DECL_TRAP_WATCHPT)
  XLAT(TRAP_WATCHPT),
#endif
 XLAT(TRAP_BRANCH),
#if defined(TRAP_ILLTRAP) || (defined(HAVE_DECL_TRAP_ILLTRAP) && HAVE_DECL_TRAP_ILLTRAP)
  XLAT(TRAP_ILLTRAP),
#endif
 XLAT(TRAP_HWBKPT),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
