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

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

#if defined(SECBIT_NOROOT) || (defined(HAVE_DECL_SECBIT_NOROOT) && HAVE_DECL_SECBIT_NOROOT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_NOROOT) == ((1 << 0)), "SECBIT_NOROOT != (1 << 0)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_NOROOT (1 << 0)
#endif
#if defined(SECBIT_NOROOT_LOCKED) || (defined(HAVE_DECL_SECBIT_NOROOT_LOCKED) && HAVE_DECL_SECBIT_NOROOT_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_NOROOT_LOCKED) == ((1 << 1)), "SECBIT_NOROOT_LOCKED != (1 << 1)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_NOROOT_LOCKED (1 << 1)
#endif
#if defined(SECBIT_NO_SETUID_FIXUP) || (defined(HAVE_DECL_SECBIT_NO_SETUID_FIXUP) && HAVE_DECL_SECBIT_NO_SETUID_FIXUP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_NO_SETUID_FIXUP) == ((1 << 2)), "SECBIT_NO_SETUID_FIXUP != (1 << 2)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_NO_SETUID_FIXUP (1 << 2)
#endif
#if defined(SECBIT_NO_SETUID_FIXUP_LOCKED) || (defined(HAVE_DECL_SECBIT_NO_SETUID_FIXUP_LOCKED) && HAVE_DECL_SECBIT_NO_SETUID_FIXUP_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_NO_SETUID_FIXUP_LOCKED) == ((1 << 3)), "SECBIT_NO_SETUID_FIXUP_LOCKED != (1 << 3)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_NO_SETUID_FIXUP_LOCKED (1 << 3)
#endif
#if defined(SECBIT_KEEP_CAPS) || (defined(HAVE_DECL_SECBIT_KEEP_CAPS) && HAVE_DECL_SECBIT_KEEP_CAPS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_KEEP_CAPS) == ((1 << 4)), "SECBIT_KEEP_CAPS != (1 << 4)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_KEEP_CAPS (1 << 4)
#endif
#if defined(SECBIT_KEEP_CAPS_LOCKED) || (defined(HAVE_DECL_SECBIT_KEEP_CAPS_LOCKED) && HAVE_DECL_SECBIT_KEEP_CAPS_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_KEEP_CAPS_LOCKED) == ((1 << 5)), "SECBIT_KEEP_CAPS_LOCKED != (1 << 5)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_KEEP_CAPS_LOCKED (1 << 5)
#endif
#if defined(SECBIT_NO_CAP_AMBIENT_RAISE) || (defined(HAVE_DECL_SECBIT_NO_CAP_AMBIENT_RAISE) && HAVE_DECL_SECBIT_NO_CAP_AMBIENT_RAISE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_NO_CAP_AMBIENT_RAISE) == ((1 << 6)), "SECBIT_NO_CAP_AMBIENT_RAISE != (1 << 6)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_NO_CAP_AMBIENT_RAISE (1 << 6)
#endif
#if defined(SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED) || (defined(HAVE_DECL_SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED) && HAVE_DECL_SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED) == ((1 << 7)), "SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED != (1 << 7)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED (1 << 7)
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat secbits in mpers mode

# else

static
const struct xlat secbits[] = {
 XLAT(SECBIT_NOROOT),
 XLAT(SECBIT_NOROOT_LOCKED),
 XLAT(SECBIT_NO_SETUID_FIXUP),
 XLAT(SECBIT_NO_SETUID_FIXUP_LOCKED),
 XLAT(SECBIT_KEEP_CAPS),
 XLAT(SECBIT_KEEP_CAPS_LOCKED),
 XLAT(SECBIT_NO_CAP_AMBIENT_RAISE),
 XLAT(SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
