.\" Author: Raphaël Hertzog
.TH dpkg\-gensymbols 1 "2011-08-14" "Debian Project" "dpkg utilities"
.SH NAME
dpkg\-gensymbols \- generate symbols files (shared library dependency information)
.
.SH SYNOPSIS
.B dpkg\-gensymbols
.RI [ option ...]
.
.SH DESCRIPTION
.B dpkg\-gensymbols
scans a temporary build tree (debian/tmp by default) looking for libraries
and generate a \fIsymbols\fR file describing them. This file, if
non-empty, is then installed in the DEBIAN subdirectory of the build tree
so that it ends up included in the control information of the package.
.P
When generating those files, it uses as input some symbols files
provided by the maintainer. It looks for the following files (and use the
first that is found):
.IP \(bu 4
debian/\fIpackage\fR.symbols.\fIarch\fR
.IP \(bu 4
debian/symbols.\fIarch\fR
.IP \(bu 4
debian/\fIpackage\fR.symbols
.IP \(bu 4
debian/symbols
.P
The main interest of those files is to provide the minimal version
associated to each symbol provided by the libraries. Usually it
corresponds to the first version of that package that provided the symbol,
but it can be manually incremented by the maintainer if the ABI of the
symbol is extended without breaking backwards compatibility. It's the
responsibility of the maintainer to keep those files up-to-date and
accurate, but \fBdpkg\-gensymbols\fR helps him.
.P
When the generated symbols files differ from the maintainer supplied
one, \fBdpkg\-gensymbols\fR will print a diff between the two versions.
Furthermore if the difference is too significant, it will even fail (you
can customize how much difference you can tolerate, see the \fB\-c\fR
option).
.SH MAINTAINING SYMBOLS FILES
The symbols files are really useful only if they reflect the evolution of
the package through several releases. Thus the maintainer has to update
them every time that a new symbol is added so that its associated minimal
version matches reality. To do this properly he can use the diffs contained
in the build logs. In most cases, the diff applies directly to his
debian/\fIpackage\fR.symbols file. That said, further tweaks are usually
needed: it's recommended for example to drop the Debian revision
from the minimal version so that backports with a lower version number
but the same upstream version still satisfy the generated dependencies.
If the Debian revision can't be dropped because the symbol really got
added by the Debian specific change, then one should suffix the version
with "~".
.P
Before applying any patch to the symbols file, the maintainer should
double-check that it's sane. Public symbols are not supposed to disappear,
so the patch should ideally only add new lines.
.P
Note that you can put comments in symbols files: any line with '#' as the
first character is a comment except if it starts with '#include' (see
section \fBUsing includes\fP). Lines starting with '#MISSING:' are special
comments documenting symbols that have disappeared.
.SS Using #PACKAGE# substitution
.P
In some rare cases, the name of the library varies between architectures.
To avoid hardcoding the name of the package in the symbols file, you can
use the marker \fI#PACKAGE#\fR. It will be replaced by the real package
name during installation of the symbols files. Contrary to the
\fI#MINVER#\fR marker, \fI#PACKAGE#\fR will never appear in a symbols file
inside a binary package.
.SS Using symbol tags
.P
Symbol tagging is useful for marking symbols that are special in some way.  Any
symbol can have an arbitrary number of tags associated with it. While all tags are
parsed and stored, only a some of them are understood by
\fBdpkg\-gensymbols\fR and trigger special handling of the symbols. See
subsection \fBStandard symbol tags\fR for reference of these tags.
.P
Tag specification comes right before the symbol name (no whitespace is allowed
in between). It always starts with an opening bracket \fB(\fR, ends with a
closing bracket \fB)\fR and must contain at least one tag. Multiple tags are
separated by the \fB|\fR character. Each tag can optionally have a value which
is separated form the tag name by the \fB=\fR character. Tag names and values
can be arbitrary strings except they cannot contain any of the special \fB)\fR
\fB|\fR \fB=\fR characters. Symbol names following a tag specification can
optionally be quoted with either \fB'\fR or \fB"\fR characters to allow
whitespaces in them. However, if there are no tags specified for the symbol,
quotes are treated as part of the symbol name which continues up until the
first space.
.P
 (tag1=i am marked|tag name with space)"tagged quoted symbol"@Base 1.0
 (optional)tagged_unquoted_symbol@Base 1.0 1
 untagged_symbol@Base 1.0
.P
The first symbol in the example is named \fItagged quoted symbol\fR and has two
tags: \fItag1\fR with value \fIi am marked\fR and \fItag name with space\fR
that has no value. The second symbol named \fItagged_unquoted_symbol\fR is
only tagged with the tag named \fIoptional\fR. The last symbol is an
example of the normal untagged symbol.
.P
Since symbol tags are an extension of the \fIdeb\-symbols(5)\fR format, they
can only be part of the symbols files used in source packages (those files
should then be seen as templates used to build the symbols files that are
embedded in binary packages). When
\fBdpkg\-gensymbols\fR is called without the \fI\-t\fR option, it will
output symbols files compatible to the \fIdeb\-symbols(5)\fR format:
it fully processes symbols according to the requirements of their standard tags
and strips all tags from the output. On the contrary, in template mode
(\fI\-t\fR) all symbols and their tags (both standard and unknown ones)
are kept in the output and are written in their original form as they were
loaded.
.SS Standard symbol tags
.TP
.B optional
A symbol marked as optional can disappear from the library at any time and that
will never cause \fBdpkg\-gensymbols\fR to fail. However, disappeared optional
symbols will continuously appear as MISSING in the diff in each new package
revision.  This behaviour serves as a reminder for the maintainer that such a
symbol needs to be removed from the symbol file or readded to the library. When
the optional symbol, which was previously declared as MISSING, suddenly
reappears in the next revision, it will be upgraded back to the "existing"
status with its minimum version unchanged.

This tag is useful for symbols which are private where their disappearance do
not cause ABI breakage. For example, most of C++ template instantiations fall
into this category. Like any other tag, this one may also have an arbitrary
value: it could be used to indicate why the symbol is considered optional.
.TP
.B arch=\fIarchitecture list\fR
This tag allows one to restrict the set of architectures where the symbol
is supposed to exist. When the symbols list is updated with the symbols
discovered in the library, all arch-specific symbols which do not concern
the current host architecture are treated as if they did not exist. If an
arch-specific symbol matching the current host architecture does not exist
in the library, normal procedures for missing symbols apply and it may
cause \fBdpkg\-gensymbols\fR to fail. On the other hand, if the
arch-specific symbol is found when it was not supposed to exist (because
the current host architecture is not listed in the tag), it is made arch
neutral (i.e. the arch tag is dropped and the symbol will appear in the
diff due to this change), but it is not considered as new.

When operating in the default non-template mode, among arch-specific symbols
only those that match the current host architecture are written to the
symbols file. On the contrary, all arch-specific symbols (including those
from foreign arches) are always written to the symbol file when operating
in template mode.

The format of \fIarchitecture list\fR is the same as the one used in the
\fIBuild\-Depends\fR field of \fIdebian/control\fR (except the enclosing
square brackets []). For example, the first symbol from the list below
will be considered only on alpha, amd64, kfreebsd\-amd64 and ia64 architectures
while the second one anywhere except on armel.

 (arch=alpha amd64 kfreebsd\-amd64 ia64)a_64bit_specific_symbol@Base 1.0
 (arch=!armel)symbol_armel_does_not_have@Base 1.0
.TP
.B ignore\-blacklist
dpkg\-gensymbols has an internal blacklist of symbols that should not
appear in symbols files as they are usually only side-effects of
implementation details of the toolchain. If for some reason, you really
want one of those symbols to be included in the symbols file, you should
tag the symbol with \fBignore\-blacklist\fP. It can be necessary for
some low level toolchain libraries like libgcc.
.TP
.B c++
Denotes \fIc++\fR symbol pattern. See \fBUsing symbol patterns\fR subsection
below.
.TP
.B symver
Denotes \fIsymver\fR (symbol version) symbol pattern. See \fBUsing symbol
patterns\fR subsection below.
.TP
.B regex
Denotes \fIregex\fR symbol pattern. See \fBUsing symbol patterns\fR subsection
below.
.SS Using symbol patterns
.P
Unlike a standard symbol specification, a pattern may cover multiple real
symbols from the library. \fBdpkg\-gensymbols\fR will attempt to match each
pattern against each real symbol that does \fInot\fR have a specific symbol
counterpart defined in the symbol file. Whenever the first matching pattern is
found, all its tags and properties will be used as a basis specification of the
symbol. If none of the patterns matches, the symbol will be considered as new.

A pattern is considered lost if it does not match any symbol in the library. By
default this will trigger a \fBdpkg\-gensymbols\fR failure under \fI\-c1\fR or
higher level. However, if the failure is undesired, the pattern may be marked
with the \fIoptional\fR tag. Then if the pattern does not match anything, it
will only appear in the diff as MISSING. Moreover, like any symbol, the pattern
may be limited to the specific architectures with the \fIarch\fR tag. Please
refer to \fBStandard symbol tags\fR subsection above for more information.

Patterns are an extension of the \fIdeb\-symbols(5)\fR format hence they are
only valid in symbol file templates. Pattern specification syntax is not any
different from the one of a specific symbol. However, symbol name part of the
specification serves as an expression to be matched against \fIname@version\fR
of the real symbol. In order to distinguish among different pattern types, a
pattern will typically be tagged with a special tag.

At the moment, \fBdpkg\-gensymbols\fR supports three basic pattern types:
.TP 3
.B c++
This pattern is denoted by the \fIc++\fR tag. It matches only C++ symbols by
their demangled symbol name (as emitted by \fBc++filt\fR(1) utility). This
pattern is very handy for matching symbols which mangled names might vary
across different architectures while their demangled names remain the same. One
group of such symbols is \fInon\-virtual thunks\fR which have architecture
specific offsets embedded in their mangled names. A common instance of this
case is a virtual destructor which under diamond inheritance needs a
non-virtual thunk symbol. For example, even if _ZThn8_N3NSB6ClassDD1Ev@Base on
32bit architectures will probably be _ZThn16_N3NSB6ClassDD1Ev@Base on 64bit
ones, it can be matched with a single \fIc++\fR pattern:
.RS
.PP
libdummy.so.1 libdummy1 #MINVER#
 [...]
 (c++)"non\-virtual thunk to NSB::ClassD::~ClassD()@Base" 1.0
 [...]
.P
The demangled name above can be obtained by executing the following command:
.PP
 $ echo '_ZThn8_N3NSB6ClassDD1Ev@Base' | c++filt
.P
Please note that while mangled name is unique in the library by definition,
this is not necessarily true for demangled names. A couple of distinct real
symbols may have the same demangled name. For example, that's the case with
non-virtual thunk symbols in complex inheritance configurations or with most
constructors and destructors (since g++ typically generates two real symbols
for them). However, as these collisions happen on the ABI level, they should
not degrade quality of the symbol file.
.RE
.TP
.B symver
This pattern is denoted by the \fIsymver\fR tag. Well maintained libraries have
versioned symbols where each version corresponds to the upstream version where
the symbol got added. If that's the case, you can use a \fIsymver\fR pattern to
match any symbol associated to the specific version. For example:
.RS
.PP
libc.so.6 libc6 #MINVER#
 (symver)GLIBC_2.0 2.0
 [...]
 (symver)GLIBC_2.7 2.7
 access@GLIBC_2.0 2.2
.PP
All symbols associated with versions GLIBC_2.0 and GLIBC_2.7 will lead to
minimal version of 2.0 and 2.7 respectively with the exception of the symbol
access@GLIBC_2.0. The latter will lead to a minimal dependency on libc6 version
2.2 despite being in the scope of the "(symver)GLIBC_2.0" pattern because
specific symbols take precedence over patterns.
.P
Please note that while old style wildcard patterns (denoted by "*@version" in
the symbol name field) are still supported, they have been deprecated by new
style syntax "(symver|optional)version". For example, "*@GLIBC_2.0 2.0" should
be written as "(symver|optional)GLIBC_2.0 2.0" if the same behaviour is needed.
.RE
.TP
.B regex
Regular expression patterns are denoted by the \fIregex\fR tag. They match by
the perl regular expression specified in the symbol name field. A regular
expression is matched as it is, therefore do not forget to start it with the
\fI^\fR character or it may match any part of the real symbol
\fIname@version\fR string. For example:
.RS
.PP
libdummy.so.1 libdummy1 #MINVER#
 (regex)"^mystack_.*@Base$" 1.0
 (regex|optional)"private" 1.0
.P
Symbols like "mystack_new@Base", "mystack_push@Base", "mystack_pop@Base" etc.
will be matched by the first pattern while e.g. "ng_mystack_new@Base" won't.
The second pattern will match all symbols having the string "private" in their
names and matches will inherit \fIoptional\fR tag from the pattern.
.RE
.P
Basic patterns listed above can be combined where it makes sense. In that case,
they are processed in the order in which the tags are specified. For example,
both
.PP
 (c++|regex)"^NSA::ClassA::Private::privmethod\\d\\(int\\)@Base" 1.0
 (regex|c++)N3NSA6ClassA7Private11privmethod\\dEi@Base 1.0
.P
will match symbols "_ZN3NSA6ClassA7Private11privmethod1Ei@Base" and
"_ZN3NSA6ClassA7Private11privmethod2Ei@Base". When matching the first pattern,
the raw symbol is first demangled as C++ symbol, then the demangled name is
matched against the regular expression. On the other hand, when matching the
second pattern, regular expression is matched against the raw symbol name, then
the symbol is tested if it is C++ one by attempting to demangle it. A failure
of any basic pattern will result in the failure of the whole pattern.
Therefore, for example, "__N3NSA6ClassA7Private11privmethod\\dEi@Base" will not
match either of the patterns because it is not a valid C++ symbol.
.P
In general, all patterns are divided into two groups: aliases (basic \fIc++\fR
and \fIsymver\fR) and generic patterns (\fIregex\fR, all combinations of
multiple basic patterns). Matching of basic alias-based patterns is fast (O(1))
while generic patterns are O(N) (N - generic pattern count) for each symbol.
Therefore, it is recommended not to overuse generic patterns.
.P
When multiple patterns match the same real symbol, aliases (first \fIc++\fR,
then \fIsymver\fR) are preferred over generic patterns. Generic patterns are
matched in the order they are found in the symbol file template until the first
success.  Please note, however, that manual reordering of template file entries
is not recommended because \fBdpkg\-gensymbols\fR generates diffs based on the
alphanumerical order of their names.
.SS Using includes
.P
When the set of exported symbols differ between architectures, it may become
inefficient to use a single symbol file. In those cases, an include directive
may prove to be useful in a couple of ways:
.IP \(bu 4
You can factorize the common part in some external file
and include that file in your \fIpackage\fR.symbols.\fIarch\fR file by
using an include directive like this:

#include "\fIpackages\fR.symbols.common"
.IP \(bu
The include directive may also be tagged like any symbol:

(tag|..|tagN)#include "file-to-include"

As a result, all symbols included from \fIfile-to-include\fR will be considered
to be tagged with \fItag\fR .. \fItagN\fR by default. You can use this feature
to create a common \fIpackage\fR.symbols file which includes architecture
specific symbol files:

  common_symbol1@Base 1.0
 (arch=amd64 ia64 alpha)#include "package.symbols.64bit"
 (arch=!amd64 !ia64 !alpha)#include "package.symbols.32bit"
  common_symbol2@Base 1.0
.P
The symbols files are read line by line, and include directives are processed
as soon as they are encountered. This means that the content of the included
file can override any content that appeared before the include directive and
that any content after the directive can override anything contained in the
included file. Any symbol (or even another #include directive) in the included
file can specify additional tags or override values of the inherited tags in
its tag specification. However, there is no way for the symbol to remove
any of the inherited tags.
.P
An included file can repeat the header line containing the SONAME of the
library. In that case, it overrides any header line previously read.
However, in general it's best to avoid duplicating header lines. One way
to do it is the following:
.PP
#include "libsomething1.symbols.common"
 arch_specific_symbol@Base 1.0
.SS Good library management
.P
A well-maintained library has the following features:
.IP \(bu 4
its API is stable (public symbols are never dropped, only new public
symbols are added) and changes in incompatible ways only when the SONAME
changes;
.IP \(bu 4
ideally, it uses symbol versioning to achieve ABI stability despite
internal changes and API extension;
.IP \(bu 4
it doesn't export private symbols (such symbols can be tagged optional as
workaround).
.P
While maintaining the symbols file, it's easy to notice appearance and
disappearance of symbols. But it's more difficult to catch incompatible
API and ABI change. Thus the maintainer should read thoroughly the
upstream changelog looking for cases where the rules of good library
management have been broken. If potential problems are discovered,
the upstream author should be notified as an upstream fix is always better
than a Debian specific work-around.
.SH OPTIONS
.TP
.BI \-P package-build-dir
Scan \fIpackage-build-dir\fR instead of debian/tmp.
.TP
.BI \-p package
Define the package name. Required if more than one binary package is listed in
debian/control (or if there's no debian/control file).
.TP
.BI \-v version
Define the package version. Defaults to the version extracted from
debian/changelog. Required if called outside of a source package tree.
.TP
.BI \-e library-file
Only analyze libraries explicitly listed instead of finding all public
libraries. You can use a regular expression in \fIlibrary-file\fR to match
multiple libraries with a single argument (otherwise you need multiple
\fB\-e\fR).
.TP
.BI \-I filename
Use \fIfilename\fR as reference file to generate the symbols file
that is integrated in the package itself.
.TP
.B \-O
Print the generated symbols file to standard output, rather than being
stored in the package build tree.
.TP 
.BI \-O filename
Store the generated symbols file as \fIfilename\fR. If \fIfilename\fR is
pre-existing, its content is used as basis for the generated symbols file.
You can use this feature to update a symbols file so that it matches a
newer upstream version of your library.
.TP
.BI \-t
Write the symbol file in template mode rather than the format compatible with
\fIdeb\-symbols(5)\fR. The main difference is that in the template mode symbol
names and tags are written in their original form contrary to the
post-processed symbol names with tags stripped in the compatibility mode.
Moreover, some symbols might be omitted when writing a standard
\fIdeb\-symbols(5)\fR file (according to the tag processing rules) while all
symbols are always written to the symbol file template.
.TP
.BI \-c [0-4]
Define the checks to do when comparing the generated symbols file with the
template file used as starting point. By default the level is 1. Increasing
levels do more checks and include all checks of lower levels. Level 0 never
fails. Level 1 fails if some symbols have disappeared. Level 2 fails if some
new symbols have been introduced. Level 3 fails if some libraries have
disappeared. Level 4 fails if some libraries have been introduced.

This value can be overridden by the environment variable
DPKG_GENSYMBOLS_CHECK_LEVEL.
.TP
.BI \-q
Keep quiet and never generate a diff between generated symbols file and the
template file used as starting point or show any warnings about new/lost
libraries or new/lost symbols. This option only disables informational output
but not the checks themselves (see \fI\-c\fR option).
.TP
.BI \-a arch
Assume \fIarch\fR as host architecture when processing symbol files. Use this
option to generate a symbol file or diff for any architecture provided its
binaries are already available.
.TP
.BI \-d
Enable debug mode. Numerous messages are displayed to explain what 
.B dpkg\-gensymbols
does.
.TP
.BI \-V
Enable verbose mode. The generated symbols file contains deprecated
symbols as comments. Furthermore in template mode, pattern symbols
are followed by comments listing real symbols that have matched the
pattern.
.TP
.BR \-h ", " \-\-help
Show the usage message and exit.
.TP
.BR \-\-version
Show the version and exit.
.
.SH "SEE ALSO"
.BR http://people.redhat.com/drepper/symbol\-versioning
.br
.BR http://people.redhat.com/drepper/goodpractice.pdf
.br
.BR http://people.redhat.com/drepper/dsohowto.pdf
.br
.BR deb\-symbols (5),
.BR dpkg\-shlibdeps (1).
.
.SH AUTHORS
Copyright \(co 2007-2009 Rapha\[:e]l Hertzog
.sp
This is free software; see the GNU General Public Licence version 2 or later
for copying conditions. There is NO WARRANTY.
