Move the man pages for the a.out dynamic linker into the 1aout
section. I created rtld.1aout earlier with a repository copy. This clears the way for the ELF dynamic linker man page, which I will commit next.
This commit is contained in:
parent
4c824a9165
commit
fb6b385092
@ -1,7 +1,7 @@
|
||||
# $FreeBSD$
|
||||
PROG= ld.so
|
||||
SRCS= mdprologue.S rtld.c shlib.c md.c support.c
|
||||
MAN1= rtld.1
|
||||
MAN1aout= rtld.1aout
|
||||
# As there is relocation going on behind GCC's back, don't cache function addresses.
|
||||
PICFLAG=-fpic -fno-function-cse
|
||||
CFLAGS+=-I${.CURDIR} -I${.CURDIR}/${MACHINE_ARCH} ${PICFLAG} -DRTLD -Wall
|
||||
@ -10,7 +10,7 @@ ASFLAGS+=-k
|
||||
DPADD+= ${LIBC:S/c.a/c_pic.a/} ${LIBC:S/c.a/gcc_pic.a/}
|
||||
LDADD+= -lc_pic -lgcc_pic
|
||||
INSTALLFLAGS+= -fschg -C # -C to install as atomically as possible
|
||||
MLINKS= rtld.1 ld.so.1
|
||||
MLINKS= rtld.1aout ld.so.1aout
|
||||
|
||||
.PATH: ${.CURDIR}/${MACHINE_ARCH}
|
||||
|
||||
|
@ -1,225 +0,0 @@
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.\" 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 acknowledgment:
|
||||
.\" 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 FreeBSD
|
||||
.Sh NAME
|
||||
.Nm ld.so ,
|
||||
.Nm rtld
|
||||
.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 successfully loaded,
|
||||
.Nm
|
||||
proceeds to resolve external references from both the main program and
|
||||
all objects loaded. A mechanism is provided for initialization routines
|
||||
to be called, on a per-object basis, giving a shared object an opportunity
|
||||
to perform any extra set-up, before execution of the program proper begins.
|
||||
This is useful for C++ libraries that contain static constructors.
|
||||
.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 than 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
|
||||
recognizes a number of environment variables that can be used to modify
|
||||
its behaviour as follows:
|
||||
.Pp
|
||||
.Bl -tag -width "LD_IGNORE_MISSING_OBJECTS"
|
||||
.It Ev LD_LIBRARY_PATH
|
||||
A colon separated list of directories, overriding the default search path
|
||||
for shared libraries.
|
||||
This is ignored for set-user-ID and set-group-ID programs.
|
||||
.It Ev LD_PRELOAD
|
||||
A colon separated list of shared libraries, to be linked in before any
|
||||
other shared libraries. If the directory is not specified then
|
||||
the directories specified by LD_LIBRARY_PATH will be searched first
|
||||
followed by the set of built-in standard directories.
|
||||
This is ignored for set-user-ID and set-group-ID programs.
|
||||
.It Ev LD_BIND_NOW
|
||||
When set to a nonempty string, causes
|
||||
.Nm
|
||||
to relocate all external function calls before starting execution of the
|
||||
program. Normally, function calls are bound lazily, at the first call
|
||||
of each function.
|
||||
.Ev LD_BIND_NOW
|
||||
increases the start-up time of a program, but it avoids run-time
|
||||
surprises caused by unexpectedly undefined functions.
|
||||
.It Ev LD_WARN_NON_PURE_CODE
|
||||
When set to a nonempty string, 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 to a nonempty string, no warning messages of any kind are
|
||||
issued. Normally, a warning is given if satisfactorily versioned
|
||||
library could not be found.
|
||||
.It Ev LD_IGNORE_MISSING_OBJECTS
|
||||
When set to a nonempty string, makes it a nonfatal condition if
|
||||
one or more required shared objects cannot be loaded.
|
||||
Loading and execution proceeds using the objects that are
|
||||
available.
|
||||
A warning is produced for each missing object, unless the environment
|
||||
variable
|
||||
.Ev LD_SUPPRESS_WARNINGS
|
||||
is set to a nonempty string.
|
||||
.Pp
|
||||
This is ignored for set-user-ID and set-group-ID programs.
|
||||
.Pp
|
||||
Missing shared objects can be ignored without errors if all the
|
||||
following conditions hold:
|
||||
.Bl -bullet
|
||||
.It
|
||||
They do not supply definitions for any required data symbols.
|
||||
.It
|
||||
No functions defined by them are called during program execution.
|
||||
.It
|
||||
The environment variable
|
||||
.Ev LD_BIND_NOW
|
||||
is unset or is set to the empty string.
|
||||
.El
|
||||
.It Ev LD_TRACE_LOADED_OBJECTS
|
||||
When set to a nonempty string, 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_TRACE_LOADED_OBJECTS_FMT1
|
||||
.It Ev LD_TRACE_LOADED_OBJECTS_FMT2
|
||||
When set, these variables are interpreted as format strings a la
|
||||
.Xr printf 3
|
||||
to customize the trace output and are used by
|
||||
.Xr ldd 1 's
|
||||
.Fl f
|
||||
option and allows
|
||||
.Xr ldd 1
|
||||
to be operated as a filter more conveniently.
|
||||
The following conversions can be used:
|
||||
.Bl -tag -indent "LD_TRACE_LOADED_OBJECTS_FMT1 " -width "xxxx"
|
||||
.It \&%a
|
||||
The main program's name
|
||||
.Po also known as
|
||||
.Dq __progname
|
||||
.Pc .
|
||||
.It \&%A
|
||||
The value of the environment variable
|
||||
.Ev LD_TRACE_LOADED_OBJECTS_PROGNAME
|
||||
.It \&%o
|
||||
The library name.
|
||||
.It \&%m
|
||||
The library's major version number.
|
||||
.It \&%n
|
||||
The library's minor version number.
|
||||
.It \&%p
|
||||
The full pathname as determined by
|
||||
.Nm rtld Ns 's
|
||||
library search rules.
|
||||
.It \&%x
|
||||
The library's load address.
|
||||
.El
|
||||
.Pp
|
||||
Additionally,
|
||||
.Sy \en
|
||||
and
|
||||
.Sy \et
|
||||
are recognized and have their usual meaning.
|
||||
.\" .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 link 5 ,
|
||||
.Xr ldconfig 8
|
||||
.Sh HISTORY
|
||||
The shared library model employed first appeared in SunOS 4.0
|
Loading…
x
Reference in New Issue
Block a user