rtld_get_var
,
rtld_set_var
— query or
change run-time linker parameters after image activation
Standard C Library (libc, -lc)
#include
<sys/errno.h>
#include <link.h>
const char *
rtld_get_var
(const
char *name);
int
rtld_set_var
(const
char *name, const char
*value);
The dynamic linker
rtld(1)
can be configured by setting some environment variables for the process,
before image activation. Sometimes it is desirable to query the current
effective settings or change them afterward.
Since the process environment variables are maintained by
higher-level libraries, the run-time linker cannot access them after the
image activation. The described functions make it possible to operate on
rtld settings.
The
rtld_get_var
()
function returns the current value of the named parameter.
The
rtld_set_var
()
functions changes the value of the parameter to the new
value value, if possible. The
name argument to both functions is the name of the
parameter, which is same as the corresponding environment variable (see
rtld(1))
but without the LD_
(or
LD_32_
or any other ABI-specific) prefix.
The rtld_get_var
() returns the current
value of the named parameter, or NULL
if the name is
invalid.
The rtld_set_var
() returns 0 on success,
or an integer indicating the error condition which prevented the
operation.
Possible errors returned from
rtld_set_var
():
- [
EPERM
]
- The requested change cannot be made at runtime, either because the runtime
linker can only take this parameter at initialization time, or because the
current process is executing with elevated privileges.
- [ENOENT]
- The supplied parameter name is unknown.
The rtld_get_var
function first appeared
in FreeBSD 14.3.