bionic (1) abidw.1.gz

Provided by: abigail-tools_1.2-1_amd64 bug

NAME

       abidw - serialize the ABI of an ELF file

       abidw reads a shared library in ELF format and emits an XML representation of its ABI to standard output.
       The emitted representation includes all the globally  defined  functions  and  variables,  along  with  a
       complete  representation  of  their types.  It also includes a representation of the globally defined ELF
       symbols of the file.  The input shared library must contain associated debug information in DWARF format.

       When given the --linux-tree option, this program can also  handle  a  Linux  kernel  tree.   That  is,  a
       directory  tree  that contains both the vmlinux binary and Linux kernel modules.  It analyses those Linux
       kernel binaries and emits an XML representation of the interface between the kernel and  its  module,  to
       standard  output.   In  this  case,  we  don’t  call it an ABI, but a KMI (Kernel Module Interface).  The
       emitted  KMI  includes  all  the  globally  defined  functions  and  variables,  along  with  a  complete
       representation  of  their  types.   The input binaries must contain associated debug information in DWARF
       format.

INVOCATION

          abidw [options] [<path-to-elf-file>]

OPTIONS

--help | -h

            Display a short help about the command and exit.

          • –version | -v

            Display the version of the program and exit.

          • --debug-info-dir | -d <dir-path>

            In cases where the debug info for path-to-elf-file is in a  separate  file  that  is  located  in  a
            non-standard place, this tells abidw where to look for that debug info file.

            Note that dir-path must point to the root directory under which the debug information is arranged in
            a tree-like manner.  Under Red Hat based systems, that directory is usually <root>/usr/lib/debug.

            Note that this option is not mandatory for  split  debug  information  installed  by  your  system’s
            package manager because then abidw knows where to find it.

          • --out-file <file-path>

            This  option  instructs  abidw  to  emit  the  XML  representation of path-to-elf-file into the file
            file-path, rather than emitting it to its standard output.

          • --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-corpus-path

            Do not emit the path attribute for the ABI corpus.

          • --suppressions | suppr <path-to-suppression-specifications-file>

            Use a suppression specification file located at path-to-suppression-specifications-file.  Note  that
            this  option  can  appear  multiple  times  on  the command line.  In that case, all of the provided
            suppression specification files are taken into account.  ABI artifacts matched  by  the  suppression
            specifications are suppressed from the output of this tool.

          • --kmi-whitelist | -kaw <path-to-whitelist>

            When  analyzing  a Linux kernel binary, this option points to the white list of names of ELF symbols
            of functions and variables which ABI must be written out.  That white list  is  called  a  ”  Kernel
            Module  Interface  white  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
            ABI

            Any  other  function  or  variable  which  ELF symbol are not present in that white list will not be
            considered by the KMI writing process.

            If this option is not provided – thus if no white 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.

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

                $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
                $ cd linux && git checkout v4.5
                $ make allyesconfig all
                $ mkdir build-output
                $ make INSTALL_MOD_PATH=./build-output modules_install
                $ cp vmlinux build-output/modules/4.5.0
                $ abidw --linux-tree build-output/modules/4.5.0 > build-output/linux-4.5.0.kmi

          • --headers-dir | --hd <headers-directory-path-1>

            Specifies where to find the public headers of  the  first  shared  library  that  the  tool  has  to
            consider.  The tool will thus filter out types that are not defined in public headers.

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

          • --check-alternate-debug-info <elf-path>

            If the debug info for the file elf-path contains a reference to an alternate debug info file,  abidw
            checks that it can find that alternate debug info file.  In that case, it emits a meaningful success
            message mentioning the full path to the alternate debug info file found.   Otherwise,  it  emits  an
            error code.

          • --no-show-locs
              In  the  emitted  ABI  representation,  do  not  show file, line or column where ABI artifacts are
              defined.

          • --check-alternate-debug-info-base-name <elf-path>

            Like --check-alternate-debug-info, but in the success message, only mention the  base  name  of  the
            debug info file; not its full path.

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

          • --abidiff
              Load the ABI of the ELF binary given in  argument,  save  it  in  libabigail’s  XML  format  in  a
              temporary  file;  read  the ABI from the temporary XML file and compare the ABI that has been read
              back against the ABI of the ELF binary given in argument.  The ABIs should compare equal.  If they
              don’t, the program emits a diagnostic and exits with a non-zero code.

              This is a debugging and sanity check option.

          • --annotate
              Annotate  the  ABIXML  output  with  comments  above  most elements.  The comments are made of the
              pretty-printed form types, declaration or even ELF symbols.  The purpose is  to  make  the  ABIXML
              output more human-readable for debugging or documenting purposes.

          • --stats

            Emit statistics about various internal things.

          • --verbose

            Emit verbose logs about the progress of miscellaneous internal things.

NOTES

   Alternate debug info files
       As  of  the  version  4 of the DWARF specification, Alternate debug information is a GNU extension to the
       DWARF specification.  It has however been proposed for inclusion into the upcoming version 5 of the DWARF
       standard.  You can read more about the GNU extensions to the DWARF standard here.

AUTHOR

       Dodji Seketeli

       2014-2018, Red Hat, Inc.

                                                  Apr 24, 2018                                          ABIDW(1)