- --drop-private-types
This option is implicitly set by option
–headers-dir and –header-file options.
With this option, types that are NOT defined in the
headers are entirely dropped from the internal representation build by
Libabigail to represent the ABI and will not end up in the abi XML
file.
This option is provided or compatibility reasons only and
should not be explicitly used anymore.
- --drop-undefined-syms
With this option functions or variables for which the
(exported) ELF symbol is undefined are dropped from the internal
representation build by Libabigail to represent the ABI and will not end
up in the abi XML file.
- --exported-interfaces-only
By default, when looking at the debug information accompanying
a binary, this tool analyzes the descriptions of the types reachable by
the interfaces (functions and variables) that are visible outside of
their translation unit. Once that analysis is done, an ABI corpus is
constructed by only considering the subset of types reachable from
interfaces associated to ELF symbols that are defined and
exported by the binary. It’s that final ABI corpus which textual
representation is saved as ABIXML.
The problem with that approach however is that analyzing all
the interfaces that are visible from outside their translation unit can
amount to a lot of data, especially when those binaries are
applications, as opposed to shared libraries. One example of such
applications is the Linux Kernel. Analyzing massive ABI corpora
like these can be extremely slow.
To mitigate that performance issue, this option allows
libabigail to only analyze types that are reachable from interfaces
associated with defined and exported ELF symbols.
Note that this option is turned on by default when analyzing
the Linux Kernel. Otherwise, it’s turned off by
default.
- --follow-dependencies
For each dependency of the input binary of abidw, if it
is found in the directory specified by the --added-binaries-dir
option, then construct an ABI corpus out of the dependency and add it to
a set of ABI corpora (called an ABI Corpus Group) along with the ABI
corpus of the input binary of the program. The ABI Corpus Group is then
serialized out.
- --force-early-suppression
This option must be used alongside option
–suppression.
It forces suppression specifications to be applied in
early suppression mode. Artifacts of the internal representation
that are matched by suppression specifications are thus suppressed from
memory.
If this option is not used then only suppression
specifications with the drop property set to ‘yes’
are effective. All other suppression specification directives will
appear to be ignored.
- --headers-dir | --hd <headers-directory-path-1>
Specifies where to find the public headers of the binary that
the tool has to consider. The tool will thus filter out types that are
not defined in public headers. This option implicitly sets option
–drop-private-types.
Note that several public header directories can be specified
for the binary to consider. In that case the --header-dir option
should be present several times on the command line, like in the
following example:
- --header-file | --hf <header-file-path>
Specifies where to find one of the public headers of the abi
file that the tool has to consider. The tool will thus filter out types
that are not defined in public headers.
This option implicitly sets option
–drop-private-types.
- --help | -h
Display a short help about the command and exit.
- --kmi-whitelist | --kmi-stablelist |-w
<path-to-stablelist>
When analyzing a Linux Kernel binary, this option
points to the list of names of ELF symbols of functions and variables
which ABI must be written out. Any function or variable with a name that
is not included in that list will not ignored. That list is called a
“ Kernel Module Interface stable list”. This is because
for the Kernel, we don’t talk about the ABI; we rather talk about
the interface between the Kernel and its module. Hence the term
KMI rather than KABI.
Any other function or variable which ELF symbol are not
present in that stable list will not be considered by the KMI writing
process.
If this option is not provided – thus if no stable list
is provided – then the entire KMI, that is, all publicly defined
and exported functions and global variables by the Linux Kernel
binaries is emitted.
- --list-dependencies
For each dependency of the input binary of``abidw``, if
it’s found in the directory specified by the
--added-binaries-dir option, then the name of the dependency is
printed out.
- --load-all-types
By default, libabigail (and thus abidw) only
loads types that are reachable from functions and variables declarations
that are publicly defined and exported by the binary. So only those
types are present in the output of abidw. This option however
makes abidw load all the types defined in the binaries,
even those that are not reachable from public declarations.
- --linux-tree | --lt
Make abidw to consider the input path as a path to a
directory containing the vmlinux binary as several kernel modules
binaries. In that case, this program emits the representation of the
Kernel Module Interface (KMI) on the standard output.
Below is an example of usage of abidw on a Linux
Kernel tree.
First, checkout a Linux Kernel source tree and build
it. Then install the kernel modules in a directory somewhere. Copy the
vmlinux binary into that directory too. And then serialize the KMI of
that kernel to disk, using abidw:
- --no-assume-odr-for-cplusplus
When analysing a binary originating from C++ code using
DWARF debug information, libabigail assumes the One Definition
Rule to speed-up the analysis. In that case, when several types have
the same name in the binary, they are assumed to all be equal.
This option disables that assumption and instructs libabigail
to actually actually compare the types to determine if they are
equal.
- --no-corpus-path
Do not emit the path attribute for the ABI corpus.
- --no-elf-needed
Do not include the list of DT_NEEDED dependency names in the
corpus.
- --no-leverage-dwarf-factorization
When analysing a binary which DWARF debug information
was processed with the DWZ tool, the type information is supposed
to be already factorized. That context is used by libabigail to perform
some speed optimizations.
This option disables those optimizations.
- --no-load-undefined-interfaces
By default, libabigail (and thus abidw) loads
information about undefined function and variable symbols as well as
functions and variables that are associated with those undefined
symbols. Those are called undefined interfaces. This option however
makes makes abidw avoid loading information about undefined
interfaces. The resulting XML file thus doesn’t contain
information about those undefined interfaces.
- --no-linux-kernel-mode
Without this option, if abipkgiff detects that the binaries it
is looking at are Linux Kernel binaries (either vmlinux or modules) then
it only considers functions and variables which ELF symbols are listed
in the __ksymtab and __ksymtab_gpl sections.
With this option, abipkgdiff considers the binary as a
non-special ELF binary. It thus considers functions and variables which
are defined and exported in the ELF sense.
- --noout
This option instructs abidw to not emit the XML
representation of the ABI. So it only reads the ELF and debug
information, builds the internal representation of the ABI and exits.
This option is usually useful for debugging purposes.
- --no-parameter-names
In the emitted ABI representation, do not show names of
function parameters, just the types.
- --no-show-locs