home | help
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)

home | help