https://sourceware.org/bugzilla/show_bug.cgi?id=24321

            Bug ID: 24321
           Summary: Objcopy "--only-keep-debug" generates Bad Offset in
                    LOAD sections for lld built binaries
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: manojgupta at google dot com
  Target Milestone: ---

We discovered that objcopy creates bad Offsets in LOAD section when generating
split-debug files for lld built binaries. This is breaking tools e.g Linux Perf
and more tools that rely on the splitdebug file for symbolization.

The shared file has a tblgen binary that was built with LLD.

https://drive.google.com/file/d/1PTlbzG7nqdu_TLRlpMdKasuBcG0r0LIu/view?usp=sharing

  Type           Offset             VirtAddr           PhysAddr
$ readelf -l tblgen/tblgen|grep LOAD
  LOAD           0x0000000000000000 0x0000000000200000 0x0000000000200000
  LOAD           0x0000000000722000 0x0000000000922000 0x0000000000922000

# Generate a split-debug debug info file with objcopy
$objcopy --only-keep-debug tblgen tblgen.dbg

$ readelf -l tblgen.dbg|grep LOAD
  LOAD           0x0000000000000000 0x0000000000200000 0x0000000000200000
  LOAD           0x0000000000001000 0x0000000000922000 0x0000000000922000

The Offset field for second LOAD entry is BAD, it should have been
0x0000000000722000.

If I use eu-strip from elfutils, the offsets are correct.

$ eu-strip --strip-debug tblgen -f tblgen.debug

$ readelf -l tblgen.debug |grep LOAD
  LOAD           0x0000000000000000 0x0000000000200000 0x0000000000200000
  LOAD           0x0000000000722000 0x0000000000922000 0x0000000000922000

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to