weird elf header issues, is it binutils or my linker script?
Chris Friesen
chris.friesen at genband.com
Tue Apr 2 02:02:24 EST 2013
On 03/29/2013 06:01 AM, Segher Boessenkool wrote:
>> PHDRS
>> {
>> headers PT_PHDR PHDRS ;
>> interp PT_INTERP ;
>> <snip>
>> }
>>
>> SECTIONS
>> {
>> /* Read-only sections, merged into text segment: */
>> PROVIDE (__executable_start = 0xf2000000); . = 0xf2000000 +
>> SIZEOF_HEADERS;
>> .interp : { *(.interp) } :text :interp
>> <snip>
>> }
>>
>> So I'm wondering...is this something wrong with our linker script,
>> or is there a bug in our binutils? I'm no linker expert, but the
>> interpreter sections in the script seem to match the binutils
>> documentation that I found and I don't see anything that would be
>> messing with the length.
>>
>> Any suggestions on where to look?
>
> It looks like your .interp input section lacks the required
> zero-termination.
That's the weird thing....the actual interpreter string "/lib/ld.so.1"
is in fact null-terminated, but the length in the elf headers is
incorrect (0x30 instead of 0xd) and so when the kernel checks the last
character in the array it sees a nonzero value.
What I don't understand is where the "/lib/ld.so.1" string is coming
from and how the length gets set to the invalid value.
Chris
More information about the Linuxppc-dev
mailing list