diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs index 636b3984117..56b845c3049 100644 --- a/src/librustc_trans/back/link.rs +++ b/src/librustc_trans/back/link.rs @@ -1014,7 +1014,9 @@ fn link_args(cmd: &mut Linker, RelroLevel::Partial => { cmd.partial_relro(); }, - RelroLevel::Off => {}, + RelroLevel::Off => { + cmd.no_relro(); + }, } // Pass optimization flags down to the linker. diff --git a/src/librustc_trans/back/linker.rs b/src/librustc_trans/back/linker.rs index 3fe667f1543..9bd7d83a191 100644 --- a/src/librustc_trans/back/linker.rs +++ b/src/librustc_trans/back/linker.rs @@ -113,8 +113,9 @@ pub trait Linker { fn gc_sections(&mut self, keep_metadata: bool); fn position_independent_executable(&mut self); fn no_position_independent_executable(&mut self); - fn partial_relro(&mut self); fn full_relro(&mut self); + fn partial_relro(&mut self); + fn no_relro(&mut self); fn optimize(&mut self); fn debuginfo(&mut self); fn no_default_libraries(&mut self); @@ -188,8 +189,9 @@ impl<'a> Linker for GccLinker<'a> { fn add_object(&mut self, path: &Path) { self.cmd.arg(path); } fn position_independent_executable(&mut self) { self.cmd.arg("-pie"); } fn no_position_independent_executable(&mut self) { self.cmd.arg("-no-pie"); } - fn partial_relro(&mut self) { self.linker_arg("-z,relro"); } fn full_relro(&mut self) { self.linker_arg("-z,relro,-z,now"); } + fn partial_relro(&mut self) { self.linker_arg("-z,relro"); } + fn no_relro(&mut self) { self.linker_arg("-z,norelro"); } fn build_static_executable(&mut self) { self.cmd.arg("-static"); } fn args(&mut self, args: &[String]) { self.cmd.args(args); } @@ -452,11 +454,15 @@ impl<'a> Linker for MsvcLinker<'a> { // noop } + fn full_relro(&mut self) { + // noop + } + fn partial_relro(&mut self) { // noop } - fn full_relro(&mut self) { + fn no_relro(&mut self) { // noop } @@ -664,11 +670,15 @@ impl<'a> Linker for EmLinker<'a> { // noop } + fn full_relro(&mut self) { + // noop + } + fn partial_relro(&mut self) { // noop } - fn full_relro(&mut self) { + fn no_relro(&mut self) { // noop } @@ -829,10 +839,13 @@ impl Linker for WasmLd { fn position_independent_executable(&mut self) { } + fn full_relro(&mut self) { + } + fn partial_relro(&mut self) { } - fn full_relro(&mut self) { + fn no_relro(&mut self) { } fn build_static_executable(&mut self) {