mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-04-19 14:56:46 +02:00
https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html * base.crt_static_default from linux_musl.rs in musl-fix-linux_musl_base.patch, was moved to the indivdual targets (which we already do in alpine-target.patch)9c37c14aa2
* Target JSON (de)serialization was moved from compiler/rustc_target/src/spec/mod.rs to compiler/rustc_target/src/spec/json.rs (need-rpath.patch)77080d8eb3
64 lines
2.9 KiB
Diff
64 lines
2.9 KiB
Diff
From: Shiz <hi@shiz.me>
|
|
Date: Thu, 20 Aug 2017 01:48:22 +0200
|
|
Subject: [PATCH] Add need_rpath target option to force RPATH generation
|
|
|
|
This adds a `need_rpath` option to the target options in order to implicitly
|
|
have the equivalent of `-C rpath` specified by default for final products
|
|
(executables and dynamic libraries), so that RPATHs are always added.
|
|
|
|
We have to skip this step in the bootstrap phase as it does its own manual
|
|
RPATH additions, but unfortunately there's no clean way to detect this.
|
|
As such, we have to resort to checking the `RUSTC_BOOTSTRAP` variable.
|
|
Hacky hacky!
|
|
|
|
--- a/compiler/rustc_target/src/spec/mod.rs
|
|
+++ b/compiler/rustc_target/src/spec/mod.rs
|
|
@@ -2349,6 +2349,8 @@ pub struct TargetOptions {
|
|
pub allows_weak_linkage: bool,
|
|
/// Whether the linker support rpaths or not. Defaults to false.
|
|
pub has_rpath: bool,
|
|
+ /// Whether to force rpath support on by default. Defaults to false.
|
|
+ pub need_rpath: bool,
|
|
/// Whether to disable linking to the default libraries, typically corresponds
|
|
/// to `-nodefaultlibs`. Defaults to true.
|
|
pub no_default_libraries: bool,
|
|
@@ -2716,6 +2718,7 @@ fn default() -> TargetOptions {
|
|
default_dwarf_version: 4,
|
|
allows_weak_linkage: true,
|
|
has_rpath: false,
|
|
+ need_rpath: false,
|
|
no_default_libraries: true,
|
|
position_independent_executables: false,
|
|
static_position_independent_executables: false,
|
|
--- a/compiler/rustc_target/src/spec/json.rs
|
|
+++ b/compiler/rustc_target/src/spec/json.rs
|
|
@@ -574,6 +574,7 @@ macro_rules! key {
|
|
key!(default_dwarf_version, u32);
|
|
key!(allows_weak_linkage, bool);
|
|
key!(has_rpath, bool);
|
|
+ key!(need_rpath, bool);
|
|
key!(no_default_libraries, bool);
|
|
key!(position_independent_executables, bool);
|
|
key!(static_position_independent_executables, bool);
|
|
@@ -749,6 +750,7 @@ macro_rules! target_option_val {
|
|
target_option_val!(default_dwarf_version);
|
|
target_option_val!(allows_weak_linkage);
|
|
target_option_val!(has_rpath);
|
|
+ target_option_val!(need_rpath);
|
|
target_option_val!(no_default_libraries);
|
|
target_option_val!(position_independent_executables);
|
|
target_option_val!(static_position_independent_executables);
|
|
--- a/compiler/rustc_codegen_ssa/src/back/link.rs
|
|
+++ b/compiler/rustc_codegen_ssa/src/back/link.rs
|
|
@@ -2166,7 +2166,10 @@ fn add_rpath_args(
|
|
// FIXME (#2397): At some point we want to rpath our guesses as to
|
|
// where extern libraries might live, based on the
|
|
// add_lib_search_paths
|
|
- if sess.opts.cg.rpath {
|
|
+ // XXX: hacky hacky
|
|
+ let bootstrap = env::var("RUSTC_BOOTSTRAP").is_ok();
|
|
+ if !bootstrap && !sess.crt_static(None) &&
|
|
+ (sess.opts.cg.rpath || sess.target.options.need_rpath) {
|
|
let libs = codegen_results
|
|
.crate_info
|
|
.used_crates
|