diff options
| author | Johannes Löthberg <johannes@kyriasis.com> | 2017-07-14 22:06:36 +0200 |
|---|---|---|
| committer | Johannes Löthberg <johannes@kyriasis.com> | 2017-07-14 22:19:20 +0200 |
| commit | ecf3f6d4def2b2aa4b268ed50a7799ce40423bc0 (patch) | |
| tree | 86ee2d1b6295180424345ffed9a87d0d4b8fb8df | |
| parent | 94b9cc90fb72e6be42b14559c586e3490385d045 (diff) | |
Make partial RELRO default on ppc64 due to segfault
On at least RHEL6 there is a segfault caused by the older ld.so version when BIND_NOW is used, so use partial RELRO by default on ppc64 architectures for now. Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
| -rw-r--r-- | src/librustc_back/target/powerpc64_unknown_linux_gnu.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/librustc_back/target/powerpc64_unknown_linux_gnu.rs b/src/librustc_back/target/powerpc64_unknown_linux_gnu.rs index 718a79a685e..7b038ac0073 100644 --- a/src/librustc_back/target/powerpc64_unknown_linux_gnu.rs +++ b/src/librustc_back/target/powerpc64_unknown_linux_gnu.rs @@ -9,7 +9,7 @@ // except according to those terms. use LinkerFlavor; -use target::{Target, TargetResult}; +use target::{Target, TargetResult, RelroLevel}; pub fn target() -> TargetResult { let mut base = super::linux_base::opts(); @@ -17,6 +17,10 @@ pub fn target() -> TargetResult { base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string()); base.max_atomic_width = Some(64); + // ld.so in at least RHEL6 on ppc64 has a bug related to BIND_NOW, so only enable partial RELRO + // for now. https://github.com/rust-lang/rust/pull/43170#issuecomment-315411474 + base.relro_level = RelroLevel::Partial; + // see #36994 base.exe_allocation_crate = None; |
