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

static const struct xlat prctl_options[] = {
#if !(defined(PR_SET_PDEATHSIG) || (defined(HAVE_DECL_PR_SET_PDEATHSIG) && HAVE_DECL_PR_SET_PDEATHSIG))
# define PR_SET_PDEATHSIG 1
#endif
 XLAT(PR_SET_PDEATHSIG),
#if !(defined(PR_GET_PDEATHSIG) || (defined(HAVE_DECL_PR_GET_PDEATHSIG) && HAVE_DECL_PR_GET_PDEATHSIG))
# define PR_GET_PDEATHSIG 2
#endif
 XLAT(PR_GET_PDEATHSIG),
#if !(defined(PR_GET_DUMPABLE) || (defined(HAVE_DECL_PR_GET_DUMPABLE) && HAVE_DECL_PR_GET_DUMPABLE))
# define PR_GET_DUMPABLE 3
#endif
 XLAT(PR_GET_DUMPABLE),
#if !(defined(PR_SET_DUMPABLE) || (defined(HAVE_DECL_PR_SET_DUMPABLE) && HAVE_DECL_PR_SET_DUMPABLE))
# define PR_SET_DUMPABLE 4
#endif
 XLAT(PR_SET_DUMPABLE),
#if !(defined(PR_GET_UNALIGN) || (defined(HAVE_DECL_PR_GET_UNALIGN) && HAVE_DECL_PR_GET_UNALIGN))
# define PR_GET_UNALIGN 5
#endif
 XLAT(PR_GET_UNALIGN),
#if !(defined(PR_SET_UNALIGN) || (defined(HAVE_DECL_PR_SET_UNALIGN) && HAVE_DECL_PR_SET_UNALIGN))
# define PR_SET_UNALIGN 6
#endif
 XLAT(PR_SET_UNALIGN),
#if !(defined(PR_GET_KEEPCAPS) || (defined(HAVE_DECL_PR_GET_KEEPCAPS) && HAVE_DECL_PR_GET_KEEPCAPS))
# define PR_GET_KEEPCAPS 7
#endif
 XLAT(PR_GET_KEEPCAPS),
#if !(defined(PR_SET_KEEPCAPS) || (defined(HAVE_DECL_PR_SET_KEEPCAPS) && HAVE_DECL_PR_SET_KEEPCAPS))
# define PR_SET_KEEPCAPS 8
#endif
 XLAT(PR_SET_KEEPCAPS),
#if !(defined(PR_GET_FPEMU) || (defined(HAVE_DECL_PR_GET_FPEMU) && HAVE_DECL_PR_GET_FPEMU))
# define PR_GET_FPEMU 9
#endif
 XLAT(PR_GET_FPEMU),
#if !(defined(PR_SET_FPEMU) || (defined(HAVE_DECL_PR_SET_FPEMU) && HAVE_DECL_PR_SET_FPEMU))
# define PR_SET_FPEMU 10
#endif
 XLAT(PR_SET_FPEMU),
#if !(defined(PR_GET_FPEXC) || (defined(HAVE_DECL_PR_GET_FPEXC) && HAVE_DECL_PR_GET_FPEXC))
# define PR_GET_FPEXC 11
#endif
 XLAT(PR_GET_FPEXC),
#if !(defined(PR_SET_FPEXC) || (defined(HAVE_DECL_PR_SET_FPEXC) && HAVE_DECL_PR_SET_FPEXC))
# define PR_SET_FPEXC 12
#endif
 XLAT(PR_SET_FPEXC),
#if !(defined(PR_GET_TIMING) || (defined(HAVE_DECL_PR_GET_TIMING) && HAVE_DECL_PR_GET_TIMING))
# define PR_GET_TIMING 13
#endif
 XLAT(PR_GET_TIMING),
#if !(defined(PR_SET_TIMING) || (defined(HAVE_DECL_PR_SET_TIMING) && HAVE_DECL_PR_SET_TIMING))
# define PR_SET_TIMING 14
#endif
 XLAT(PR_SET_TIMING),
#if !(defined(PR_SET_NAME) || (defined(HAVE_DECL_PR_SET_NAME) && HAVE_DECL_PR_SET_NAME))
# define PR_SET_NAME 15
#endif
 XLAT(PR_SET_NAME),
#if !(defined(PR_GET_NAME) || (defined(HAVE_DECL_PR_GET_NAME) && HAVE_DECL_PR_GET_NAME))
# define PR_GET_NAME 16
#endif
 XLAT(PR_GET_NAME),
#if !(defined(PR_GET_ENDIAN) || (defined(HAVE_DECL_PR_GET_ENDIAN) && HAVE_DECL_PR_GET_ENDIAN))
# define PR_GET_ENDIAN 19
#endif
 XLAT(PR_GET_ENDIAN),
#if !(defined(PR_SET_ENDIAN) || (defined(HAVE_DECL_PR_SET_ENDIAN) && HAVE_DECL_PR_SET_ENDIAN))
# define PR_SET_ENDIAN 20
#endif
 XLAT(PR_SET_ENDIAN),
#if !(defined(PR_GET_SECCOMP) || (defined(HAVE_DECL_PR_GET_SECCOMP) && HAVE_DECL_PR_GET_SECCOMP))
# define PR_GET_SECCOMP 21
#endif
 XLAT(PR_GET_SECCOMP),
#if !(defined(PR_SET_SECCOMP) || (defined(HAVE_DECL_PR_SET_SECCOMP) && HAVE_DECL_PR_SET_SECCOMP))
# define PR_SET_SECCOMP 22
#endif
 XLAT(PR_SET_SECCOMP),
#if !(defined(PR_CAPBSET_READ) || (defined(HAVE_DECL_PR_CAPBSET_READ) && HAVE_DECL_PR_CAPBSET_READ))
# define PR_CAPBSET_READ 23
#endif
 XLAT(PR_CAPBSET_READ),
#if !(defined(PR_CAPBSET_DROP) || (defined(HAVE_DECL_PR_CAPBSET_DROP) && HAVE_DECL_PR_CAPBSET_DROP))
# define PR_CAPBSET_DROP 24
#endif
 XLAT(PR_CAPBSET_DROP),
#if !(defined(PR_GET_TSC) || (defined(HAVE_DECL_PR_GET_TSC) && HAVE_DECL_PR_GET_TSC))
# define PR_GET_TSC 25
#endif
 XLAT(PR_GET_TSC),
#if !(defined(PR_SET_TSC) || (defined(HAVE_DECL_PR_SET_TSC) && HAVE_DECL_PR_SET_TSC))
# define PR_SET_TSC 26
#endif
 XLAT(PR_SET_TSC),
#if !(defined(PR_GET_SECUREBITS) || (defined(HAVE_DECL_PR_GET_SECUREBITS) && HAVE_DECL_PR_GET_SECUREBITS))
# define PR_GET_SECUREBITS 27
#endif
 XLAT(PR_GET_SECUREBITS),
#if !(defined(PR_SET_SECUREBITS) || (defined(HAVE_DECL_PR_SET_SECUREBITS) && HAVE_DECL_PR_SET_SECUREBITS))
# define PR_SET_SECUREBITS 28
#endif
 XLAT(PR_SET_SECUREBITS),
#if !(defined(PR_SET_TIMERSLACK) || (defined(HAVE_DECL_PR_SET_TIMERSLACK) && HAVE_DECL_PR_SET_TIMERSLACK))
# define PR_SET_TIMERSLACK 29
#endif
 XLAT(PR_SET_TIMERSLACK),
#if !(defined(PR_GET_TIMERSLACK) || (defined(HAVE_DECL_PR_GET_TIMERSLACK) && HAVE_DECL_PR_GET_TIMERSLACK))
# define PR_GET_TIMERSLACK 30
#endif
 XLAT(PR_GET_TIMERSLACK),
#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
 XLAT(PR_TASK_PERF_EVENTS_DISABLE),
#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
 XLAT(PR_TASK_PERF_EVENTS_ENABLE),
#if !(defined(PR_MCE_KILL) || (defined(HAVE_DECL_PR_MCE_KILL) && HAVE_DECL_PR_MCE_KILL))
# define PR_MCE_KILL 33
#endif
 XLAT(PR_MCE_KILL),
#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
 XLAT(PR_MCE_KILL_GET),
#if !(defined(PR_SET_MM) || (defined(HAVE_DECL_PR_SET_MM) && HAVE_DECL_PR_SET_MM))
# define PR_SET_MM 35
#endif
 XLAT(PR_SET_MM),
#if !(defined(PR_SET_PTRACER) || (defined(HAVE_DECL_PR_SET_PTRACER) && HAVE_DECL_PR_SET_PTRACER))
# define PR_SET_PTRACER 0x59616d61
#endif
 XLAT(PR_SET_PTRACER),
#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
 XLAT(PR_SET_CHILD_SUBREAPER),
#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
 XLAT(PR_GET_CHILD_SUBREAPER),
#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
 XLAT(PR_SET_NO_NEW_PRIVS),
#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
 XLAT(PR_GET_NO_NEW_PRIVS),
#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
 XLAT(PR_GET_TID_ADDRESS),
#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
 XLAT(PR_SET_THP_DISABLE),
#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
 XLAT(PR_GET_THP_DISABLE),
#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
 XLAT(PR_MPX_ENABLE_MANAGEMENT),
#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
 XLAT(PR_MPX_DISABLE_MANAGEMENT),
 XLAT_END
};
