DWZ 0.15 released

Mark Wielaard mark@klomp.org
Fri Nov 4 01:06:37 GMT 2022

DWZ 0.15 has been released.

dwz - DWARF optimization and duplicate removal tool

  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 representation where possible and by reducing the
  amount of duplication using techniques from DWARF standard appendix
  E - creating DW_TAG_partial_unit compilation units (CUs) for
  duplicated information and using IDW_TAG_imported_unit to import it
  into each CU that needs it.

You can download dwz from the sourceware FTP server here:


The vital stats:

  Size    md5sum                            Name
  188KiB  f99770d7d176001951a592fdcb0a788c  dwz-0.15.tar.gz
  147KiB  d2867986d0df78bfbc22587628873fae  dwz-0.15.tar.xz

There is a web page for DWZ at:


DWZ 0.15 includes the following changes and enhancements:

* Uses xxHash hashing algorithm. A 8% ~ 14% speedup.

* Set endianity of multifile using -e, --multifile-endian.

* Set pointer size of multifile using -p, --multifile-pointer-size

* Process files in parallel using -j N --jobs N. The default is
  processors / 2.  Disabled when multifile is used.

* Prints abbrev or DIE offset for Unknown DWARF error messages.

* All testcases have been updated to work against the binutils 2.39.

= git shortlog =

Lv Ying (1):
  Fix handling readelf following links by default

Mark Wielaard (11):
  Mark and init shstrtab[_len] and const in optimize_multifile
  Workaround binutils readelf following and printing alt file.
  Print abbrev or DIE offset for Unknown DWARF error message.
  Remove double semicolon
  Always assign svalue when checking and reporting negative values
  Redirect stder in gdb-add-index.sh test
  do-release.sh: Create signed annotated tags
  gen-copyright-years.sh skip native.c
  Check -DXXH_INLINE_ALL works, otherwise link against libxxhash
  Add .note.GNU-stack in dwarf.exp generated files
  Bump version to 0.15

Martin Liška (6):
  Fix UBSAN reported for Libreoffice so files
  testsuite: verify directly merged DW_AT_declarations
  testsuite: remove leading spaces
  Use xxHash hashing algorithm.
  Use grep -E instead of egrep.
  Fix executable stack warning from linker

Tom de Vries (56):
  Add --devel-no-checksum-cycle-opt
  Add --devel-progress-mem
  Release process improvements
  Break up main
  Make some variables and functions static
  Remove USED and UNUSED annotations
  Fix ubsan triggered in gdb-add-index.sh
  Fix another reference from PU to CU for odr
  Handle reordered dup chains in create_import_tree
  Print cu_offset for --devel-dump-pus
  Add --devel-skip-producer
  Make main more readable
  [testsuite] Fix pr27463.sh on riscv64
  Factor out args.c and args.h
  Change files var in main to char **
  [testsuite] Handle readelf following links by default
  Make smaller-than.sh match dwz heuristic
  [testsuite] Remove smaller-than.sh test in pr24747.sh
  Factor out dwz_files_1
  Factor out dwz_with_low_mem
  [testsuite] Show error output in twice-multifile.sh
  Fix low-mem memory leak
  Fix memory leak in write_multifile
  Fix memory leak in build_abbrevs
  Move hardlink handling out of dwz function
  Fix uninitialized var in dwz_one_file
  Add check-valgrind
  Don't use argv[0] in usage
  Add -5 to usage header
  Add --multifile-pointer-size <n> and --multifile-endian <l|L|b|B>
  Process files in parallel
  Add -p auto and -e auto
  Factor out {encode,decode}_child_exit_status
  Run two-files-low-mem-die-limit-0.sh with -j1
  Add low_mem_p to struct file_result
  Factor out wait_child_exit
  Initialize pids in dwz_files_1
  Factor out wait_children_exit
  Use goto in dwz_files_1
  Do finalize-multifile in parallel
  Minimize struct file_result
  Calculate workset before serial/parallel code in dwz_files_1
  Fix incorrect res arg for wait_child_exit
  Add ret to struct file_result
  Handle skip_multifile in encode/decode_child_exit_status
  Apply multifile_force_{ptr_size,endian} ASAP
  Use vars to name parallel parts in dwz_files_1
  Enable parallel multifile with -e -p
  [testsuite] Fix handling of missing section in smaller-than.sh
  Ensure help message lines end with dot
  Factor out common flags between dwz and dwz-for-test
  Eliminate sed usage in building dwz-for-test
  Add util.h
  Factor out pool.{c,h}
  Add -p native and -e native
  Introduce struct pipe

More information about the Gdb mailing list