diff options
author | Shiz <hi@shiz.me> | 2017-04-16 16:55:05 +0000 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-04-21 01:44:33 +0200 |
commit | 3b034a254fa89558cf04d8e54ee6d01f28bdf85b (patch) | |
tree | 22cc8ccc463991e1aa2b89c37c5ef436f77898c7 /testing/rust/static-pie.patch | |
parent | 9e94cc5fbd98ff048290548c2077ef0ce3be3c96 (diff) | |
download | aports-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.patch | 31 |
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); |