Re: Help on build failure of patchelf on mips variants
On 5 April 2016 at 19:33, James Cowgill <jcowgill@debian.org> wrote:
> Hi,
>
> On Tue, 2016-04-05 at 16:13 -0300, Felipe Sateler wrote:
>> I'm currently at a loss on why does patchelf fail to build (or rather,
>> it fails its testsuite) on all mips variants[1].
>>
>> Patchelf modifies ELF binaries, to add/remove RPATH and other
>> sections. On all mips variants, some tests fail. From what I can tell,
>> the loader complains that the new (altered) file has an invalid
>> MIPS.abiflags section, and yet from what I can tell both the original
>> and altered binaries have the same (as reported by readelf).
>>
>> I have printed some more logs at the upstream issue tracker:
>> https://github.com/NixOS/patchelf/issues/82
>>
>> Any help would be appreciated. I'd rather not remove patchelf from mips.
>
> I had a go at using patchelf on a hello world executable and the
> executable immediately segfaulted.
What command did you use?
> From 'readelf -e':
>
> Before:
> [Nr] Name Type Addr Off Size ES Flg Lk Inf Al
> [ 3] .MIPS.abiflags MIPS_ABIFLAGS 00400188 000188 000018 18 A 0 0 8
>
> Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
> ABIFLAGS 0x000188 0x00400188 0x00400188 0x00018 0x00018 R 0x8
>
> After:
> [Nr] Name Type Addr Off Size ES Flg Lk Inf Al
> [ 1] .MIPS.abiflags MIPS_ABIFLAGS 003fc174 000174 000018 18 A 0 0 4
>
> Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
> ABIFLAGS 0x004188 0x00400188 0x00400188 0x00018 0x00018 R 0x8
>
> Here the ABIFLAGS segment (this is a special MIPS specific segment
> type) is wrong after running patchelf. The offset and virtaddr are not
> the same as the values used in the section header. Infact they don't
> seem to point to any section at all. This is probably causing the
> dynamic linker to read some garbage, causing the segfault.
Thanks, that is indeed different on each executable.
>
> If I recall, the ABIFLAGS were first read by glibc 2.22 which might be
> why it only recently started failing.
That would explain it, yes. Thanks for this datum.
> Also this page will be useful for anyone trying to fix this bug. It
> contains the "spec" for the abiflags section:
Patchelf is not supposed to touch sections it doesn't modify. Because
patchelf reorders sections, maybe it needs to modify that too.
--
Saludos,
Felipe Sateler
Reply to: