Skip to content
Snippets Groups Projects
  • Fangrui Song's avatar
    2cac01e3
    binutils, gdb: support zstd compressed debug sections · 2cac01e3
    Fangrui Song authored
    PR29397 PR29563: Add new configure option --with-zstd which defaults to
    auto.  If pkgconfig/libzstd.pc is found, define HAVE_ZSTD and support
    zstd compressed debug sections for most tools.
    
    * bfd: for addr2line, objdump --dwarf, gdb, etc
    * gas: support --compress-debug-sections=zstd
    * ld: support ELFCOMPRESS_ZSTD input and --compress-debug-sections=zstd
    * objcopy: support ELFCOMPRESS_ZSTD input for
      --decompress-debug-sections and --compress-debug-sections=zstd
    * gdb: support ELFCOMPRESS_ZSTD input.  The bfd change references zstd
      symbols, so gdb has to link against -lzstd in this patch.
    
    If zstd is not supported, ELFCOMPRESS_ZSTD input triggers an error.  We
    can avoid HAVE_ZSTD if binutils-gdb imports zstd/ like zlib/, but this
    is too heavyweight, so don't do it for now.
    
    ```
    % ld/ld-new a.o
    ld/ld-new: a.o: section .debug_abbrev is compressed with zstd, but BFD is not built with zstd support
    ...
    
    % ld/ld-new a.o --compress-debug-sections=zstd
    ld/ld-new: --compress-debug-sections=zstd: ld is not built with zstd support
    
    % binutils/objcopy --compress-debug-sections=zstd a.o b.o
    binutils/objcopy: --compress-debug-sections=zstd: binutils is not built with zstd support
    
    % binutils/objcopy b.o --decompress-debug-sections
    binutils/objcopy: zstd.o: section .debug_abbrev is compressed with zstd, but BFD is not built with zstd support
    ...
    ```
    2cac01e3
    History
    binutils, gdb: support zstd compressed debug sections
    Fangrui Song authored
    PR29397 PR29563: Add new configure option --with-zstd which defaults to
    auto.  If pkgconfig/libzstd.pc is found, define HAVE_ZSTD and support
    zstd compressed debug sections for most tools.
    
    * bfd: for addr2line, objdump --dwarf, gdb, etc
    * gas: support --compress-debug-sections=zstd
    * ld: support ELFCOMPRESS_ZSTD input and --compress-debug-sections=zstd
    * objcopy: support ELFCOMPRESS_ZSTD input for
      --decompress-debug-sections and --compress-debug-sections=zstd
    * gdb: support ELFCOMPRESS_ZSTD input.  The bfd change references zstd
      symbols, so gdb has to link against -lzstd in this patch.
    
    If zstd is not supported, ELFCOMPRESS_ZSTD input triggers an error.  We
    can avoid HAVE_ZSTD if binutils-gdb imports zstd/ like zlib/, but this
    is too heavyweight, so don't do it for now.
    
    ```
    % ld/ld-new a.o
    ld/ld-new: a.o: section .debug_abbrev is compressed with zstd, but BFD is not built with zstd support
    ...
    
    % ld/ld-new a.o --compress-debug-sections=zstd
    ld/ld-new: --compress-debug-sections=zstd: ld is not built with zstd support
    
    % binutils/objcopy --compress-debug-sections=zstd a.o b.o
    binutils/objcopy: --compress-debug-sections=zstd: binutils is not built with zstd support
    
    % binutils/objcopy b.o --decompress-debug-sections
    binutils/objcopy: zstd.o: section .debug_abbrev is compressed with zstd, but BFD is not built with zstd support
    ...
    ```