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

static const struct xlat prctl_options[] = {
#if defined(PR_MAXPROCS) || (defined(HAVE_DECL_PR_MAXPROCS) && HAVE_DECL_PR_MAXPROCS)
	XLAT(PR_MAXPROCS),
#endif
#if defined(PR_ISBLOCKED) || (defined(HAVE_DECL_PR_ISBLOCKED) && HAVE_DECL_PR_ISBLOCKED)
	XLAT(PR_ISBLOCKED),
#endif
#if defined(PR_SETSTACKSIZE) || (defined(HAVE_DECL_PR_SETSTACKSIZE) && HAVE_DECL_PR_SETSTACKSIZE)
	XLAT(PR_SETSTACKSIZE),
#endif
#if defined(PR_GETSTACKSIZE) || (defined(HAVE_DECL_PR_GETSTACKSIZE) && HAVE_DECL_PR_GETSTACKSIZE)
	XLAT(PR_GETSTACKSIZE),
#endif
#if defined(PR_MAXPPROCS) || (defined(HAVE_DECL_PR_MAXPPROCS) && HAVE_DECL_PR_MAXPPROCS)
	XLAT(PR_MAXPPROCS),
#endif
#if defined(PR_UNBLKONEXEC) || (defined(HAVE_DECL_PR_UNBLKONEXEC) && HAVE_DECL_PR_UNBLKONEXEC)
	XLAT(PR_UNBLKONEXEC),
#endif
#if defined(PR_ATOMICSIM) || (defined(HAVE_DECL_PR_ATOMICSIM) && HAVE_DECL_PR_ATOMICSIM)
	XLAT(PR_ATOMICSIM),
#endif
#if defined(PR_SETEXITSIG) || (defined(HAVE_DECL_PR_SETEXITSIG) && HAVE_DECL_PR_SETEXITSIG)
	XLAT(PR_SETEXITSIG),
#endif
#if defined(PR_RESIDENT) || (defined(HAVE_DECL_PR_RESIDENT) && HAVE_DECL_PR_RESIDENT)
	XLAT(PR_RESIDENT),
#endif
#if defined(PR_ATTACHADDR) || (defined(HAVE_DECL_PR_ATTACHADDR) && HAVE_DECL_PR_ATTACHADDR)
	XLAT(PR_ATTACHADDR),
#endif
#if defined(PR_DETACHADDR) || (defined(HAVE_DECL_PR_DETACHADDR) && HAVE_DECL_PR_DETACHADDR)
	XLAT(PR_DETACHADDR),
#endif
#if defined(PR_TERMCHILD) || (defined(HAVE_DECL_PR_TERMCHILD) && HAVE_DECL_PR_TERMCHILD)
	XLAT(PR_TERMCHILD),
#endif
#if defined(PR_GETSHMASK) || (defined(HAVE_DECL_PR_GETSHMASK) && HAVE_DECL_PR_GETSHMASK)
	XLAT(PR_GETSHMASK),
#endif
#if defined(PR_GETNSHARE) || (defined(HAVE_DECL_PR_GETNSHARE) && HAVE_DECL_PR_GETNSHARE)
	XLAT(PR_GETNSHARE),
#endif
#if defined(PR_COREPID) || (defined(HAVE_DECL_PR_COREPID) && HAVE_DECL_PR_COREPID)
	XLAT(PR_COREPID),
#endif
#if defined(PR_ATTACHADDRPERM) || (defined(HAVE_DECL_PR_ATTACHADDRPERM) && HAVE_DECL_PR_ATTACHADDRPERM)
	XLAT(PR_ATTACHADDRPERM),
#endif
#if defined(PR_PTHREADEXIT) || (defined(HAVE_DECL_PR_PTHREADEXIT) && HAVE_DECL_PR_PTHREADEXIT)
	XLAT(PR_PTHREADEXIT),
#endif
#if defined(PR_SET_PDEATHSIG) || (defined(HAVE_DECL_PR_SET_PDEATHSIG) && HAVE_DECL_PR_SET_PDEATHSIG)
	XLAT(PR_SET_PDEATHSIG),
#endif
#if defined(PR_GET_PDEATHSIG) || (defined(HAVE_DECL_PR_GET_PDEATHSIG) && HAVE_DECL_PR_GET_PDEATHSIG)
	XLAT(PR_GET_PDEATHSIG),
#endif
#if defined(PR_GET_DUMPABLE) || (defined(HAVE_DECL_PR_GET_DUMPABLE) && HAVE_DECL_PR_GET_DUMPABLE)
	XLAT(PR_GET_DUMPABLE),
#endif
#if defined(PR_SET_DUMPABLE) || (defined(HAVE_DECL_PR_SET_DUMPABLE) && HAVE_DECL_PR_SET_DUMPABLE)
	XLAT(PR_SET_DUMPABLE),
#endif
#if defined(PR_GET_UNALIGN) || (defined(HAVE_DECL_PR_GET_UNALIGN) && HAVE_DECL_PR_GET_UNALIGN)
	XLAT(PR_GET_UNALIGN),
#endif
#if defined(PR_SET_UNALIGN) || (defined(HAVE_DECL_PR_SET_UNALIGN) && HAVE_DECL_PR_SET_UNALIGN)
	XLAT(PR_SET_UNALIGN),
#endif
#if defined(PR_GET_KEEPCAPS) || (defined(HAVE_DECL_PR_GET_KEEPCAPS) && HAVE_DECL_PR_GET_KEEPCAPS)
	XLAT(PR_GET_KEEPCAPS),
#endif
#if defined(PR_SET_KEEPCAPS) || (defined(HAVE_DECL_PR_SET_KEEPCAPS) && HAVE_DECL_PR_SET_KEEPCAPS)
	XLAT(PR_SET_KEEPCAPS),
#endif
#if defined(PR_GET_FPEMU) || (defined(HAVE_DECL_PR_GET_FPEMU) && HAVE_DECL_PR_GET_FPEMU)
	XLAT(PR_GET_FPEMU),
#endif
#if defined(PR_SET_FPEMU) || (defined(HAVE_DECL_PR_SET_FPEMU) && HAVE_DECL_PR_SET_FPEMU)
	XLAT(PR_SET_FPEMU),
#endif
#if defined(PR_GET_FPEXC) || (defined(HAVE_DECL_PR_GET_FPEXC) && HAVE_DECL_PR_GET_FPEXC)
	XLAT(PR_GET_FPEXC),
#endif
#if defined(PR_SET_FPEXC) || (defined(HAVE_DECL_PR_SET_FPEXC) && HAVE_DECL_PR_SET_FPEXC)
	XLAT(PR_SET_FPEXC),
#endif
#if defined(PR_GET_TIMING) || (defined(HAVE_DECL_PR_GET_TIMING) && HAVE_DECL_PR_GET_TIMING)
	XLAT(PR_GET_TIMING),
#endif
#if defined(PR_SET_TIMING) || (defined(HAVE_DECL_PR_SET_TIMING) && HAVE_DECL_PR_SET_TIMING)
	XLAT(PR_SET_TIMING),
#endif
#if defined(PR_SET_NAME) || (defined(HAVE_DECL_PR_SET_NAME) && HAVE_DECL_PR_SET_NAME)
	XLAT(PR_SET_NAME),
#endif
#if defined(PR_GET_NAME) || (defined(HAVE_DECL_PR_GET_NAME) && HAVE_DECL_PR_GET_NAME)
	XLAT(PR_GET_NAME),
#endif
#if defined(PR_GET_ENDIAN) || (defined(HAVE_DECL_PR_GET_ENDIAN) && HAVE_DECL_PR_GET_ENDIAN)
	XLAT(PR_GET_ENDIAN),
#endif
#if defined(PR_SET_ENDIAN) || (defined(HAVE_DECL_PR_SET_ENDIAN) && HAVE_DECL_PR_SET_ENDIAN)
	XLAT(PR_SET_ENDIAN),
#endif
#if defined(PR_GET_SECCOMP) || (defined(HAVE_DECL_PR_GET_SECCOMP) && HAVE_DECL_PR_GET_SECCOMP)
	XLAT(PR_GET_SECCOMP),
#endif
#if defined(PR_SET_SECCOMP) || (defined(HAVE_DECL_PR_SET_SECCOMP) && HAVE_DECL_PR_SET_SECCOMP)
	XLAT(PR_SET_SECCOMP),
#endif
#if defined(PR_CAPBSET_READ) || (defined(HAVE_DECL_PR_CAPBSET_READ) && HAVE_DECL_PR_CAPBSET_READ)
	XLAT(PR_CAPBSET_READ),
#endif
#if defined(PR_CAPBSET_DROP) || (defined(HAVE_DECL_PR_CAPBSET_DROP) && HAVE_DECL_PR_CAPBSET_DROP)
	XLAT(PR_CAPBSET_DROP),
#endif
#if defined(PR_GET_TSC) || (defined(HAVE_DECL_PR_GET_TSC) && HAVE_DECL_PR_GET_TSC)
	XLAT(PR_GET_TSC),
#endif
#if defined(PR_SET_TSC) || (defined(HAVE_DECL_PR_SET_TSC) && HAVE_DECL_PR_SET_TSC)
	XLAT(PR_SET_TSC),
#endif
#if defined(PR_GET_SECUREBITS) || (defined(HAVE_DECL_PR_GET_SECUREBITS) && HAVE_DECL_PR_GET_SECUREBITS)
	XLAT(PR_GET_SECUREBITS),
#endif
#if defined(PR_SET_SECUREBITS) || (defined(HAVE_DECL_PR_SET_SECUREBITS) && HAVE_DECL_PR_SET_SECUREBITS)
	XLAT(PR_SET_SECUREBITS),
#endif
#if defined(PR_SET_TIMERSLACK) || (defined(HAVE_DECL_PR_SET_TIMERSLACK) && HAVE_DECL_PR_SET_TIMERSLACK)
	XLAT(PR_SET_TIMERSLACK),
#endif
#if defined(PR_GET_TIMERSLACK) || (defined(HAVE_DECL_PR_GET_TIMERSLACK) && HAVE_DECL_PR_GET_TIMERSLACK)
	XLAT(PR_GET_TIMERSLACK),
#endif
#if defined(PR_TASK_PERF_EVENTS_DISABLE) || (defined(HAVE_DECL_PR_TASK_PERF_EVENTS_DISABLE) && HAVE_DECL_PR_TASK_PERF_EVENTS_DISABLE)
	XLAT(PR_TASK_PERF_EVENTS_DISABLE),
#endif
#if defined(PR_TASK_PERF_EVENTS_ENABLE) || (defined(HAVE_DECL_PR_TASK_PERF_EVENTS_ENABLE) && HAVE_DECL_PR_TASK_PERF_EVENTS_ENABLE)
	XLAT(PR_TASK_PERF_EVENTS_ENABLE),
#endif
#if defined(PR_MCE_KILL) || (defined(HAVE_DECL_PR_MCE_KILL) && HAVE_DECL_PR_MCE_KILL)
	XLAT(PR_MCE_KILL),
#endif
#if defined(PR_MCE_KILL_GET) || (defined(HAVE_DECL_PR_MCE_KILL_GET) && HAVE_DECL_PR_MCE_KILL_GET)
	XLAT(PR_MCE_KILL_GET),
#endif
#if defined(PR_SET_MM) || (defined(HAVE_DECL_PR_SET_MM) && HAVE_DECL_PR_SET_MM)
	XLAT(PR_SET_MM),
#endif
#if defined(PR_SET_PTRACER) || (defined(HAVE_DECL_PR_SET_PTRACER) && HAVE_DECL_PR_SET_PTRACER)
	XLAT(PR_SET_PTRACER),
#endif
#if defined(PR_SET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_SET_CHILD_SUBREAPER) && HAVE_DECL_PR_SET_CHILD_SUBREAPER)
	XLAT(PR_SET_CHILD_SUBREAPER),
#endif
#if defined(PR_GET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_GET_CHILD_SUBREAPER) && HAVE_DECL_PR_GET_CHILD_SUBREAPER)
	XLAT(PR_GET_CHILD_SUBREAPER),
#endif
#if defined(PR_SET_NO_NEW_PRIVS) || (defined(HAVE_DECL_PR_SET_NO_NEW_PRIVS) && HAVE_DECL_PR_SET_NO_NEW_PRIVS)
	XLAT(PR_SET_NO_NEW_PRIVS),
#endif
#if defined(PR_GET_NO_NEW_PRIVS) || (defined(HAVE_DECL_PR_GET_NO_NEW_PRIVS) && HAVE_DECL_PR_GET_NO_NEW_PRIVS)
	XLAT(PR_GET_NO_NEW_PRIVS),
#endif
#if defined(PR_GET_TID_ADDRESS) || (defined(HAVE_DECL_PR_GET_TID_ADDRESS) && HAVE_DECL_PR_GET_TID_ADDRESS)
	XLAT(PR_GET_TID_ADDRESS),
#endif
	XLAT_END
};
