]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Set BFD_DECOMPRESS when reading build-id debuglink
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 25 Jun 2024 07:45:22 +0000 (00:45 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 27 Jun 2024 21:22:25 +0000 (14:22 -0700)
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 <hjl.tools@gmail.com>
binutils/objdump.c
binutils/testsuite/binutils-all/objdump.exp

index 7182abdab98fe62fb4d91d66b233398a3504470c..324254658c609fa78ed8b1720736e1f9954f7a03 100644 (file)
@@ -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;
 
index 493e31b12815efa23a3b8a0081c8a3582517e940..7e29ebf0c5746bf044353280fd0178143e006d94 100644 (file)
@@ -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.