NixOS / patchelf

A small utility to modify the dynamic linker and RPATH of ELF executables
GNU General Public License v3.0
3.48k stars 483 forks source link

`replace-needed.sh` test fails on 32-bit arm #551

Open ggardet opened 5 months ago

ggardet commented 5 months ago

Describe the bug replace-needed.sh test fails on 32-bit arm (armv6/7):

[   36s] FAIL: replace-needed.sh
[   36s] =======================
[   36s] 
[   36s] patching ELF file 'big-dynstr'
[   36s] replacing DT_NEEDED entry 'libfoo.so' with 'lf.so'
[   36s] resizing .dynstr ...
[   36s] keeping DT_NEEDED entry 'libgcc_s.so.1'
[   36s] keeping DT_NEEDED entry 'libc.so.6'
[   36s] found .gnu.version_r with 2 entries, strings in .dynstr
[   36s] keeping .gnu.version_r entry 'libgcc_s.so.1'
[   36s] keeping .gnu.version_r entry 'libc.so.6'
[   36s] replacing section '.dynstr' with size 223
[   36s] this is a dynamic library
[   36s] last page is 0x3000
[   36s] first page is 0x0
[   36s] needed space is 68560
[   36s] shifting new PT_LOAD segment by 61440 bytes to work around a Linux kernel bug
[   36s] rewriting section '.interp' from offset 0x154 (size 25) to offset 0x12000 (size 25)
[   36s] rewriting section '.note.gnu.build-id' from offset 0x170 (size 36) to offset 0x1201c (size 36)
[   36s] rewriting section '.note.ABI-tag' from offset 0x194 (size 32) to offset 0x12040 (size 32)
[   36s] rewriting section '.hash' from offset 0x1b4 (size 72) to offset 0x12060 (size 72)
[   36s] rewriting section '.dynstr' from offset 0x2e4 (size 217) to offset 0x120a8 (size 223)
[   36s] rewriting symbol table section 2
[   36s] rewriting symbol table section 31
[   36s] writing scratch/replace-needed/big-needed
[   36s] library long_long_very_long_libc.so.6 not found as NEEDED
[   36s] lf.so
[   36s] libgcc_s.so.1
[   36s] libc.so.6
[   36s] FAIL replace-needed.sh (exit status: 1)
[   36s] 
[   36s] SKIP: short-first-segment.sh
[   36s] ============================
[   36s] 
[   36s] skipping test: not supported on x86_64 Linux
[   36s] SKIP short-first-segment.sh (exit status: 77)
[   36s] 
[   36s] ============================================================================
[   36s] Testsuite summary for patchelf 0.18.0
[   36s] ============================================================================
[   36s] # TOTAL: 56
[   36s] # PASS:  53
[   36s] # SKIP:  2
[   36s] # XFAIL: 0
[   36s] # FAIL:  1
[   36s] # XPASS: 0
[   36s] # ERROR: 0
[   36s] ============================================================================

Steps To Reproduce

Run test on openSUSE Tumbleweed armv7.

Expected behavior

Test should pass.

patchelf --version output

0.18.0

Additional context