auxv(3)

auxv3

Extract data from the elf auxiliary vector of the current process

Part of elf_aux_info(3).

Usage

#include <sys/auxv.h>

int

elf_aux_info(int aux, void *buf, int buflen);

Library

Standard C Library (libc, -lc)

Overview

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.

Releases

19 releases since FreeBSD 12.1-RELEASE; the text changed 7 times.

  1. 12.1
  2. 12.2
  3. 12.3
  4. 12.4
  5. 13.0–13.1
  6. 13.2
  7. 13.3–14.5
  8. 15.0–16.0

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.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.