_elf_aux_info(3): add support for AT_USRSTACK{BASE,LIM}
Reviewed by: brooks, imp (previous version) Discussed with: markj Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D36540
This commit is contained in:
parent
ff41239f58
commit
8f2668b060
@ -73,6 +73,7 @@ static char *canary, *pagesizes, *execpath;
|
||||
static void *ps_strings, *timekeep;
|
||||
static u_long hwcap, hwcap2;
|
||||
static void *fxrng_seed_version;
|
||||
static u_long usrstackbase, usrstacklim;
|
||||
|
||||
#ifdef __powerpc__
|
||||
static int powerpc_new_auxv_format = 0;
|
||||
@ -144,6 +145,14 @@ init_aux(void)
|
||||
case AT_FXRNG:
|
||||
fxrng_seed_version = aux->a_un.a_ptr;
|
||||
break;
|
||||
|
||||
case AT_USRSTACKBASE:
|
||||
usrstackbase = aux->a_un.a_val;
|
||||
break;
|
||||
|
||||
case AT_USRSTACKLIM:
|
||||
usrstacklim = aux->a_un.a_val;
|
||||
break;
|
||||
#ifdef __powerpc__
|
||||
/*
|
||||
* Since AT_STACKPROT is always set, and the common
|
||||
@ -370,6 +379,20 @@ _elf_aux_info(int aux, void *buf, int buflen)
|
||||
} else
|
||||
res = EINVAL;
|
||||
break;
|
||||
case AT_USRSTACKBASE:
|
||||
if (buflen == sizeof(u_long)) {
|
||||
*(u_long *)buf = usrstackbase;
|
||||
res = 0;
|
||||
} else
|
||||
res = EINVAL;
|
||||
break;
|
||||
case AT_USRSTACKLIM:
|
||||
if (buflen == sizeof(u_long)) {
|
||||
*(u_long *)buf = usrstacklim;
|
||||
res = 0;
|
||||
} else
|
||||
res = EINVAL;
|
||||
break;
|
||||
default:
|
||||
res = ENOENT;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user