libmap.conf(5)

NAME

libmap.conf - configuration file for dynamic object depen
dency mapping

DESCRIPTION

The libmap functionality of ld-elf.so.1(1) allows dynamic
object dependencies to be mapped to arbitrary names.
The configuration file consists of two whitespace separated
columns; the
left hand side containing the mapping candidate and the
right hand side
containing the mapping. Dependencies are matched against
candidates and
replaced with the mappings.
Constrained mappings may be specified by enclosing the name
of the executable or library in brackets. All mappings following a
constraint will
only be evaluated for that constraint. Constraints can be
one of three
types:
Exact The constraint is matched literally so that only an
executable
with an identical fully qualified pathname will
match the constraint. This means that the executable
/usr/bin/foo will not
match a constraint for /usr/bin/./foo and vice-ver
sa. This is
the default constraint type.
Basename
A constraint with no path is matched against the
basename of the
executable. foo will match /bin/foo,
/usr/local/sbin/foo, or any
other executable named foo, no matter what its path
is.
Directory
A constraint with a trailing slash is prefix-matched
against the
full pathname of the executable. /usr/bin/ will
match any executable with a path starting with /usr/bin.
Note that the executable path matched against is the path
parameter in an
exec*() function call. The Directory or Exact constraints
can only match
when the executable is called with a full pathname. Most
programs executed from a shell are run without a full path, via
exec*p(), so the
Basename constraint type is the most useful.
WARNING! Constrained mappings must never appear first in
the configuration file. While there is a way to specify the ``default''
constraint,
its use is not recommended.
The most common use at the date of writing is for allowing
multiple POSIX
threading libraries to be used on a system without relinking
or changing
symlinks.
This mechanism has also been used to create shims to allow
Linux shared
libraries to be dynamically loaded into FreeBSD binaries.
In this case,
an Exact constraint is used for the Linux shared library,
mapping
libraries it depends on to a wrapper. The wrapper then de
fines any
needed symbols for the Linux shared library and relies on
its libraries
not being mapped to provide actual implementations. It ap
pears that only
libraries loaded via dlopen(3) will work correctly. The
symbol version
information in shared libraries is checked at link time, but
at run time
the version information is currently ignored.

FILES

/etc/libmap.conf The libmap configuration file.

EXAMPLES

# /etc/libmap.conf
#
# candidate mapping
#
libc_r.so.6 libpthread.so.2 # Everything that
uses 'libc_r'
libc_r.so libpthread.so # now uses
[/tmp/mplayer] # Test version of mplayer uses
libc_r
libpthread.so.2 libc_r.so.6
libpthread.so libc_r.so
[/usr/local/jdk1.4.1/] # All Java 1.4.1 programs use libthr
# This works because "javavms" exe
cutes
# programs with the full pathname
libpthread.so.2 libthr.so.2
libpthread.so libthr.so
# Glue for Linux-only EPSON printer .so to be loaded into
cups, etc.
[/usr/local/lib/pips/libsc80c.so]
libc.so.6 pluginwrapper/pips.so
libdl.so.2 pluginwrapper/pips.so

SEE ALSO

ldd(1), rtld(1)

HISTORY

The libmap.conf manual page and libmap functionality first
appeared in
FreeBSD 5.1.

AUTHORS

This manual page was written by Matthew N. Dodd <winter@ju
rai.net>.
BSD January 31, 2004
Copyright © 2010-2024 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout