Skip to content

Commit 0ad3da0

Browse files
committed
Enable ASLR for windows-gnu
1 parent 8ed5cb5 commit 0ad3da0

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

compiler/rustc_target/src/spec/windows_gnu_base.rs

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ pub fn opts() -> TargetOptions {
1111
"-fno-use-linker-plugin".to_string(),
1212
// Always enable DEP (NX bit) when it is available
1313
"-Wl,--nxcompat".to_string(),
14+
// Enable ASLR
15+
"-Wl,--dynamicbase".to_string(),
16+
// ASLR will rebase it anyway so leaving that option enabled only leads to confusion
17+
"-Wl,--disable-auto-image-base".to_string(),
1418
],
1519
);
1620

compiler/rustc_target/src/spec/x86_64_pc_windows_gnu.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ use crate::spec::{LinkerFlavor, LldFlavor, Target, TargetResult};
33
pub fn target() -> TargetResult {
44
let mut base = super::windows_gnu_base::opts();
55
base.cpu = "x86-64".to_string();
6-
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
6+
let gcc_pre_link_args = base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap();
7+
gcc_pre_link_args.push("-m64".to_string());
8+
// Use high-entropy 64 bit address space for ASLR
9+
gcc_pre_link_args.push("-Wl,--high-entropy-va".to_string());
710
base.pre_link_args
811
.insert(LinkerFlavor::Lld(LldFlavor::Ld), vec!["-m".to_string(), "i386pep".to_string()]);
912
base.max_atomic_width = Some(64);

compiler/rustc_target/src/spec/x86_64_uwp_windows_gnu.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ use crate::spec::{LinkerFlavor, LldFlavor, Target, TargetResult};
33
pub fn target() -> TargetResult {
44
let mut base = super::windows_uwp_gnu_base::opts();
55
base.cpu = "x86-64".to_string();
6-
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
6+
let gcc_pre_link_args = base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap();
7+
gcc_pre_link_args.push("-m64".to_string());
8+
// Use high-entropy 64 bit address space for ASLR
9+
gcc_pre_link_args.push("-Wl,--high-entropy-va".to_string());
710
base.pre_link_args
811
.insert(LinkerFlavor::Lld(LldFlavor::Ld), vec!["-m".to_string(), "i386pep".to_string()]);
912
base.max_atomic_width = Some(64);

0 commit comments

Comments
 (0)