On 5 April 2016 at 19:33, James Cowgill <[email protected]> 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

