From: Martin Storsjo Date: Mon, 5 Aug 2019 11:57:06 +0000 (+0000) Subject: [MinGW] Add an lld specific option for requesting to delay load libraries X-Git-Tag: llvmorg-11-init~12801 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c92b3563c63547984516cbb1223d3cbfc8336fee;p=platform%2Fupstream%2Fllvm.git [MinGW] Add an lld specific option for requesting to delay load libraries With GNU tools, delayload is handled completely differently. (One creates a specific delayload import library using dlltool and then links against it instead of the normal import library.) Instead of requiring using -Xlink=-delayload:lib.dll, we can provide an lld specific option for this. Differential Revision: https://reviews.llvm.org/D65728 llvm-svn: 367837 --- diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 24e18aa..be1b757 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -303,6 +303,8 @@ bool mingw::link(ArrayRef argsArr, raw_ostream &diag) { add("-include:" + StringRef(a->getValue())); for (auto *a : args.filtered(OPT_undefined)) add("-includeoptional:" + StringRef(a->getValue())); + for (auto *a : args.filtered(OPT_delayload)) + add("-delayload:" + StringRef(a->getValue())); std::vector searchPaths; for (auto *a : args.filtered(OPT_L)) { diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td index 44de98d..8640043 100644 --- a/lld/MinGW/Options.td +++ b/lld/MinGW/Options.td @@ -80,6 +80,8 @@ def require_defined_eq: J<"require-defined=">, Alias; def _HASH_HASH_HASH : Flag<["-"], "###">, HelpText<"Print (but do not run) the commands to run for this compilation">; def appcontainer: F<"appcontainer">, HelpText<"Set the appcontainer flag in the executable">; +def delayload: S<"delayload">, HelpText<"DLL to load only on demand">; +def delayload_eq: J<"delayload=">, Alias; def mllvm: S<"mllvm">; def pdb: S<"pdb">, HelpText<"Output PDB debug info file, chosen implicitly if the argument is empty">; def pdb_eq: J<"pdb=">, Alias; diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index cdd802e..b8bc2dd 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -200,3 +200,7 @@ APPCONTAINER: -appcontainer # RUN: ld.lld -m i386pep --help 2>&1 | FileCheck -check-prefix=HELP %s # HELP: USAGE: # HELP: --enable-auto-import + +RUN: ld.lld -### -m i386pep foo.o -delayload user32.dll --delayload shell32.dll | FileCheck -check-prefix DELAYLOAD %s +RUN: ld.lld -### -m i386pep foo.o -delayload=user32.dll --delayload=shell32.dll | FileCheck -check-prefix DELAYLOAD %s +DELAYLOAD: -delayload:user32.dll -delayload:shell32.dll