-
-
Notifications
You must be signed in to change notification settings - Fork 485
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
patchelf --set-interpreter
and patchelf --set-rpath
depend on the order (at least on i686-linux)
#524
Comments
I was about to file a new issue and then found this one.... which is exactly what I've observed too (in a slightly different context). Let me describe. With their usual wisdom and carelessness, Microsoft have decided for their latest VS Code remote development package to require glibc 2.28, and that requirement arrives a few months before the end of life for distributions such as CentOs 7, RHEL 7 or SLES 12 that are based on older glibc. The latest VS Code server can be downloaded from here ( To avoid the limitations from my aging linux distribution, I also downloaded glibc 2.34 and built and installed it on my local machine. At last, I decided to use this trick to try and start the VS Code server using glibc 2.34... After a little bit of time and a lot of luck, I found that only following would produce a result that works:
However, as reported in the OP, the same steps in the reverse order, or combined in a single invokation of |
To add some information, according to issue 531, there is no problem with version 0.15.0. I tried using version 0.15 and it does work. |
Some versions of patchelf have a bug[0] which corrupts binaries making them unusable, work around it. [0] NixOS/patchelf#524 Signed-off-by: Thomas Weißschuh <[email protected]>
Some versions of patchelf have a bug[0] which corrupts binaries making them unusable, work around it. [0] NixOS/patchelf#524 Signed-off-by: Thomas Weißschuh <[email protected]> Reviewed-by: Benedikt Spranger <[email protected]>
Describe the bug
patchelf --set-interpreter
followingpatchelf --set-rpath
may produce broken executablespatchelf --set-rpath
followingpatchelf --set-interpreter
works well for the same filesContext
The latest released LDC for i686-linux is quite old, much older than for 64-bit platform.
Upstream's position is understandable: x86_64-compiler is able to produce i686 executables.
But as NixOS has no x86_64->i686 cross compilation we need a i686-linux compiler.
Starting with so old one using it for bootstrapping recent versions: binary released
1.2.0
is able to bootstrap at most1.29.0
(relatively modern) which is able to bootstrap the latest1.34.0
The executable of the latest LDC for i686-linux is
https://github.com/ldc-developers/ldc/releases/download/v1.2.0/ldc2-1.2.0-linux-x86.tar.xz
Steps To Reproduce
Put
1.2.0
here https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/compilers/ldc/bootstrap.nix (there is no newer binary anyway) and buildpkgsi686Linux.ldc
autoPatchelfHook
produces broken executables (which crash immediately upon start)It was discovered that removing
autoPatchelfHook
and replacing it withdoes produce valid executables
but
produces invalid ones
As a side note I could say that putting both
--set-interpreter
and--set-rpath
into a singlepatchelf
run always lead to broken executables, regardless on their order.Expected behavior
expected that swapping
patchelf --set-interpreter
andpatchelf --set-rpath
would produce the same.if there is a point for them to behave differently depending on the order,
autoPatchelfHook
should be aware and use the only valid order, i.e. always usepatchelf --set-rpath
beforepatchelf --set-interpreter
and never combine them into a single runpatchelf --version
output0.18.0
The text was updated successfully, but these errors were encountered: