brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · 18e4744 Raw
54 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3==================================4x86-specific ELF Auxiliary Vectors5==================================6 7This document describes the semantics of the x86 auxiliary vectors.8 9Introduction10============11 12ELF Auxiliary vectors enable the kernel to efficiently provide13configuration-specific parameters to userspace. In this example, a program14allocates an alternate stack based on the kernel-provided size::15 16   #include <sys/auxv.h>17   #include <elf.h>18   #include <signal.h>19   #include <stdlib.h>20   #include <assert.h>21   #include <err.h>22 23   #ifndef AT_MINSIGSTKSZ24   #define AT_MINSIGSTKSZ	5125   #endif26 27   ....28   stack_t ss;29 30   ss.ss_sp = malloc(ss.ss_size);31   assert(ss.ss_sp);32 33   ss.ss_size = getauxval(AT_MINSIGSTKSZ) + SIGSTKSZ;34   ss.ss_flags = 0;35 36   if (sigaltstack(&ss, NULL))37        err(1, "sigaltstack");38 39 40The exposed auxiliary vectors41=============================42 43AT_SYSINFO is used for locating the vsyscall entry point.  It is not44exported on 64-bit mode.45 46AT_SYSINFO_EHDR is the start address of the page containing the vDSO.47 48AT_MINSIGSTKSZ denotes the minimum stack size required by the kernel to49deliver a signal to user-space.  AT_MINSIGSTKSZ comprehends the space50consumed by the kernel to accommodate the user context for the current51hardware configuration.  It does not comprehend subsequent user-space stack52consumption, which must be added by the user.  (e.g. Above, user-space adds53SIGSTKSZ to AT_MINSIGSTKSZ.)54