2003-04-07 16:21:26 +00:00
|
|
|
.\" Copyright (c) 2003 Matthew N. Dodd <winter@jurai.net>
|
|
|
|
.\" 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.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
2012-04-30 21:26:35 +00:00
|
|
|
.Dd April 28, 2012
|
2003-04-07 16:21:26 +00:00
|
|
|
.Dt LIBMAP.CONF 5
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm libmap.conf
|
|
|
|
.Nd "configuration file for dynamic object dependency mapping"
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
2003-05-29 21:41:11 +00:00
|
|
|
.Nm libmap
|
2003-04-07 16:21:26 +00:00
|
|
|
functionality of
|
2003-05-29 21:41:11 +00:00
|
|
|
.Xr ld-elf.so.1 1
|
2003-04-07 16:21:26 +00:00
|
|
|
allows dynamic object dependencies to be mapped to arbitrary
|
|
|
|
names.
|
|
|
|
.Pp
|
2003-05-29 21:41:11 +00:00
|
|
|
The configuration file consists of two whitespace separated columns; the
|
2003-04-07 16:21:26 +00:00
|
|
|
left hand side containing the mapping candidate and the right hand
|
2003-05-29 21:41:11 +00:00
|
|
|
side containing the mapping.
|
|
|
|
Dependencies are matched against candidates and replaced with the mappings.
|
2003-04-07 16:21:26 +00:00
|
|
|
.Pp
|
2012-04-30 21:26:35 +00:00
|
|
|
Two special directives are available:
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It Cm include Ar file
|
|
|
|
Parse the contents of
|
|
|
|
.Ar file
|
|
|
|
before continuing with the current file.
|
|
|
|
.It Cm includedir Ar dir
|
|
|
|
Parse the contents of every file in
|
|
|
|
.Ar dir
|
|
|
|
that ends in
|
|
|
|
.Pa .conf
|
|
|
|
before continuing with the current file.
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
Any file or directory encountered while processing
|
|
|
|
.Cm include
|
|
|
|
or
|
|
|
|
.Cm includedir
|
|
|
|
directives will be parsed exactly once, even if it is encountered
|
|
|
|
multiple times.
|
|
|
|
.Pp
|
2003-04-07 16:21:26 +00:00
|
|
|
Constrained mappings may be specified by enclosing the name of the
|
2003-05-29 21:41:11 +00:00
|
|
|
executable or library in brackets.
|
|
|
|
All mappings following a constraint will only be evaluated for that constraint.
|
2004-05-24 01:24:13 +00:00
|
|
|
Constraints can be one of three types:
|
|
|
|
.Bl -tag -width indent
|
2004-06-16 08:33:57 +00:00
|
|
|
.It Exact
|
2004-05-24 01:24:13 +00:00
|
|
|
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
|
2003-05-29 21:41:11 +00:00
|
|
|
.Pa /usr/bin/foo
|
2003-04-07 16:21:26 +00:00
|
|
|
will not match a constraint for
|
2004-05-24 01:24:13 +00:00
|
|
|
.Pa /usr/bin/./foo
|
2004-06-05 02:47:08 +00:00
|
|
|
and vice-versa.
|
2004-05-24 01:24:13 +00:00
|
|
|
This is the default constraint type.
|
|
|
|
.It Basename
|
|
|
|
A constraint with no path is matched against the basename of the
|
|
|
|
executable.
|
|
|
|
.Pa foo
|
2004-06-16 08:33:57 +00:00
|
|
|
will match
|
2004-05-24 01:24:13 +00:00
|
|
|
.Pa /bin/foo ,
|
|
|
|
.Pa /usr/local/sbin/foo ,
|
2004-06-16 08:33:57 +00:00
|
|
|
or any other executable named
|
2004-05-24 01:24:13 +00:00
|
|
|
.Pa foo ,
|
|
|
|
no matter what its path is.
|
|
|
|
.It Directory
|
|
|
|
A constraint with a trailing slash is prefix-matched against the full
|
|
|
|
pathname of the executable.
|
|
|
|
.Pa /usr/bin/
|
|
|
|
will match any executable with a path starting with /usr/bin.
|
|
|
|
.El
|
|
|
|
.Pp
|
2004-06-16 08:33:57 +00:00
|
|
|
Note that the executable path matched against is the
|
|
|
|
.Fa path
|
|
|
|
parameter in an
|
2004-05-24 01:24:13 +00:00
|
|
|
.Fn exec*
|
2004-06-16 08:33:57 +00:00
|
|
|
function call.
|
2004-05-24 01:24:13 +00:00
|
|
|
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
|
|
|
|
.Fn exec*p ,
|
2004-06-16 08:33:57 +00:00
|
|
|
so the Basename constraint type is the most useful.
|
2003-04-07 16:21:26 +00:00
|
|
|
.Pp
|
2003-05-29 21:41:11 +00:00
|
|
|
WARNING!
|
|
|
|
Constrained mappings must never appear first in the configuration file.
|
|
|
|
While there is a way to specify the
|
2003-04-07 16:21:26 +00:00
|
|
|
.Dq default
|
|
|
|
constraint, its use is not recommended.
|
|
|
|
.Pp
|
|
|
|
The most common use at the date of writing is for allowing multiple
|
2003-05-29 21:41:11 +00:00
|
|
|
.Tn POSIX
|
|
|
|
threading libraries to be used on a system without relinking or
|
2003-04-07 16:21:26 +00:00
|
|
|
changing symlinks.
|
2005-08-10 21:44:26 +00:00
|
|
|
.Pp
|
2006-03-27 14:37:54 +00:00
|
|
|
On 64-bit architectures that provide 32-bit runtime support,
|
|
|
|
the libmap mechanism is available for 32-bit binaries too.
|
2006-03-27 00:53:11 +00:00
|
|
|
The mappings has to be written into separate configuration file
|
|
|
|
.Pa /etc/libmap32.conf .
|
2006-03-27 14:37:54 +00:00
|
|
|
Currently only supported on amd64.
|
2006-03-27 00:53:11 +00:00
|
|
|
.Pp
|
2005-08-10 21:44:26 +00:00
|
|
|
This mechanism has also been used to create shims to allow Linux
|
|
|
|
shared libraries to be dynamically loaded into
|
|
|
|
.Fx
|
|
|
|
binaries.
|
2005-08-11 10:32:05 +00:00
|
|
|
In this case, an Exact constraint is used for the Linux shared library,
|
2005-08-10 21:44:26 +00:00
|
|
|
mapping libraries it depends on to a wrapper.
|
|
|
|
The wrapper then defines any needed symbols for the Linux shared library
|
|
|
|
and relies on its libraries not being mapped to provide actual
|
|
|
|
implementations.
|
|
|
|
It appears that only libraries loaded via
|
|
|
|
.Xr 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.
|
2005-01-21 08:36:40 +00:00
|
|
|
.Sh FILES
|
2006-03-27 00:53:11 +00:00
|
|
|
.Bl -tag -width ".Pa /etc/libmap32.conf" -compact
|
2005-01-21 08:36:40 +00:00
|
|
|
.It Pa /etc/libmap.conf
|
|
|
|
The libmap configuration file.
|
2006-03-27 00:53:11 +00:00
|
|
|
.It Pa /etc/libmap32.conf
|
|
|
|
The libmap configuration file for 32-bit binaries on 64-bit system.
|
2005-01-21 08:36:40 +00:00
|
|
|
.El
|
2004-06-16 08:33:57 +00:00
|
|
|
.Sh EXAMPLES
|
2003-04-07 16:21:26 +00:00
|
|
|
.Bd -literal
|
|
|
|
# /etc/libmap.conf
|
|
|
|
#
|
|
|
|
# candidate mapping
|
|
|
|
#
|
2005-10-27 16:59:02 +00:00
|
|
|
libc_r.so.6 libpthread.so.2 # Everything that uses 'libc_r'
|
2004-01-31 22:02:03 +00:00
|
|
|
libc_r.so libpthread.so # now uses 'libpthread'
|
|
|
|
|
2004-05-24 01:24:13 +00:00
|
|
|
[/tmp/mplayer] # Test version of mplayer uses libc_r
|
2005-10-27 16:59:02 +00:00
|
|
|
libpthread.so.2 libc_r.so.6
|
2004-01-31 17:56:45 +00:00
|
|
|
libpthread.so libc_r.so
|
2003-04-07 16:21:26 +00:00
|
|
|
|
2004-05-24 01:24:13 +00:00
|
|
|
[/usr/local/jdk1.4.1/] # All Java 1.4.1 programs use libthr
|
|
|
|
# This works because "javavms" executes
|
|
|
|
# programs with the full pathname
|
2005-10-27 16:59:02 +00:00
|
|
|
libpthread.so.2 libthr.so.2
|
2004-01-31 17:56:45 +00:00
|
|
|
libpthread.so libthr.so
|
2005-08-10 21:44:26 +00:00
|
|
|
|
|
|
|
# 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
|
2003-04-07 16:21:26 +00:00
|
|
|
.Ed
|
|
|
|
.Sh SEE ALSO
|
2003-05-29 21:41:11 +00:00
|
|
|
.Xr ldd 1 ,
|
2003-04-07 16:21:26 +00:00
|
|
|
.Xr rtld 1
|
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Nm
|
2003-05-29 21:41:11 +00:00
|
|
|
manual page and
|
|
|
|
.Nm libmap
|
|
|
|
functionality first appeared in
|
2003-04-07 16:21:26 +00:00
|
|
|
.Fx 5.1 .
|
|
|
|
.Sh AUTHORS
|
2003-05-29 21:41:11 +00:00
|
|
|
This manual page was written by
|
|
|
|
.An Matthew N. Dodd Aq winter@jurai.net .
|