[lld] r320517 - [COFF] Disallow -dynamicbase:no for arm and arm64

Martin Storsjo via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 12 11:39:13 PST 2017


Author: mstorsjo
Date: Tue Dec 12 11:39:13 2017
New Revision: 320517

URL: http://llvm.org/viewvc/llvm-project?rev=320517&view=rev
Log:
[COFF] Disallow -dynamicbase:no for arm and arm64

This matches what MSVC link.exe does.

Differential Revision: https://reviews.llvm.org/D41051

Added:
    lld/trunk/test/COFF/arm64-dynamicbase.s
    lld/trunk/test/COFF/armnt-dynamicbase.test
Modified:
    lld/trunk/COFF/Driver.cpp

Modified: lld/trunk/COFF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=320517&r1=320516&r2=320517&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.cpp (original)
+++ lld/trunk/COFF/Driver.cpp Tue Dec 12 11:39:13 2017
@@ -1078,6 +1078,11 @@ void LinkerDriver::link(ArrayRef<const c
       Config->is64() &&
       Args.hasFlag(OPT_highentropyva, OPT_highentropyva_no, true);
 
+  if (!Config->DynamicBase &&
+      (Config->Machine == ARMNT || Config->Machine == ARM64))
+    error("/dynamicbase:no is not compatible with " +
+          machineToStr(Config->Machine));
+
   // Handle /entry and /dll
   if (auto *Arg = Args.getLastArg(OPT_entry)) {
     Config->Entry = addUndefined(mangle(Arg->getValue()));

Added: lld/trunk/test/COFF/arm64-dynamicbase.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/arm64-dynamicbase.s?rev=320517&view=auto
==============================================================================
--- lld/trunk/test/COFF/arm64-dynamicbase.s (added)
+++ lld/trunk/test/COFF/arm64-dynamicbase.s Tue Dec 12 11:39:13 2017
@@ -0,0 +1,8 @@
+// REQUIRES: aarch64
+// RUN: llvm-mc -filetype=obj -triple=aarch64-windows %s -o %t.obj
+// RUN: not lld-link -entry:_start -subsystem:console %t.obj -out:%t.exe -dynamicbase:no 2>&1 | FileCheck %s
+ .globl _start
+_start:
+ ret
+
+# CHECK: dynamicbase:no is not compatible with arm64

Added: lld/trunk/test/COFF/armnt-dynamicbase.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/armnt-dynamicbase.test?rev=320517&view=auto
==============================================================================
--- lld/trunk/test/COFF/armnt-dynamicbase.test (added)
+++ lld/trunk/test/COFF/armnt-dynamicbase.test Tue Dec 12 11:39:13 2017
@@ -0,0 +1,3 @@
+# RUN: yaml2obj < %p/Inputs/armnt-executable.obj.yaml > %t.obj
+# RUN: not lld-link /out:%t.exe /entry:mainCRTStartup /subsystem:console %t.obj /dynamicbase:no 2>&1 | FileCheck %s
+# CHECK: dynamicbase:no is not compatible with arm




More information about the llvm-commits mailing list