Hide Forgot
Created attachment 493297 [details] .tar.xz of ld and ld.debug Description of problem: I wanted to merge binary and its .debug from Brew and I cannot. Version-Release number of selected component (if applicable): elfutils-0.152-1.el6.x86_64 binutils-2.20.51.0.2-5.17.el6.x86_64 How reproducible: Always. Steps to Reproduce: eu-unstrip /tmp/ld /tmp/ld.debug Actual results: eu-unstrip: '/tmp/ld' and '/tmp/ld.debug' do not seem to match Expected results: /tmp/ld containing both the code and the symbols. Additional info: http://download.devel.redhat.com/brewroot/packages/binutils/2.20.51.0.2/5.17.el6/x86_64/binutils-2.20.51.0.2-5.17.el6.x86_64.rpm http://download.devel.redhat.com/brewroot/packages/binutils/2.20.51.0.2/5.17.el6/x86_64/binutils-debuginfo-2.20.51.0.2-5.17.el6.x86_64.rpm
EI_OSABI field of the debug file has value of 3 (Linux), in the stripped file it's 0 (UNIX - System V). I think there was a fix recently regarding the ABI value in ELF file, so what happens might be that strip doesn't copy the header properly.
The problem is in binutils' strip, which is run as part of brp-strip-comment-note. This zeroes the EI_OSABI value in ELF header. Only non-debuginfo files are stripped this way, which explains why it can be here and not there. # file ble ble: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped # strip -R .comment ble # file ble ble: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
# rpm -q binutils binutils-2.20.51.0.2-5.19.el6.x86_64
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2011-1523.html