diff options
| author | DianQK <dianqk@dianqk.net> | 2024-06-19 21:32:18 +0800 |
|---|---|---|
| committer | DianQK <dianqk@dianqk.net> | 2024-06-19 22:33:59 +0800 |
| commit | 80e43c128cf24f143a1bf58ffa972e78633cf8e9 (patch) | |
| tree | c4d2a8d62df363042360b08c5c998dccbb33f717 /src/bootstrap | |
| parent | 4281c2c3d5b6fe4ef4c6cf659c20da42209f2289 (diff) | |
| download | rust-80e43c128cf24f143a1bf58ffa972e78633cf8e9.tar.gz rust-80e43c128cf24f143a1bf58ffa972e78633cf8e9.zip | |
patch an ELF file using `--add-rpath`
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/src/core/download.rs | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/bootstrap/src/core/download.rs b/src/bootstrap/src/core/download.rs index 2b11b8c3d4f..fd077ab2d7c 100644 --- a/src/bootstrap/src/core/download.rs +++ b/src/bootstrap/src/core/download.rs @@ -173,15 +173,10 @@ impl Config { } let mut patchelf = Command::new(nix_deps_dir.join("bin/patchelf")); - let rpath_entries = { - // ORIGIN is a relative default, all binary and dynamic libraries we ship - // appear to have this (even when `../lib` is redundant). - // NOTE: there are only two paths here, delimited by a `:` - let mut entries = OsString::from("$ORIGIN/../lib:"); - entries.push(t!(fs::canonicalize(nix_deps_dir)).join("lib")); - entries - }; - patchelf.args(&[OsString::from("--set-rpath"), rpath_entries]); + patchelf.args(&[ + OsString::from("--add-rpath"), + OsString::from(t!(fs::canonicalize(nix_deps_dir)).join("lib")), + ]); if !path_is_dylib(fname) { // Finally, set the correct .interp for binaries let dynamic_linker_path = nix_deps_dir.join("nix-support/dynamic-linker"); |
