mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-16 07:11:05 +01:00
Import Paul Kranenburg's man page for ld.so (aka. rtld).
Obtained from: NetBSD
This commit is contained in:
parent
b0e6df47f9
commit
19d57e6d9d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=10335
@ -1,8 +1,8 @@
|
||||
# $Id: Makefile,v 1.13 1994/09/18 19:41:38 swallace Exp $
|
||||
# $Id: Makefile,v 1.14 1995/03/04 17:46:23 nate Exp $
|
||||
|
||||
PROG= ld.so
|
||||
SRCS= mdprologue.S rtld.c malloc.c shlib.c etc.c md.c
|
||||
NOMAN= noman
|
||||
MAN1= rtld.1
|
||||
LDDIR?= $(.CURDIR)/..
|
||||
PICFLAG=-fpic
|
||||
CFLAGS+=-I$(LDDIR) -I$(.CURDIR) -I$(LDDIR)/$(MACHINE) $(PICFLAG) -DRTLD
|
||||
@ -12,6 +12,7 @@ DPADD+= ${LIBC:S/c.a/c_pic.a/} ${LIBC:S/c.a/gcc_pic.a/}
|
||||
LDADD+= -lc_pic -lgcc_pic
|
||||
BINDIR= /usr/libexec
|
||||
INSTALLFLAGS+= -fschg
|
||||
MLINKS= rtld.1 ld.so.1
|
||||
|
||||
.PATH: $(LDDIR) $(LDDIR)/$(MACHINE)
|
||||
|
||||
|
144
gnu/usr.bin/ld/rtld/rtld.1
Normal file
144
gnu/usr.bin/ld/rtld/rtld.1
Normal file
@ -0,0 +1,144 @@
|
||||
.\" $NetBSD: rtld.1,v 1.1 1995/06/30 12:23:10 pk Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1995 Paul Kranenburg
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" 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.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by Paul Kranenburg.
|
||||
.\" 3. The name of the author may not be used to endorse or promote products
|
||||
.\" derived from this software without specific prior written permission
|
||||
.\"
|
||||
.\" 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 27, 1995
|
||||
.Dt RTLD 1
|
||||
.Os NetBSD
|
||||
.Sh NAME
|
||||
.Nm ld.so
|
||||
.Nd run-time link-editor
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is a self-contained, position independent program image providing run-time
|
||||
support for loading and link-editing shared objects into a process'
|
||||
address space. It uses the data structures
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
.Pc
|
||||
contained within dynamically linked programs to determine which shared
|
||||
libraries are needed and loads them at a convenient virtual address
|
||||
using the
|
||||
.Xr mmap 2
|
||||
system call.
|
||||
.Pp
|
||||
After all shared libraries have been succesfully loaded,
|
||||
.Nm
|
||||
proceeds to resolve external references from both the main program and
|
||||
all objects loaded. A mechanism is provided for initialisation routines
|
||||
to be called, on a per-object basis, giving a shared object an opportunity
|
||||
to perfrom any extra set-up, before execution of the program proper begins.
|
||||
This is useful for C++ libraries that contain static constrictors.
|
||||
.Pp
|
||||
.Nm
|
||||
is itself a shared object that is initially loaded by the startup module
|
||||
.Em crt0 .
|
||||
Since
|
||||
.Xr a.out 5
|
||||
formats do not provide easy access to the file header from within a running
|
||||
process,
|
||||
.Em crt0
|
||||
uses the special symbol
|
||||
.Va _DYNAMIC
|
||||
to determine whether a program is in fact dynamically linked or not. Whenever
|
||||
the linker
|
||||
.Xr ld 1
|
||||
has relocated this symbol to a location other then 0,
|
||||
.Em crt0
|
||||
assumes the services of
|
||||
.Nm
|
||||
are needed
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
for details
|
||||
.Pc \&.
|
||||
.Em crt0
|
||||
passes control to
|
||||
.Nm
|
||||
\&'s entry point before the program's
|
||||
.Fn main
|
||||
routine is called. Thus,
|
||||
.Nm
|
||||
can complete the link-editing process before the dynamic program calls upon
|
||||
services of any dynamic library.
|
||||
.Pp
|
||||
To quickly locate the required shared objects in the filesystem,
|
||||
.Nm
|
||||
may use a
|
||||
.Dq hints
|
||||
file, prepared by the
|
||||
.Xr ldconfig 8
|
||||
utility, in which the full path specification of the shared objects can be
|
||||
looked up by hashing on the 3-tuple
|
||||
.Ao
|
||||
library-name, major-version-number, minor-version-number
|
||||
.Ac \&.
|
||||
.Pp
|
||||
.Nm
|
||||
recognises a number of environment variables that can be used to modify
|
||||
its behaviour as follows:
|
||||
.Pp
|
||||
.Bl -tag -width "LD_TRACE_LOADED_OBJECTS"
|
||||
.It Ev LD_LIBRARY_PATH
|
||||
A colon separated list of directories, overriding the default search path
|
||||
for shared libraries.
|
||||
.It Ev LD_WARN_NON_PURE_CODE
|
||||
When set, issue a warning whenever a link-editing operation requires
|
||||
modification of the text segment of some loaded object. This is usually
|
||||
indicative of an incorrectly built library.
|
||||
.It Ev LD_SUPPRESS_WARNINGS
|
||||
When set, no warning messages of any kind are issued. Normally, a warning
|
||||
is given if satisfactorily versioned library could not be found.
|
||||
.It Ev LD_TRACE_LOADED_OBJECTS
|
||||
When set, causes
|
||||
.Nm
|
||||
to exit after loading the shared objects and printing a summary which includes
|
||||
the absolute pathnames of all objects, to standard output.
|
||||
.It Ev LD_NO_INTERN_SEARCH
|
||||
When set,
|
||||
.Nm
|
||||
does not process any internal search paths that were recorded in the
|
||||
executable.
|
||||
.It Ev LD_NOSTD_PATH
|
||||
When set, do not include a set of built-in standard directory paths for
|
||||
searching. This might be useful when running on a system with a completely
|
||||
non-standard filesystem layout.
|
||||
.El
|
||||
.Pp
|
||||
.Sh FILES
|
||||
/var/run/ld.so.hints
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr ld 1
|
||||
.Xr ldconfig 8
|
||||
.Xr link 5
|
||||
.Sh HISTORY
|
||||
The shared library model employed first appeared in SunOS 4.0
|
@ -1,8 +1,8 @@
|
||||
# $Id: Makefile,v 1.13 1994/09/18 19:41:38 swallace Exp $
|
||||
# $Id: Makefile,v 1.14 1995/03/04 17:46:23 nate Exp $
|
||||
|
||||
PROG= ld.so
|
||||
SRCS= mdprologue.S rtld.c malloc.c shlib.c etc.c md.c
|
||||
NOMAN= noman
|
||||
MAN1= rtld.1
|
||||
LDDIR?= $(.CURDIR)/..
|
||||
PICFLAG=-fpic
|
||||
CFLAGS+=-I$(LDDIR) -I$(.CURDIR) -I$(LDDIR)/$(MACHINE) $(PICFLAG) -DRTLD
|
||||
@ -12,6 +12,7 @@ DPADD+= ${LIBC:S/c.a/c_pic.a/} ${LIBC:S/c.a/gcc_pic.a/}
|
||||
LDADD+= -lc_pic -lgcc_pic
|
||||
BINDIR= /usr/libexec
|
||||
INSTALLFLAGS+= -fschg
|
||||
MLINKS= rtld.1 ld.so.1
|
||||
|
||||
.PATH: $(LDDIR) $(LDDIR)/$(MACHINE)
|
||||
|
||||
|
144
libexec/rtld-aout/rtld.1
Normal file
144
libexec/rtld-aout/rtld.1
Normal file
@ -0,0 +1,144 @@
|
||||
.\" $NetBSD: rtld.1,v 1.1 1995/06/30 12:23:10 pk Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1995 Paul Kranenburg
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" 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.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by Paul Kranenburg.
|
||||
.\" 3. The name of the author may not be used to endorse or promote products
|
||||
.\" derived from this software without specific prior written permission
|
||||
.\"
|
||||
.\" 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 27, 1995
|
||||
.Dt RTLD 1
|
||||
.Os NetBSD
|
||||
.Sh NAME
|
||||
.Nm ld.so
|
||||
.Nd run-time link-editor
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is a self-contained, position independent program image providing run-time
|
||||
support for loading and link-editing shared objects into a process'
|
||||
address space. It uses the data structures
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
.Pc
|
||||
contained within dynamically linked programs to determine which shared
|
||||
libraries are needed and loads them at a convenient virtual address
|
||||
using the
|
||||
.Xr mmap 2
|
||||
system call.
|
||||
.Pp
|
||||
After all shared libraries have been succesfully loaded,
|
||||
.Nm
|
||||
proceeds to resolve external references from both the main program and
|
||||
all objects loaded. A mechanism is provided for initialisation routines
|
||||
to be called, on a per-object basis, giving a shared object an opportunity
|
||||
to perfrom any extra set-up, before execution of the program proper begins.
|
||||
This is useful for C++ libraries that contain static constrictors.
|
||||
.Pp
|
||||
.Nm
|
||||
is itself a shared object that is initially loaded by the startup module
|
||||
.Em crt0 .
|
||||
Since
|
||||
.Xr a.out 5
|
||||
formats do not provide easy access to the file header from within a running
|
||||
process,
|
||||
.Em crt0
|
||||
uses the special symbol
|
||||
.Va _DYNAMIC
|
||||
to determine whether a program is in fact dynamically linked or not. Whenever
|
||||
the linker
|
||||
.Xr ld 1
|
||||
has relocated this symbol to a location other then 0,
|
||||
.Em crt0
|
||||
assumes the services of
|
||||
.Nm
|
||||
are needed
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
for details
|
||||
.Pc \&.
|
||||
.Em crt0
|
||||
passes control to
|
||||
.Nm
|
||||
\&'s entry point before the program's
|
||||
.Fn main
|
||||
routine is called. Thus,
|
||||
.Nm
|
||||
can complete the link-editing process before the dynamic program calls upon
|
||||
services of any dynamic library.
|
||||
.Pp
|
||||
To quickly locate the required shared objects in the filesystem,
|
||||
.Nm
|
||||
may use a
|
||||
.Dq hints
|
||||
file, prepared by the
|
||||
.Xr ldconfig 8
|
||||
utility, in which the full path specification of the shared objects can be
|
||||
looked up by hashing on the 3-tuple
|
||||
.Ao
|
||||
library-name, major-version-number, minor-version-number
|
||||
.Ac \&.
|
||||
.Pp
|
||||
.Nm
|
||||
recognises a number of environment variables that can be used to modify
|
||||
its behaviour as follows:
|
||||
.Pp
|
||||
.Bl -tag -width "LD_TRACE_LOADED_OBJECTS"
|
||||
.It Ev LD_LIBRARY_PATH
|
||||
A colon separated list of directories, overriding the default search path
|
||||
for shared libraries.
|
||||
.It Ev LD_WARN_NON_PURE_CODE
|
||||
When set, issue a warning whenever a link-editing operation requires
|
||||
modification of the text segment of some loaded object. This is usually
|
||||
indicative of an incorrectly built library.
|
||||
.It Ev LD_SUPPRESS_WARNINGS
|
||||
When set, no warning messages of any kind are issued. Normally, a warning
|
||||
is given if satisfactorily versioned library could not be found.
|
||||
.It Ev LD_TRACE_LOADED_OBJECTS
|
||||
When set, causes
|
||||
.Nm
|
||||
to exit after loading the shared objects and printing a summary which includes
|
||||
the absolute pathnames of all objects, to standard output.
|
||||
.It Ev LD_NO_INTERN_SEARCH
|
||||
When set,
|
||||
.Nm
|
||||
does not process any internal search paths that were recorded in the
|
||||
executable.
|
||||
.It Ev LD_NOSTD_PATH
|
||||
When set, do not include a set of built-in standard directory paths for
|
||||
searching. This might be useful when running on a system with a completely
|
||||
non-standard filesystem layout.
|
||||
.El
|
||||
.Pp
|
||||
.Sh FILES
|
||||
/var/run/ld.so.hints
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr ld 1
|
||||
.Xr ldconfig 8
|
||||
.Xr link 5
|
||||
.Sh HISTORY
|
||||
The shared library model employed first appeared in SunOS 4.0
|
144
libexec/rtld-aout/rtld.1aout
Normal file
144
libexec/rtld-aout/rtld.1aout
Normal file
@ -0,0 +1,144 @@
|
||||
.\" $NetBSD: rtld.1,v 1.1 1995/06/30 12:23:10 pk Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1995 Paul Kranenburg
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" 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.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by Paul Kranenburg.
|
||||
.\" 3. The name of the author may not be used to endorse or promote products
|
||||
.\" derived from this software without specific prior written permission
|
||||
.\"
|
||||
.\" 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 27, 1995
|
||||
.Dt RTLD 1
|
||||
.Os NetBSD
|
||||
.Sh NAME
|
||||
.Nm ld.so
|
||||
.Nd run-time link-editor
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is a self-contained, position independent program image providing run-time
|
||||
support for loading and link-editing shared objects into a process'
|
||||
address space. It uses the data structures
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
.Pc
|
||||
contained within dynamically linked programs to determine which shared
|
||||
libraries are needed and loads them at a convenient virtual address
|
||||
using the
|
||||
.Xr mmap 2
|
||||
system call.
|
||||
.Pp
|
||||
After all shared libraries have been succesfully loaded,
|
||||
.Nm
|
||||
proceeds to resolve external references from both the main program and
|
||||
all objects loaded. A mechanism is provided for initialisation routines
|
||||
to be called, on a per-object basis, giving a shared object an opportunity
|
||||
to perfrom any extra set-up, before execution of the program proper begins.
|
||||
This is useful for C++ libraries that contain static constrictors.
|
||||
.Pp
|
||||
.Nm
|
||||
is itself a shared object that is initially loaded by the startup module
|
||||
.Em crt0 .
|
||||
Since
|
||||
.Xr a.out 5
|
||||
formats do not provide easy access to the file header from within a running
|
||||
process,
|
||||
.Em crt0
|
||||
uses the special symbol
|
||||
.Va _DYNAMIC
|
||||
to determine whether a program is in fact dynamically linked or not. Whenever
|
||||
the linker
|
||||
.Xr ld 1
|
||||
has relocated this symbol to a location other then 0,
|
||||
.Em crt0
|
||||
assumes the services of
|
||||
.Nm
|
||||
are needed
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
for details
|
||||
.Pc \&.
|
||||
.Em crt0
|
||||
passes control to
|
||||
.Nm
|
||||
\&'s entry point before the program's
|
||||
.Fn main
|
||||
routine is called. Thus,
|
||||
.Nm
|
||||
can complete the link-editing process before the dynamic program calls upon
|
||||
services of any dynamic library.
|
||||
.Pp
|
||||
To quickly locate the required shared objects in the filesystem,
|
||||
.Nm
|
||||
may use a
|
||||
.Dq hints
|
||||
file, prepared by the
|
||||
.Xr ldconfig 8
|
||||
utility, in which the full path specification of the shared objects can be
|
||||
looked up by hashing on the 3-tuple
|
||||
.Ao
|
||||
library-name, major-version-number, minor-version-number
|
||||
.Ac \&.
|
||||
.Pp
|
||||
.Nm
|
||||
recognises a number of environment variables that can be used to modify
|
||||
its behaviour as follows:
|
||||
.Pp
|
||||
.Bl -tag -width "LD_TRACE_LOADED_OBJECTS"
|
||||
.It Ev LD_LIBRARY_PATH
|
||||
A colon separated list of directories, overriding the default search path
|
||||
for shared libraries.
|
||||
.It Ev LD_WARN_NON_PURE_CODE
|
||||
When set, issue a warning whenever a link-editing operation requires
|
||||
modification of the text segment of some loaded object. This is usually
|
||||
indicative of an incorrectly built library.
|
||||
.It Ev LD_SUPPRESS_WARNINGS
|
||||
When set, no warning messages of any kind are issued. Normally, a warning
|
||||
is given if satisfactorily versioned library could not be found.
|
||||
.It Ev LD_TRACE_LOADED_OBJECTS
|
||||
When set, causes
|
||||
.Nm
|
||||
to exit after loading the shared objects and printing a summary which includes
|
||||
the absolute pathnames of all objects, to standard output.
|
||||
.It Ev LD_NO_INTERN_SEARCH
|
||||
When set,
|
||||
.Nm
|
||||
does not process any internal search paths that were recorded in the
|
||||
executable.
|
||||
.It Ev LD_NOSTD_PATH
|
||||
When set, do not include a set of built-in standard directory paths for
|
||||
searching. This might be useful when running on a system with a completely
|
||||
non-standard filesystem layout.
|
||||
.El
|
||||
.Pp
|
||||
.Sh FILES
|
||||
/var/run/ld.so.hints
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr ld 1
|
||||
.Xr ldconfig 8
|
||||
.Xr link 5
|
||||
.Sh HISTORY
|
||||
The shared library model employed first appeared in SunOS 4.0
|
144
libexec/rtld-elf/rtld.1
Normal file
144
libexec/rtld-elf/rtld.1
Normal file
@ -0,0 +1,144 @@
|
||||
.\" $NetBSD: rtld.1,v 1.1 1995/06/30 12:23:10 pk Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1995 Paul Kranenburg
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" 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.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by Paul Kranenburg.
|
||||
.\" 3. The name of the author may not be used to endorse or promote products
|
||||
.\" derived from this software without specific prior written permission
|
||||
.\"
|
||||
.\" 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 27, 1995
|
||||
.Dt RTLD 1
|
||||
.Os NetBSD
|
||||
.Sh NAME
|
||||
.Nm ld.so
|
||||
.Nd run-time link-editor
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is a self-contained, position independent program image providing run-time
|
||||
support for loading and link-editing shared objects into a process'
|
||||
address space. It uses the data structures
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
.Pc
|
||||
contained within dynamically linked programs to determine which shared
|
||||
libraries are needed and loads them at a convenient virtual address
|
||||
using the
|
||||
.Xr mmap 2
|
||||
system call.
|
||||
.Pp
|
||||
After all shared libraries have been succesfully loaded,
|
||||
.Nm
|
||||
proceeds to resolve external references from both the main program and
|
||||
all objects loaded. A mechanism is provided for initialisation routines
|
||||
to be called, on a per-object basis, giving a shared object an opportunity
|
||||
to perfrom any extra set-up, before execution of the program proper begins.
|
||||
This is useful for C++ libraries that contain static constrictors.
|
||||
.Pp
|
||||
.Nm
|
||||
is itself a shared object that is initially loaded by the startup module
|
||||
.Em crt0 .
|
||||
Since
|
||||
.Xr a.out 5
|
||||
formats do not provide easy access to the file header from within a running
|
||||
process,
|
||||
.Em crt0
|
||||
uses the special symbol
|
||||
.Va _DYNAMIC
|
||||
to determine whether a program is in fact dynamically linked or not. Whenever
|
||||
the linker
|
||||
.Xr ld 1
|
||||
has relocated this symbol to a location other then 0,
|
||||
.Em crt0
|
||||
assumes the services of
|
||||
.Nm
|
||||
are needed
|
||||
.Po
|
||||
see
|
||||
.Xr link 5
|
||||
for details
|
||||
.Pc \&.
|
||||
.Em crt0
|
||||
passes control to
|
||||
.Nm
|
||||
\&'s entry point before the program's
|
||||
.Fn main
|
||||
routine is called. Thus,
|
||||
.Nm
|
||||
can complete the link-editing process before the dynamic program calls upon
|
||||
services of any dynamic library.
|
||||
.Pp
|
||||
To quickly locate the required shared objects in the filesystem,
|
||||
.Nm
|
||||
may use a
|
||||
.Dq hints
|
||||
file, prepared by the
|
||||
.Xr ldconfig 8
|
||||
utility, in which the full path specification of the shared objects can be
|
||||
looked up by hashing on the 3-tuple
|
||||
.Ao
|
||||
library-name, major-version-number, minor-version-number
|
||||
.Ac \&.
|
||||
.Pp
|
||||
.Nm
|
||||
recognises a number of environment variables that can be used to modify
|
||||
its behaviour as follows:
|
||||
.Pp
|
||||
.Bl -tag -width "LD_TRACE_LOADED_OBJECTS"
|
||||
.It Ev LD_LIBRARY_PATH
|
||||
A colon separated list of directories, overriding the default search path
|
||||
for shared libraries.
|
||||
.It Ev LD_WARN_NON_PURE_CODE
|
||||
When set, issue a warning whenever a link-editing operation requires
|
||||
modification of the text segment of some loaded object. This is usually
|
||||
indicative of an incorrectly built library.
|
||||
.It Ev LD_SUPPRESS_WARNINGS
|
||||
When set, no warning messages of any kind are issued. Normally, a warning
|
||||
is given if satisfactorily versioned library could not be found.
|
||||
.It Ev LD_TRACE_LOADED_OBJECTS
|
||||
When set, causes
|
||||
.Nm
|
||||
to exit after loading the shared objects and printing a summary which includes
|
||||
the absolute pathnames of all objects, to standard output.
|
||||
.It Ev LD_NO_INTERN_SEARCH
|
||||
When set,
|
||||
.Nm
|
||||
does not process any internal search paths that were recorded in the
|
||||
executable.
|
||||
.It Ev LD_NOSTD_PATH
|
||||
When set, do not include a set of built-in standard directory paths for
|
||||
searching. This might be useful when running on a system with a completely
|
||||
non-standard filesystem layout.
|
||||
.El
|
||||
.Pp
|
||||
.Sh FILES
|
||||
/var/run/ld.so.hints
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr ld 1
|
||||
.Xr ldconfig 8
|
||||
.Xr link 5
|
||||
.Sh HISTORY
|
||||
The shared library model employed first appeared in SunOS 4.0
|
Loading…
Reference in New Issue
Block a user