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

            Bug ID: 32946
           Summary: strip corrupts file if e_phoff != 0x40
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: cbytensky at gmail dot com
  Target Milestone: ---

Created attachment 16075
  --> https://sourceware.org/bugzilla/attachment.cgi?id=16075&action=edit
Sample program with e_phoff != 0x40 that prints `Hello, syscall!`

Overview:

The strip utility currently assumes that the program header table always begins
at offset 0x40 in an ELF64 file. If e_phoff in the ELF header is set to any
other value, strip will adjust section load addresses incorrectly and corrupt
the binary.

Steps to Reproduce:

1) Run strip on sample program from attachment.

Actual Results:

strip emits the following warnings:

strip: stzHDWTq: section .text lma 0x40 adjusted to 0xb0
strip: stzHDWTq: section .data lma 0x55 adjusted to 0xc5

After this, the stripped binary is corrupted (it no longer executes and emits
`Illegal instruction` error).

Expected Results:

The stripped binary should remain valid and executable and should emit `Hello,
syscall!` message.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to