/* 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

#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_END
};

#endif /* !IN_MPERS */
