[MinGW] Implement support for the --image-base option
authorMartin Storsjo <martin@martin.st>
Wed, 15 Nov 2017 08:18:15 +0000 (08:18 +0000)
committerMartin Storsjo <martin@martin.st>
Wed, 15 Nov 2017 08:18:15 +0000 (08:18 +0000)
Differential Revision: https://reviews.llvm.org/D40018

llvm-svn: 318282

lld/MinGW/Driver.cpp
lld/MinGW/Options.td
lld/test/MinGW/driver.test

index 44c1252..3c7b26b 100644 (file)
@@ -138,6 +138,8 @@ bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
     Add("-stack:" + StringRef(A->getValue()));
   if (auto *A = Args.getLastArg(OPT_output_def))
     Add("-output-def:" + StringRef(A->getValue()));
+  if (auto *A = Args.getLastArg(OPT_image_base))
+    Add("-base:" + StringRef(A->getValue()));
 
   if (auto *A = Args.getLastArg(OPT_o))
     Add("-out:" + StringRef(A->getValue()));
index 306a425..7631b6a 100644 (file)
@@ -11,6 +11,7 @@ def entry: S<"entry">, MetaVarName<"<entry>">,
   HelpText<"Name of entry point symbol">;
 def export_all_symbols: F<"export-all-symbols">,
     HelpText<"Export all symbols even if a def file or dllexport attributes are used">;
+def image_base: S<"image-base">, HelpText<"Base address of the program">;
 def l: JoinedOrSeparate<["-"], "l">, MetaVarName<"<libName>">,
   HelpText<"Root name of library to use">;
 def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
index ec01333..edf0c0b 100644 (file)
@@ -101,3 +101,7 @@ DEFAULT-DISABLE-FLAGS: -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 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
+IMAGE-BASE: -base:0x1230000