Ironclad supports passing auxiliary vectors to the started processes. Auxiliary
vectors are tags of data passed on the stack to programs detailing additional
data. These values are passed behind envp.
Each vector consists of a pair of values: an identifier, and a 64-bit integer.
The vectors passed by the kernel by value are:
AT_NULL (0)Signifies the end of the vector chain.
AT_PHDR (3)The address of the program headers of the executable.
AT_PHENT (4)The size of program header entry.
AT_PHNUM (5)The number of program headers.
AT_PAGESZ (6)Minimum MMU page size of the system.
AT_FLAGS (8)ELF flags for the executable, by spec, for now always equal to zero.
AT_ENTRY (9)The entrypoint of the executable.
AT_UID (11)UID of the process executing.
AT_EUID (12)EID of the process executing.
AT_GID (13)GID of the process executing.
AT_EGID (14)EGID of the process executing.
AT_HWCAP (16)Bitmask of CPU features, this field contains the following architecture specific flags:
riscv64-limineReserved for future use.
x86_64-limineReserved for future use.
AT_SECURE (23)The value will be 1 if the executable is to be treated securely, 0 if not.
This flag will be set by Ironclad when the program holds the
MAC_CAP_SCHED capability.
AT_RANDOM (25)Address pointing to 16 bytes of random data.