aboutsummaryrefslogtreecommitdiff
path: root/lib/libsys/auxv.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsys/auxv.3')
-rw-r--r--lib/libsys/auxv.3111
1 files changed, 111 insertions, 0 deletions
diff --git a/lib/libsys/auxv.3 b/lib/libsys/auxv.3
new file mode 100644
index 000000000000..b3b741937ac7
--- /dev/null
+++ b/lib/libsys/auxv.3
@@ -0,0 +1,111 @@
+.\"
+.\" Copyright (c) 2019 Ian Lepore <ian@freebsd.org>
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd June 24, 2025
+.Dt ELF_AUX_INFO 3
+.Os
+.Sh NAME
+.Nm elf_aux_info
+.Nd extract data from the elf auxiliary vector of the current process
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In sys/auxv.h
+.Ft int
+.Fn elf_aux_info "int aux" "void *buf" "int buflen"
+.Sh DESCRIPTION
+The
+.Fn elf_aux_info
+function retrieves the auxiliary info vector requested in
+.Va aux .
+The information is stored into the provided buffer if it will fit.
+The following values, defined in
+.In sys/elf_common.h
+can be requested (corresponding buffer sizes are specified in parenthesis):
+.Bl -tag -width AT_OSRELDATE
+.It AT_CANARY
+The canary value for SSP (arbitrary sized buffer, as many bytes are
+returned as it fits into it, rest is zeroed).
+.It AT_EXECPATH
+The path of executed program
+.Dv (MAXPATHLEN).
+This may not be present if the process was initialized by
+.Xr fexecve 2
+and the namecache no longer contains the file's name.
+.It AT_HWCAP
+CPU / hardware feature flags
+.Dv (sizeof(u_long)).
+.It AT_HWCAP2
+CPU / hardware feature flags
+.Dv (sizeof(u_long)).
+.It AT_HWCAP3
+CPU / hardware feature flags
+.Dv (sizeof(u_long)).
+.It AT_HWCAP4
+CPU / hardware feature flags
+.Dv (sizeof(u_long)).
+.It AT_NCPUS
+Number of CPUs
+.Dv (sizeof(int)).
+.It AT_OSRELDATE
+The
+.Dv OSRELDATE
+of the kernel or jail the program is running on
+.Dv (sizeof(int)).
+.It AT_PAGESIZES
+Vector of page sizes (arbitrary sized buffer, as many elements of the
+.Dv pagesizes
+array are returned as it fits).
+.It AT_PAGESZ
+Page size in bytes
+.Dv (sizeof(int)).
+.It AT_TIMEKEEP
+Pointer to VDSO timehands (for library internal use,
+.Dv sizeof(void *)).
+.It AT_USRSTACKBASE
+Top of the user stack for main thread.
+.It AT_USRSTACKLIM
+Limit for grow of the user stack for main thread.
+.El
+.Sh RETURN VALUES
+Returns zero on success, or an error number on failure.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EINVAL
+An unknown item was requested.
+.It Bq Er EINVAL
+The provided buffer was not the right size for the requested item.
+.It Bq Er ENOENT
+The requested item is not available.
+.El
+.Sh HISTORY
+The
+.Fn elf_aux_info
+function appeared in
+.Fx 12.0 .
+.Sh 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.