From: H.J. Lu Date: Tue, 25 Jun 2024 07:45:22 +0000 (-0700) Subject: Set BFD_DECOMPRESS when reading build-id debuglink X-Git-Tag: binutils-2_43~258 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67b1d28b5214bd5dfff1817a1771d0435ff44591;p=thirdparty%2Fbinutils-gdb.git Set BFD_DECOMPRESS when reading build-id debuglink We should set BFD_DECOMPRESS to decompress sections unless dumping the section contents when reading build-id debuglink. PR binutils/31925 * objdump.c (open_debug_file): Set BFD_DECOMPRESS to decompress sections unless dumping the section contents. * testsuite/binutils-all/objdump.exp (test_build_id_debuglink): Add a compress option. Run test_build_id_debuglink with none and zlib. Signed-off-by: H.J. Lu --- diff --git a/binutils/objdump.c b/binutils/objdump.c index 7182abdab98..324254658c6 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -4446,6 +4446,10 @@ open_debug_file (const char * pathname) if (data == NULL) return NULL; + /* Decompress sections unless dumping the section contents. */ + if (!dump_section_contents || decompressed_dumps) + data->flags |= BFD_DECOMPRESS; + if (! bfd_check_format (data, bfd_object)) return NULL; diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp index 493e31b1281..7e29ebf0c57 100644 --- a/binutils/testsuite/binutils-all/objdump.exp +++ b/binutils/testsuite/binutils-all/objdump.exp @@ -598,7 +598,7 @@ if { ![is_elf_format] } then { file_on_host delete $output } -proc test_build_id_debuglink {} { +proc test_build_id_debuglink {option} { global srcdir global subdir global env @@ -608,13 +608,13 @@ proc test_build_id_debuglink {} { global CFLAGS_FOR_TARGET global exe - set test "build-id-debuglink" + set test "build-id-debuglink ($option)" # Use a fixed build-id. if { [info exists CFLAGS_FOR_TARGET] } { set save_CFLAGS_FOR_TARGET $CFLAGS_FOR_TARGET } - set CFLAGS_FOR_TARGET "-g -Wl,--build-id=0x12345678abcdef01" + set CFLAGS_FOR_TARGET "-g -Wl,--build-id=0x12345678abcdef01,--compress-debug-sections=$option" if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog${exe} executable debug] != "" } { unsupported "$test (build)" @@ -676,7 +676,8 @@ proc test_build_id_debuglink {} { } if {[is_elf_format]} then { - test_build_id_debuglink + test_build_id_debuglink none + test_build_id_debuglink zlib } # Test objdump -Wk on a file containing debug links.