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