RTLD(1) General Commands Manual RTLD(1) NAME ld-elf.so.1, ld.so, rtld -- run-time link-editor DESCRIPTION The ld-elf.so.1 utility is a self-contained shared object providing run- time support for loading and link-editing shared objects into a process' address space. It is also commonly known as the dynamic linker. It uses the data structures contained within dynamically linked programs to deter- mine which shared libraries are needed and loads them using the mmap(2) system call. After all shared libraries have been successfully loaded, ld-elf.so.1 pro- ceeds to resolve external references from both the main program and all ob- jects loaded. A mechanism is provided for initialization routines to be called on a per-object basis, giving a shared object an opportunity to per- form any extra set-up before execution of the program proper begins. This is useful for C++ libraries that contain static constructors. When resolving dependencies for the loaded objects, ld-elf.so.1 may be al- lowed to translate dynamic token strings in rpath and soname by setting -z origin option of the static linker ld(1). The following strings are recog- nized now: $ORIGIN Translated to the full path of the loaded object. $OSNAME Translated to the name of the operating system implementation. $OSREL Translated to the release level of the operating system. $PLATFORM Translated to the machine hardware platform. The ld-elf.so.1 utility itself is loaded by the kernel together with any dynamically-linked program that is to be executed. The kernel transfers control to the dynamic linker. After the dynamic linker has finished load- ing, relocating, and initializing the program and its required shared ob- jects, it transfers control to the entry point of the program. To locate the required shared objects in the file system, ld-elf.so.1 may use a "hints" file prepared by the ldconfig(8) utility. The ld-elf.so.1 utility recognizes a number of environment variables that can be used to modify its behaviour. On 64-bit architectures, the linker for 32-bit objects recognizes all the environment variables listed below, but is being prefixed with LD_32_, for example: LD_32_TRACE_LOADED_OBJECTS. LD_DUMP_REL_POST If set, ld-elf.so.1 will print a table containing all relocations after symbol binding and relocation. LD_DUMP_REL_PRE If set, ld-elf.so.1 will print a table containing all relocations before symbol binding and relocation. LD_LIBMAP A library replacement list in the same format as libmap.conf(5). For convenience, the characters `=' and `,' can be used instead of a space and a newline. This variable is parsed after libmap.conf(5), and will over- ride its entries. This variable is unset for set-user- ID and set-group-ID programs. LD_LIBMAP_DISABLE If set, disables the use of libmap.conf(5) and LD_LIBMAP. This variable is unset for set-user-ID and set-group-ID programs. LD_ELF_HINTS_PATH This variable will override the default location of "hints" file. This variable is unset for set-user-ID and set-group-ID programs. LD_LIBRARY_PATH A colon separated list of directories, overriding the default search path for shared libraries. This variable is unset for set-user-ID and set-group-ID programs. LD_PRELOAD A list of shared libraries, separated by colons and/or white space, to be linked in before any other shared li- braries. If the directory is not specified then the di- rectories specified by LD_LIBRARY_PATH will be searched first followed by the set of built-in standard directo- ries. This variable is unset for set-user-ID and set- group-ID programs. LD_BIND_NOW When set to a nonempty string, causes ld-elf.so.1 to re- locate all external function calls before starting exe- cution of the program. Normally, function calls are bound lazily, at the first call of each function. LD_BIND_NOW increases the start-up time of a program, but it avoids run-time surprises caused by unexpectedly undefined functions. LD_TRACE_LOADED_OBJECTS When set to a nonempty string, causes ld-elf.so.1 to exit after loading the shared objects and printing a summary which includes the absolute pathnames of all ob- jects, to standard output. LD_TRACE_LOADED_OBJECTS_ALL When set to a nonempty string, causes ld-elf.so.1 to ex- pand the summary to indicate which objects caused each object to be loaded. LD_TRACE_LOADED_OBJECTS_FMT1 LD_TRACE_LOADED_OBJECTS_FMT2 When set, these variables are interpreted as format strings a la printf(3) to customize the trace output and are used by ldd(1)'s -f option and allows ldd(1) to be operated as a filter more conveniently. If the depen- dency name starts with string lib, LD_TRACE_LOADED_OBJECTS_FMT1 is used, otherwise LD_TRACE_LOADED_OBJECTS_FMT2 is used. The following conversions can be used: %a The main program's name (also known as "__progname"). %A The value of the environment variable LD_TRACE_LOADED_OBJECTS_PROGNAME. Typically used to print both the names of programs and shared li- braries being inspected using ldd(1). %o The library name. %p The full pathname as determined by rtld's library search rules. %x The library's load address. Additionally, `\n' and `\t' are recognized and have their usual meaning. LD_UTRACE If set, ld-elf.so.1 will log events such as the loading and unloading of shared objects via utrace(2). FILES /var/run/ld-elf.so.hints Hints file. /var/run/ld-elf32.so.hints Hints file for 32-bit binaries on 64-bit sys- tem. /etc/libmap.conf The libmap configuration file. /etc/libmap32.conf The libmap configuration file for 32-bit bina- ries on 64-bit system. SEE ALSO ld(1), ldd(1), elf(5), libmap.conf(5), ldconfig(8) FreeBSD 8.1 April 1, 2009 RTLD(1)
NAME | DESCRIPTION | FILES | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.FreeBSD.org/cgi/man.cgi?query=rtld&sektion=1&manpath=FreeBSD+8.1-RELEASE>