NAME
elf_aux_info – extract data from the elf auxiliary vector of the current process
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <sys/auxv.h>
int
elf_aux_info(int aux, void *buf, int buflen);
DESCRIPTION
The elf_aux_info() function retrieves the auxiliary info vector requested in aux. The information is stored into the provided buffer if it will fit. The following values, defined in ⟨sys/elf_common.h⟩ can be requested (corresponding buffer sizes are specified in parenthesis):
- AT_CANARY
-
The canary value for SSP (arbitrary sized buffer, as many bytes are returned as it fits into it, rest is zeroed).
- AT_EXECPATH
-
The path of executed program (MAXPATHLEN). This may not be present if the process was initialized by fexecve(2) and the namecache no longer contains the file's name.
- AT_HWCAP
-
CPU / hardware feature flags (sizeof(u_long)).
- AT_HWCAP2
-
CPU / hardware feature flags (sizeof(u_long)).
- AT_HWCAP3
-
CPU / hardware feature flags (sizeof(u_long)).
- AT_HWCAP4
-
CPU / hardware feature flags (sizeof(u_long)).
- AT_NCPUS
-
Number of CPUs (sizeof(int)).
- AT_OSRELDATE
-
The OSRELDATE of the kernel or jail the program is running on (sizeof(int)).
- AT_PAGESIZES
-
Vector of page sizes (arbitrary sized buffer, as many elements of the pagesizes array are returned as it fits).
- AT_PAGESZ
-
Page size in bytes (sizeof(int)).
- AT_TIMEKEEP
-
Pointer to VDSO timehands (for library internal use, sizeof(void *)).
- AT_USRSTACKBASE
-
Top of the user stack for main thread.
- AT_USRSTACKLIM
-
Limit for grow of the user stack for main thread.
RETURN VALUES
Returns zero on success, or an error number on failure.
ERRORS
- [EINVAL]
-
An unknown item was requested.
- [EINVAL]
-
The provided buffer was not the right size for the requested item.
- [ENOENT]
-
The requested item is not available.
HISTORY
The elf_aux_info() function appeared in FreeBSD 12.0.
BUGS
Only a small subset of available auxiliary info vector items are accessible with this function. Some items require a "right-sized" buffer while others just require a "big enough" buffer.