dwz(1)



dwz(1)                      General Commands Manual                     dwz(1)

NAME
       dwz - DWARF optimization and duplicate removal tool

SYNOPSIS
       dwz [OPTION...] [FILES]

DESCRIPTION
       dwz  is a program that attempts to optimize DWARF debugging information
       contained in ELF shared libraries and  ELF  executables  for  size,  by
       replacing DWARF information representation with equivalent smaller rep-
       resentation where possible and by reducing the  amount  of  duplication
       using  techniques from DWARF standard appendix E - creating DW_TAG_par-
       tial_unit compilation units (CUs) for duplicated information and  using
       DW_TAG_imported_unit to import it into each CU that needs it.

       The  tool handles DWARF 32-bit format debugging sections of versions 2,
       3 and 4 and GNU extensions on top of those, though  using  DWARF  4  or
       worst case DWARF 3 is strongly recommended.

       The  tool  has  two  main  modes of operation, without the -m option it
       attempts to optimize DWARF debugging information in each  given  object
       (executable  or  shared  library)  individually,  with the -m option it
       afterwards attempts to optimize even more  by  moving  DWARF  debugging
       information  entries  (DIEs), strings and macro descriptions duplicated
       in more than one object into a newly created ELF  ET_REL  object  whose
       filename  is  given  as  -m option argument.  The debug sections in the
       executables and shared libraries specified on the command line are then
       modified again, referring to the entities in the newly created object.

OPTIONS
       -m FILE --multifile FILE
              Multifile  mode.   After  processing  all  named executables and
              shared libraries, attempt to create  ELF  object  FILE  and  put
              debugging  information duplicated in more than one object there,
              afterwards optimize each named executable or shared library even
              further if possible.

       -h --hardlink
              Look  for  executables  or shared libraries hardlinked together,
              instead of rewriting them individually rewrite just one of  them
              and hardlink the rest to the first one again.

       -M NAME --multifile-name NAME
              Specify  the name of the common file that should be put into the
              .gnu_debugaltlink section  alongside  with  its  build  ID.   By
              default dwz puts there the argument of the -m option.

       -r --relative
              Specify  that  the  name  of  the common file to be put into the
              .gnu_debugaltlink section is supposed to be relative  path  from
              the directory containing the executable or shared library to the
              file named in the argument of the -m option.  Either  -M  or  -r
              option can be specified, but not both.

       -q --quiet
              Silence up some of the most common messages.

       -o FILE --output FILE
              This  option  instructs dwz not to overwrite the specified file,
              but instead store the new content into FILE.  Nothing is written
              if  dwz  exits with non-zero exit code.  Can be used only with a
              single executable or shared library (if there are  no  arguments
              at all, a.out is assumed).

       -l COUNT --low-mem-die-limit COUNT
              Handle  executables  or  shared  libraries  containing more than
              COUNT debugging information entries in their .debug_info section
              using  a  slower  and  more memory usage friendly mode and don't
              attempt to optimize that object in multifile mode.  The  default
              is 10 million DIEs.  There is a risk that for very large amounts
              of debugging information in a  single  shared  library  or  exe-
              cutable  there  might  not be enough memory (especially when dwz
              tool is 32-bit binary, it might run  out  of  available  virtual
              address space even sooner).

       -L COUNT --max-die-limit COUNT
              Don't  attempt  to optimize executables or shared libraries con-
              taining more than COUNT DIEs at all.  The default is 50  million
              DIEs.

       -? --help
              Print short help and exit.

       -v --version
              Print version number and short licensing notice and exit.

ARGUMENTS
       Command-line  arguments  should be the executables, shared libraries or
       their stripped to file separate debug information objects.

EXAMPLES
              $ dwz -m .dwz/foobar-1.2.debug -rh \
                bin/foo.debug bin/foo2.debug foo/lib/libbar.so.debug
       will  attempt  to  optimize  debugging  information  in  bin/foo.debug,
       bin/foo2.debug  and  lib/libbar.so.debug  (by  modifying  the  files in
       place) and when beneficial also will create .dwz/foobar-1.2.debug file.
       .gnu_debugaltlink  section  in  the  first  two  files  will  refer  to
       ../.dwz/foobar-1.2.debug  and  in  the  last  file  to  ../../.dwz/foo-
       bar-1.2.debug.    If   e.g.    bin/foo.debug  and  bin/foo2.debug  were
       hardlinked together initially, they will be hardlinked  again  and  for
       multifile  optimizations  considered  just as a single file rather than
       two.
              $ dwz -o foo.dwz foo
       will not modify foo but instead store the  ELF  object  with  optimized
       debugging information if successful into foo.dwz file it creates.
              $ dwz *.debug foo/*.debug
       will   attempt   to  optimize  debugging  information  in  *.debug  and
       foo/*.debug files, optimizing each file individually in place.
              $ dwz
       is equivalent to dwz a.out command.

SEE ALSO
       http://dwarfstd.org/doc/DWARF4.pdf , gdb(1).

AUTHORS
       Jakub Jelinek <jakub@redhat.com>.

                                 15 June 2012                           dwz(1)

Man(1) output converted with man2html
list of all man pages