[lld] r367837 - [MinGW] Add an lld specific option for requesting to delay load libraries

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 7 01:33:38 PDT 2019


Merged to release_90 in r368134.

On Mon, Aug 5, 2019 at 1:56 PM Martin Storsjo via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> Author: mstorsjo
> Date: Mon Aug  5 04:57:06 2019
> New Revision: 367837
>
> URL: http://llvm.org/viewvc/llvm-project?rev=367837&view=rev
> Log:
> [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
>
> Modified:
>     lld/trunk/MinGW/Driver.cpp
>     lld/trunk/MinGW/Options.td
>     lld/trunk/test/MinGW/driver.test
>
> Modified: lld/trunk/MinGW/Driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/MinGW/Driver.cpp?rev=367837&r1=367836&r2=367837&view=diff
> ==============================================================================
> --- lld/trunk/MinGW/Driver.cpp (original)
> +++ lld/trunk/MinGW/Driver.cpp Mon Aug  5 04:57:06 2019
> @@ -303,6 +303,8 @@ bool mingw::link(ArrayRef<const char *>
>      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<StringRef> searchPaths;
>    for (auto *a : args.filtered(OPT_L)) {
>
> Modified: lld/trunk/MinGW/Options.td
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/MinGW/Options.td?rev=367837&r1=367836&r2=367837&view=diff
> ==============================================================================
> --- lld/trunk/MinGW/Options.td (original)
> +++ lld/trunk/MinGW/Options.td Mon Aug  5 04:57:06 2019
> @@ -80,6 +80,8 @@ def require_defined_eq: J<"require-defin
>  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<delayload>;
>  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<pdb>;
>
> Modified: lld/trunk/test/MinGW/driver.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/MinGW/driver.test?rev=367837&r1=367836&r2=367837&view=diff
> ==============================================================================
> --- lld/trunk/test/MinGW/driver.test (original)
> +++ lld/trunk/test/MinGW/driver.test Mon Aug  5 04:57:06 2019
> @@ -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
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list