aboutsummaryrefslogtreecommitdiffstats
path: root/testing/rust/static-pie.patch
diff options
context:
space:
mode:
authorShiz <hi@shiz.me>2017-04-16 16:55:05 +0000
committerJakub Jirutka <jakub@jirutka.cz>2017-04-21 01:44:33 +0200
commit3b034a254fa89558cf04d8e54ee6d01f28bdf85b (patch)
tree22cc8ccc463991e1aa2b89c37c5ef436f77898c7 /testing/rust/static-pie.patch
parent9e94cc5fbd98ff048290548c2077ef0ce3be3c96 (diff)
downloadaports-3b034a254fa89558cf04d8e54ee6d01f28bdf85b.tar.bz2
aports-3b034a254fa89558cf04d8e54ee6d01f28bdf85b.tar.xz
testing/rust: factor out fully static support from static PIE support
Diffstat (limited to 'testing/rust/static-pie.patch')
-rw-r--r--testing/rust/static-pie.patch31
1 files changed, 29 insertions, 2 deletions
diff --git a/testing/rust/static-pie.patch b/testing/rust/static-pie.patch
index 90d8496ecd..babfbfaf7f 100644
--- a/testing/rust/static-pie.patch
+++ b/testing/rust/static-pie.patch
@@ -72,12 +72,39 @@ library, just like static binaries, but more secure.
post_link_objects: Vec::new(),
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
-@@ -854,7 +854,7 @@
+@@ -846,15 +846,12 @@
+
+ if crate_type == config::CrateTypeExecutable &&
+ t.options.position_independent_executables {
+- let empty_vec = Vec::new();
+ let empty_str = String::new();
+- let args = sess.opts.cg.link_args.as_ref().unwrap_or(&empty_vec);
+- let more_args = &sess.opts.cg.link_arg;
+- let mut args = args.iter().chain(more_args.iter()).chain(used_link_args.iter());
let relocation_model = sess.opts.cg.relocation_model.as_ref()
.unwrap_or(&empty_str);
++ let static_pie = t.options.static_position_independent_executables;
if (t.options.relocation_model == "pic" || *relocation_model == "pic")
- && !args.any(|x| *x == "-static") {
-+ && (t.options.static_position_independent_executables || !args.any(|x| *x == "-static")) {
++ && (static_pie || !sess.fully_static()) {
cmd.position_independent_executable();
}
}
+--- a/src/librustc_back/target/mod.rs
++++ b/src/librustc_back/target/mod.rs
+@@ -612,6 +612,7 @@
+ key!(has_rpath, bool);
+ key!(no_default_libraries, bool);
+ key!(position_independent_executables, bool);
++ key!(static_position_independent_executables, bool);
+ key!(archive_format);
+ key!(allow_asm, bool);
+ key!(custom_unwind_resume, bool);
+@@ -776,6 +777,7 @@
+ target_option_val!(has_rpath);
+ target_option_val!(no_default_libraries);
+ target_option_val!(position_independent_executables);
++ target_option_val!(static_position_independent_executables);
+ target_option_val!(archive_format);
+ target_option_val!(allow_asm);
+ target_option_val!(custom_unwind_resume);