dld.so.5 (2012 03)
d
dld.so(5)
Itanium(R)-based Systems Only
dld.so(5)
certain libraries preloaded while the child application is adversely affected if these are preloaded (for
example, ksh terminates abnormally if LD_PRELOAD contains
/usr/lib/hpux[32|64]/libpthread.1
).
The libraries specified by
LD_PRELOAD_ONCE
are loaded before the ones specified by
LD_PRELOAD.
The effect on symbol resolution is that the symbols from libraries specified by
LD_PRELOAD_ONCE
take
precedence over symbols from libraries specified by
LD_PRELOAD.
Running Setuid Programs
For looking up shared libraries for setuid applications, the dynamic loader uses only the paths listed in
/etc/dld.sl.conf
.
If
LD_LIBRARY_PATH
and SHLIB_PATH are set, they are validated against the list of paths in
/etc/dld.sl.conf
. (This allows the individual applications to appropriately order the list from the
conf file).
You can turn this feature off by setting the option
_HP_DLDOPTS to -no_setuidpath
. Using this
option disables setuid programs from all dynamic path lookup.
The configuration file
/etc/dld.sl.conf
is expected to contain a list of shared library search paths
(delimited by either colon or newline characters). To avoid redundant searches, you should see that one
path appears only once in the file (and also in the options
SHLIB_PATH and LD_LIBRARY_PATH
). The
conf file should be writeable only by
root. Otherwise, the loader does not use its contents. If
/etc/dld/sl.conf does not exist or has the wrong permissions, all dynamic path lookup is disabled.
Any relative paths (paths not starting with slash (
/) in the path list are ignored by the loader.
NOTE: Spaces are not allowed in the paths listed. Everything on a line that follows a space or
# charac-
ter is ignored. You can use
# to comment out paths in the file.
If either
SHLIB_PATH or LD_LIBRARY_PATH
is set, and neither contains any path listed in the conf
file, all dynamic path lookup is disabled. The paths from the config file are not a fallback.
The following is a sample configuration file:
# need this for some GNU and shared apps
/usr/local/lib:/nfs/appserver/lib
# path below is ignored: path not starting with ’/’
# and loader will not expand ˜ etc.
~wizkid/lib
# second path below ignored: space
/user/ipfguru/lib/hpux32: user/ipfguru/lib/hpux64
/net/appserv2/local/lib # ignored:line starting with space
/opt/java1.3/jre/lib/PA_RISC2.0/ # java 1.3 PA32
/opt/java1.3/jre/lib/PA_RISC2.0/server # java 1.3 PA32
/opt/java1.3/jre/lib/PA_RISC2.0W/
# java 1.4
/opt/java1.4/jre/lib/PA_RISC2.0/:/opt/java1.4/jre/lib/PA_RISC2.0/server
/opt/java1.4/jre/lib/PA_RISC2.0W/:/opt/java1.4/jre/lib/PA_RISC2.0W/server
DIAGNOSTICS
If the dynamic loader is not present, or cannot be invoked by the process for any reason, an error message
is printed to standard error and the process terminates with a non-zero exit code.
These errors fall into two basic categories: errors in attaching a shared library, and errors in binding
symbols. The former can occur only at process startup time but the latter can occur at any time during
process execution unless the
-B immediate option is used with ld. Possible errors that can occur
while attaching a shared library include library not present, library not executable, library corrupt, high
water mark too low, or insufficient room in the address space for the library. Possible errors that can
occur while binding symbols include symbol not found (unresolved external), or library corrupt.
6 Hewlett-Packard Company − 6 − HP-UX 11i Version 3: March 2012