compress .gnu.debuglto_.debug_* sections if requested
authorMartin Liska <mliska@suse.cz>
Thu, 29 Sep 2022 12:10:30 +0000 (14:10 +0200)
committerAlan Modra <amodra@gmail.com>
Tue, 4 Oct 2022 08:06:40 +0000 (18:36 +1030)
commit7afbac7ddd7299491a88341149bc72b38173447a
tree3ed76f9bc2d432a288e26691f32646ad06913d3a
parentbb996692bd9654d6f2345ab65742796d5fde6829
compress .gnu.debuglto_.debug_* sections if requested

Right now, when using LTO, the intermediate object files do contain
debug info in sections starting with .gnu.debuglto_ prefix and are
not compressed when --compress-debug-sections is used.

It's a mistake and we can save quite some disk space. The following
example comes from tramp3d when the corresponding LTO sections
are compressed with zlib:

$ bloaty tramp3d-v4-v2.o -- tramp3d-v4.o
    FILE SIZE        VM SIZE
 --------------  --------------
   +83%     +10  [ = ]       0    [Unmapped]
 -68.0%    -441  [ = ]       0    .gnu.debuglto_.debug_line
 -52.3%    -759  [ = ]       0    .gnu.debuglto_.debug_line_str
 -62.4% -3.24Ki  [ = ]       0    .gnu.debuglto_.debug_abbrev
 -64.8% -1.12Mi  [ = ]       0    .gnu.debuglto_.debug_info
 -88.8% -4.58Mi  [ = ]       0    .gnu.debuglto_.debug_str
 -27.7% -5.70Mi  [ = ]       0    TOTAL

bfd/ChangeLog:

* elf.c (_bfd_elf_make_section_from_shdr): Compress all debug
  info sections.

gas/ChangeLog:

* write.c (compress_debug): Compress also ".gnu.debuglto_.debug_"
if the compression algorithm is different from zlib-gnu.
bfd/elf.c
gas/write.c