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
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