/* Generated by ./xlat/gen.sh from ./xlat/prctl_options.in; do not edit. */
#if !(defined(PR_SET_PDEATHSIG) || (defined(HAVE_DECL_PR_SET_PDEATHSIG) && HAVE_DECL_PR_SET_PDEATHSIG))
# define PR_SET_PDEATHSIG 1
#endif
#if !(defined(PR_GET_PDEATHSIG) || (defined(HAVE_DECL_PR_GET_PDEATHSIG) && HAVE_DECL_PR_GET_PDEATHSIG))
# define PR_GET_PDEATHSIG 2
#endif
#if !(defined(PR_GET_DUMPABLE) || (defined(HAVE_DECL_PR_GET_DUMPABLE) && HAVE_DECL_PR_GET_DUMPABLE))
# define PR_GET_DUMPABLE 3
#endif
#if !(defined(PR_SET_DUMPABLE) || (defined(HAVE_DECL_PR_SET_DUMPABLE) && HAVE_DECL_PR_SET_DUMPABLE))
# define PR_SET_DUMPABLE 4
#endif
#if !(defined(PR_GET_UNALIGN) || (defined(HAVE_DECL_PR_GET_UNALIGN) && HAVE_DECL_PR_GET_UNALIGN))
# define PR_GET_UNALIGN 5
#endif
#if !(defined(PR_SET_UNALIGN) || (defined(HAVE_DECL_PR_SET_UNALIGN) && HAVE_DECL_PR_SET_UNALIGN))
# define PR_SET_UNALIGN 6
#endif
#if !(defined(PR_GET_KEEPCAPS) || (defined(HAVE_DECL_PR_GET_KEEPCAPS) && HAVE_DECL_PR_GET_KEEPCAPS))
# define PR_GET_KEEPCAPS 7
#endif
#if !(defined(PR_SET_KEEPCAPS) || (defined(HAVE_DECL_PR_SET_KEEPCAPS) && HAVE_DECL_PR_SET_KEEPCAPS))
# define PR_SET_KEEPCAPS 8
#endif
#if !(defined(PR_GET_FPEMU) || (defined(HAVE_DECL_PR_GET_FPEMU) && HAVE_DECL_PR_GET_FPEMU))
# define PR_GET_FPEMU 9
#endif
#if !(defined(PR_SET_FPEMU) || (defined(HAVE_DECL_PR_SET_FPEMU) && HAVE_DECL_PR_SET_FPEMU))
# define PR_SET_FPEMU 10
#endif
#if !(defined(PR_GET_FPEXC) || (defined(HAVE_DECL_PR_GET_FPEXC) && HAVE_DECL_PR_GET_FPEXC))
# define PR_GET_FPEXC 11
#endif
#if !(defined(PR_SET_FPEXC) || (defined(HAVE_DECL_PR_SET_FPEXC) && HAVE_DECL_PR_SET_FPEXC))
# define PR_SET_FPEXC 12
#endif
#if !(defined(PR_GET_TIMING) || (defined(HAVE_DECL_PR_GET_TIMING) && HAVE_DECL_PR_GET_TIMING))
# define PR_GET_TIMING 13
#endif
#if !(defined(PR_SET_TIMING) || (defined(HAVE_DECL_PR_SET_TIMING) && HAVE_DECL_PR_SET_TIMING))
# define PR_SET_TIMING 14
#endif
#if !(defined(PR_SET_NAME) || (defined(HAVE_DECL_PR_SET_NAME) && HAVE_DECL_PR_SET_NAME))
# define PR_SET_NAME 15
#endif
#if !(defined(PR_GET_NAME) || (defined(HAVE_DECL_PR_GET_NAME) && HAVE_DECL_PR_GET_NAME))
# define PR_GET_NAME 16
#endif
#if !(defined(PR_GET_ENDIAN) || (defined(HAVE_DECL_PR_GET_ENDIAN) && HAVE_DECL_PR_GET_ENDIAN))
# define PR_GET_ENDIAN 19
#endif
#if !(defined(PR_SET_ENDIAN) || (defined(HAVE_DECL_PR_SET_ENDIAN) && HAVE_DECL_PR_SET_ENDIAN))
# define PR_SET_ENDIAN 20
#endif
#if !(defined(PR_GET_SECCOMP) || (defined(HAVE_DECL_PR_GET_SECCOMP) && HAVE_DECL_PR_GET_SECCOMP))
# define PR_GET_SECCOMP 21
#endif
#if !(defined(PR_SET_SECCOMP) || (defined(HAVE_DECL_PR_SET_SECCOMP) && HAVE_DECL_PR_SET_SECCOMP))
# define PR_SET_SECCOMP 22
#endif
#if !(defined(PR_CAPBSET_READ) || (defined(HAVE_DECL_PR_CAPBSET_READ) && HAVE_DECL_PR_CAPBSET_READ))
# define PR_CAPBSET_READ 23
#endif
#if !(defined(PR_CAPBSET_DROP) || (defined(HAVE_DECL_PR_CAPBSET_DROP) && HAVE_DECL_PR_CAPBSET_DROP))
# define PR_CAPBSET_DROP 24
#endif
#if !(defined(PR_GET_TSC) || (defined(HAVE_DECL_PR_GET_TSC) && HAVE_DECL_PR_GET_TSC))
# define PR_GET_TSC 25
#endif
#if !(defined(PR_SET_TSC) || (defined(HAVE_DECL_PR_SET_TSC) && HAVE_DECL_PR_SET_TSC))
# define PR_SET_TSC 26
#endif
#if !(defined(PR_GET_SECUREBITS) || (defined(HAVE_DECL_PR_GET_SECUREBITS) && HAVE_DECL_PR_GET_SECUREBITS))
# define PR_GET_SECUREBITS 27
#endif
#if !(defined(PR_SET_SECUREBITS) || (defined(HAVE_DECL_PR_SET_SECUREBITS) && HAVE_DECL_PR_SET_SECUREBITS))
# define PR_SET_SECUREBITS 28
#endif
#if !(defined(PR_SET_TIMERSLACK) || (defined(HAVE_DECL_PR_SET_TIMERSLACK) && HAVE_DECL_PR_SET_TIMERSLACK))
# define PR_SET_TIMERSLACK 29
#endif
#if !(defined(PR_GET_TIMERSLACK) || (defined(HAVE_DECL_PR_GET_TIMERSLACK) && HAVE_DECL_PR_GET_TIMERSLACK))
# define PR_GET_TIMERSLACK 30
#endif
#if !(defined(PR_TASK_PERF_EVENTS_DISABLE) || (defined(HAVE_DECL_PR_TASK_PERF_EVENTS_DISABLE) && HAVE_DECL_PR_TASK_PERF_EVENTS_DISABLE))
# define PR_TASK_PERF_EVENTS_DISABLE 31
#endif
#if !(defined(PR_TASK_PERF_EVENTS_ENABLE) || (defined(HAVE_DECL_PR_TASK_PERF_EVENTS_ENABLE) && HAVE_DECL_PR_TASK_PERF_EVENTS_ENABLE))
# define PR_TASK_PERF_EVENTS_ENABLE 32
#endif
#if !(defined(PR_MCE_KILL) || (defined(HAVE_DECL_PR_MCE_KILL) && HAVE_DECL_PR_MCE_KILL))
# define PR_MCE_KILL 33
#endif
#if !(defined(PR_MCE_KILL_GET) || (defined(HAVE_DECL_PR_MCE_KILL_GET) && HAVE_DECL_PR_MCE_KILL_GET))
# define PR_MCE_KILL_GET 34
#endif
#if !(defined(PR_SET_MM) || (defined(HAVE_DECL_PR_SET_MM) && HAVE_DECL_PR_SET_MM))
# define PR_SET_MM 35
#endif
#if !(defined(PR_SET_PTRACER) || (defined(HAVE_DECL_PR_SET_PTRACER) && HAVE_DECL_PR_SET_PTRACER))
# define PR_SET_PTRACER 0x59616d61
#endif
#if !(defined(PR_SET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_SET_CHILD_SUBREAPER) && HAVE_DECL_PR_SET_CHILD_SUBREAPER))
# define PR_SET_CHILD_SUBREAPER 36
#endif
#if !(defined(PR_GET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_GET_CHILD_SUBREAPER) && HAVE_DECL_PR_GET_CHILD_SUBREAPER))
# define PR_GET_CHILD_SUBREAPER 37
#endif
#if !(defined(PR_SET_NO_NEW_PRIVS) || (defined(HAVE_DECL_PR_SET_NO_NEW_PRIVS) && HAVE_DECL_PR_SET_NO_NEW_PRIVS))
# define PR_SET_NO_NEW_PRIVS 38
#endif
#if !(defined(PR_GET_NO_NEW_PRIVS) || (defined(HAVE_DECL_PR_GET_NO_NEW_PRIVS) && HAVE_DECL_PR_GET_NO_NEW_PRIVS))
# define PR_GET_NO_NEW_PRIVS 39
#endif
#if !(defined(PR_GET_TID_ADDRESS) || (defined(HAVE_DECL_PR_GET_TID_ADDRESS) && HAVE_DECL_PR_GET_TID_ADDRESS))
# define PR_GET_TID_ADDRESS 40
#endif
#if !(defined(PR_SET_THP_DISABLE) || (defined(HAVE_DECL_PR_SET_THP_DISABLE) && HAVE_DECL_PR_SET_THP_DISABLE))
# define PR_SET_THP_DISABLE 41
#endif
#if !(defined(PR_GET_THP_DISABLE) || (defined(HAVE_DECL_PR_GET_THP_DISABLE) && HAVE_DECL_PR_GET_THP_DISABLE))
# define PR_GET_THP_DISABLE 42
#endif
#if !(defined(PR_MPX_ENABLE_MANAGEMENT) || (defined(HAVE_DECL_PR_MPX_ENABLE_MANAGEMENT) && HAVE_DECL_PR_MPX_ENABLE_MANAGEMENT))
# define PR_MPX_ENABLE_MANAGEMENT 43
#endif
#if !(defined(PR_MPX_DISABLE_MANAGEMENT) || (defined(HAVE_DECL_PR_MPX_DISABLE_MANAGEMENT) && HAVE_DECL_PR_MPX_DISABLE_MANAGEMENT))
# define PR_MPX_DISABLE_MANAGEMENT 44
#endif
#if !(defined(PR_SET_FP_MODE) || (defined(HAVE_DECL_PR_SET_FP_MODE) && HAVE_DECL_PR_SET_FP_MODE))
# define PR_SET_FP_MODE 45
#endif
#if !(defined(PR_GET_FP_MODE) || (defined(HAVE_DECL_PR_GET_FP_MODE) && HAVE_DECL_PR_GET_FP_MODE))
# define PR_GET_FP_MODE 46
#endif
#if !(defined(PR_CAP_AMBIENT) || (defined(HAVE_DECL_PR_CAP_AMBIENT) && HAVE_DECL_PR_CAP_AMBIENT))
# define PR_CAP_AMBIENT 47
#endif
#if !(defined(PR_SET_VMA) || (defined(HAVE_DECL_PR_SET_VMA) && HAVE_DECL_PR_SET_VMA))
# define PR_SET_VMA 0x53564d41
#endif

#ifdef IN_MPERS

# error static const struct xlat prctl_options in mpers mode

#else

static
const struct xlat prctl_options[] = {
 XLAT(PR_SET_PDEATHSIG),
 XLAT(PR_GET_PDEATHSIG),
 XLAT(PR_GET_DUMPABLE),
 XLAT(PR_SET_DUMPABLE),
 XLAT(PR_GET_UNALIGN),
 XLAT(PR_SET_UNALIGN),
 XLAT(PR_GET_KEEPCAPS),
 XLAT(PR_SET_KEEPCAPS),
 XLAT(PR_GET_FPEMU),
 XLAT(PR_SET_FPEMU),
 XLAT(PR_GET_FPEXC),
 XLAT(PR_SET_FPEXC),
 XLAT(PR_GET_TIMING),
 XLAT(PR_SET_TIMING),
 XLAT(PR_SET_NAME),
 XLAT(PR_GET_NAME),
 XLAT(PR_GET_ENDIAN),
 XLAT(PR_SET_ENDIAN),
 XLAT(PR_GET_SECCOMP),
 XLAT(PR_SET_SECCOMP),
 XLAT(PR_CAPBSET_READ),
 XLAT(PR_CAPBSET_DROP),
 XLAT(PR_GET_TSC),
 XLAT(PR_SET_TSC),
 XLAT(PR_GET_SECUREBITS),
 XLAT(PR_SET_SECUREBITS),
 XLAT(PR_SET_TIMERSLACK),
 XLAT(PR_GET_TIMERSLACK),
 XLAT(PR_TASK_PERF_EVENTS_DISABLE),
 XLAT(PR_TASK_PERF_EVENTS_ENABLE),
 XLAT(PR_MCE_KILL),
 XLAT(PR_MCE_KILL_GET),
 XLAT(PR_SET_MM),
 XLAT(PR_SET_PTRACER),
 XLAT(PR_SET_CHILD_SUBREAPER),
 XLAT(PR_GET_CHILD_SUBREAPER),
 XLAT(PR_SET_NO_NEW_PRIVS),
 XLAT(PR_GET_NO_NEW_PRIVS),
 XLAT(PR_GET_TID_ADDRESS),
 XLAT(PR_SET_THP_DISABLE),
 XLAT(PR_GET_THP_DISABLE),
 XLAT(PR_MPX_ENABLE_MANAGEMENT),
 XLAT(PR_MPX_DISABLE_MANAGEMENT),
 XLAT(PR_SET_FP_MODE),
 XLAT(PR_GET_FP_MODE),
 XLAT(PR_CAP_AMBIENT),
 XLAT(PR_SET_VMA),
 XLAT_END
};

#endif /* !IN_MPERS */
