Auto merge of #75406 - mati865:mingw-aslr, r=Mark-Simulacrum
Enable ASLR for windows-gnu Fixes https://github.com/rust-lang/rust/issues/16514 Fixes https://github.com/rust-lang/rust/issues/16593 Fixes https://github.com/rust-lang/rust/issues/17684 Passes the tests for me with x86_64 toolchain.
This commit is contained in:
commit
d65c08e9cc
@ -11,6 +11,10 @@ pub fn opts() -> TargetOptions {
|
||||
"-fno-use-linker-plugin".to_string(),
|
||||
// Always enable DEP (NX bit) when it is available
|
||||
"-Wl,--nxcompat".to_string(),
|
||||
// Enable ASLR
|
||||
"-Wl,--dynamicbase".to_string(),
|
||||
// ASLR will rebase it anyway so leaving that option enabled only leads to confusion
|
||||
"-Wl,--disable-auto-image-base".to_string(),
|
||||
],
|
||||
);
|
||||
|
||||
|
@ -3,7 +3,10 @@ use crate::spec::{LinkerFlavor, LldFlavor, Target};
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::windows_gnu_base::opts();
|
||||
base.cpu = "x86-64".to_string();
|
||||
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
|
||||
let gcc_pre_link_args = base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap();
|
||||
gcc_pre_link_args.push("-m64".to_string());
|
||||
// Use high-entropy 64 bit address space for ASLR
|
||||
gcc_pre_link_args.push("-Wl,--high-entropy-va".to_string());
|
||||
base.pre_link_args
|
||||
.insert(LinkerFlavor::Lld(LldFlavor::Ld), vec!["-m".to_string(), "i386pep".to_string()]);
|
||||
base.max_atomic_width = Some(64);
|
||||
|
@ -3,7 +3,10 @@ use crate::spec::{LinkerFlavor, LldFlavor, Target};
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::windows_uwp_gnu_base::opts();
|
||||
base.cpu = "x86-64".to_string();
|
||||
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
|
||||
let gcc_pre_link_args = base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap();
|
||||
gcc_pre_link_args.push("-m64".to_string());
|
||||
// Use high-entropy 64 bit address space for ASLR
|
||||
gcc_pre_link_args.push("-Wl,--high-entropy-va".to_string());
|
||||
base.pre_link_args
|
||||
.insert(LinkerFlavor::Lld(LldFlavor::Ld), vec!["-m".to_string(), "i386pep".to_string()]);
|
||||
base.max_atomic_width = Some(64);
|
||||
|
Loading…
Reference in New Issue
Block a user