linux/Documentation/x86/elf_auxvec.rst
<<
>>
Prefs
   1.. SPDX-License-Identifier: GPL-2.0
   2
   3==================================
   4x86-specific ELF Auxiliary Vectors
   5==================================
   6
   7This document describes the semantics of the x86 auxiliary vectors.
   8
   9Introduction
  10============
  11
  12ELF Auxiliary vectors enable the kernel to efficiently provide
  13configuration-specific parameters to userspace. In this example, a program
  14allocates 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_MINSIGSTKSZ
  24   #define AT_MINSIGSTKSZ       51
  25   #endif
  26
  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 vectors
  41=============================
  42
  43AT_SYSINFO is used for locating the vsyscall entry point.  It is not
  44exported 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 to
  49deliver a signal to user-space.  AT_MINSIGSTKSZ comprehends the space
  50consumed by the kernel to accommodate the user context for the current
  51hardware configuration.  It does not comprehend subsequent user-space stack
  52consumption, which must be added by the user.  (e.g. Above, user-space adds
  53SIGSTKSZ to AT_MINSIGSTKSZ.)
  54