From 71663a2eac749dcd2e498f82cacb364bcab4f748 Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Tue, 12 Dec 2017 19:39:18 +0000 Subject: [PATCH] [MinGW] Don't pass -dynamicbase:no by default for arm/arm64 The linker refuses using -dynamicbase:no on these architectures. Stop passing -dynamicbase (which just reinforces the lld-link default) for simplicity. Differential Revision: https://reviews.llvm.org/D41052 llvm-svn: 320518 --- lld/MinGW/Driver.cpp | 4 +++- lld/test/MinGW/driver.test | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index ad5fa5c17b3b..d08f12f9dcf5 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -159,7 +159,9 @@ bool mingw::link(ArrayRef ArgsArr, raw_ostream &Diag) { if (Args.hasArg(OPT_large_address_aware)) Add("-largeaddressaware"); - Add(Args.hasArg(OPT_dynamicbase) ? "-dynamicbase" : "-dynamicbase:no"); + if (Args.getLastArgValue(OPT_m) != "thumb2pe" && + Args.getLastArgValue(OPT_m) != "arm64pe" && !Args.hasArg(OPT_dynamicbase)) + Add("-dynamicbase:no"); if (Args.hasFlag(OPT_gc_sections, OPT_no_gc_sections, false)) Add("-opt:ref"); diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index b363b6b095df..8bf70a9b24fa 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -93,14 +93,14 @@ STRIP-NOT: -debug:dwarf RUN: ld.lld -### -m i386pep foo.o --large-address-aware | FileCheck -check-prefix LARGE-ADDRESS-AWARE %s LARGE-ADDRESS-AWARE: -largeaddressaware +RUN: ld.lld -### -m i386pe foo.o | FileCheck -check-prefix DEFAULT-DISABLE-FLAGS %s RUN: ld.lld -### -m i386pep foo.o | FileCheck -check-prefix DEFAULT-DISABLE-FLAGS %s DEFAULT-DISABLE-FLAGS: -dynamicbase:no - -# The extra '-' in the following check pattern is intentional, to make sure -# that a check for "-dynamicbase" doesn't match the default "-dynamicbase:no". -RUN: ld.lld -### -m i386pep foo.o --dynamicbase | FileCheck -check-prefix DYNAMICBASE %s -RUN: ld.lld -### -m i386pep foo.o -dynamicbase | FileCheck -check-prefix DYNAMICBASE %s -DYNAMICBASE: -dynamicbase - +RUN: ld.lld -### -m i386pe --dynamicbase foo.o | FileCheck -check-prefix NO-DEFAULT-DISABLE-FLAGS %s +RUN: ld.lld -### -m i386pep -dynamicbase foo.o | FileCheck -check-prefix NO-DEFAULT-DISABLE-FLAGS %s +RUN: ld.lld -### -m thumb2pe foo.o | FileCheck -check-prefix NO-DEFAULT-DISABLE-FLAGS %s +RUN: ld.lld -### -m arm64pe foo.o | FileCheck -check-prefix NO-DEFAULT-DISABLE-FLAGS %s +NO-DEFAULT-DISABLE-FLAGS-NOT: -dynamicbase:no RUN: ld.lld -### -m i386pep foo.o --image-base 0x1230000 | FileCheck -check-prefix IMAGE-BASE %s RUN: ld.lld -### -m i386pep foo.o -image-base 0x1230000 | FileCheck -check-prefix IMAGE-BASE %s