about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2014-09-06 17:51:25 -0400
committerDaniel Micay <danielmicay@gmail.com>2014-09-06 17:54:52 -0400
commitc6633fde5302be357014c9aa14461857d99d0075 (patch)
treea6bb11d15fbfcefca28e9588dfe45bc486394493
parentd8a26184dc103025e7ad457ffd8deb391019dbfe (diff)
downloadrust-c6633fde5302be357014c9aa14461857d99d0075.tar.gz
rust-c6633fde5302be357014c9aa14461857d99d0075.zip
mark win32 binaries as large address aware
By default, 32-bit Windows executables are restricted to 2GiB of address
space even when running on 64-bit Windows when 4GiB is available.

Closes #17043
-rw-r--r--src/librustc/back/link.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs
index 158ae22331a..1bd3425a83b 100644
--- a/src/librustc/back/link.rs
+++ b/src/librustc/back/link.rs
@@ -1019,6 +1019,12 @@ fn link_args(cmd: &mut Command,
 
         // Mark all dynamic libraries and executables as compatible with ASLR
         cmd.arg("-Wl,--dynamicbase");
+
+        // Mark all dynamic libraries and executables as compatible with the larger 4GiB address
+        // space available to x86 Windows binaries on x86_64.
+        if sess.targ_cfg.arch == abi::X86 {
+            cmd.arg("-Wl,--large-address-aware");
+        }
     }
 
     if sess.targ_cfg.os == abi::OsAndroid {