The auxiliary vector (a.k.a. auxv) is a list of relevant kernel information (e.g. program fd, RUID, EUID, …) inserted by the loader at the bottom of the stack.

Auxiliary Vector Entry Struct:

typedef struct
{
  uint32_t a_type;              /* Entry type */
  union
    {
      uint32_t a_val;           /* Integer value */
      /* We use to have pointer elements added here.  We cannot do that,
         though, since it does not work when using 32-bit definitions
         on 64-bit platforms and vice versa.  */
    } a_un;
} Elf32_auxv_t;

where a_type may be one of:

// snippet in arch/ia64/include/uapi/asm/auxvec.h
 
/*
 * Architecture-neutral AT_ values are in the range 0-17.  Leave some room for more of
 * them, start the architecture-specific ones at 32.
 */
#define AT_SYSINFO  32
#define AT_SYSINFO_EHDR 33
 
#define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */
 
// snippet in include/uapi/linux/auxvec.h
 
/* Symbolic values for the entries in the auxiliary table
   put on the initial stack */
#define AT_NULL   0     /* end of vector */
#define AT_IGNORE 1     /* entry should be ignored */
#define AT_EXECFD 2     /* file descriptor of program */
#define AT_PHDR   3     /* program headers for program */
#define AT_PHENT  4     /* size of program header entry */
#define AT_PHNUM  5     /* number of program headers */
#define AT_PAGESZ 6     /* system page size */
#define AT_BASE   7     /* base address of interpreter */
#define AT_FLAGS  8     /* flags */
#define AT_ENTRY  9     /* entry point of program */
#define AT_NOTELF 10    /* program is not ELF */
#define AT_UID    11    /* real uid */
#define AT_EUID   12    /* effective uid */
#define AT_GID    13    /* real gid */
#define AT_EGID   14    /* effective gid */
#define AT_PLATFORM 15  /* string identifying CPU for optimizations */
#define AT_HWCAP  16    /* arch dependent hints at CPU capabilities */
#define AT_CLKTCK 17    /* frequency at which times() increments */
 
/* AT_* values 18 through 22 are reserved */
 
#define AT_SECURE 23    /* secure mode boolean */
#define AT_BASE_PLATFORM 24     /* string identifying real platform, may
                             * differ from AT_PLATFORM. */
#define AT_RANDOM 25    /* address of 16 random bytes */
#define AT_HWCAP2 26    /* extension of AT_HWCAP */
 
#define AT_EXECFN  31   /* filename of program */
 
#ifndef AT_MINSIGSTKSZ
#define AT_MINSIGSTKSZ  51  /* minimal stack size for signal delivery */
#endif