Hi,

On 05/01/15 00:24, Moritz Ulrich wrote:

> $ patchelf ./s3d.run 
> patchelf: patchelf.cc:292: void ElfFile<Elf_Ehdr, Elf_Phdr, Elf_Shdr, 
> Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym>::parse() [with Elf_Ehdr = Elf64_Ehdr; 
> Elf_Phdr = Elf64_Phdr; Elf_Shdr = Elf64_Shdr; Elf_Addr = long unsigned int; 
> Elf_Off = long unsigned int; Elf_Dyn = Elf64_Dyn; Elf_Sym = Elf64_Sym]: 
> Assertion `shstrtabIndex < shdrs.size()' failed.
> Aborted

The error message could be more elegant, but the main issue is that patchelf
cannot work on static binaries because there is nothing to patch: no ELF
interpreter section, no DT_NEEDED entries, etc.

> Setting LD_PRELOAD with pkgs.libredirect doesn't have any effect. (Is
> this expected?)

Same thing, LD_PRELOAD doesn't work with static binaries because it affects the
dynamic linker, which doesn't get used for static executables.

If there is a dynamic executable hidden inside the static executable via UPX
compression or something similar, I guess you need to decompress it first and
then apply patchelf.

-- 
Eelco Dolstra | LogicBlox, Inc. | http://nixos.org/~eelco/
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to