diff options
-rw-r--r-- | lld/MinGW/Driver.cpp | 12 | ||||
-rw-r--r-- | lld/MinGW/Options.td | 6 | ||||
-rw-r--r-- | lld/test/MinGW/driver.s | 5 |
3 files changed, 21 insertions, 2 deletions
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 8d0c6a517b0..6506a07a0db 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -14,6 +14,7 @@ #include "lld/Driver/Driver.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/Optional.h" +#include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/Triple.h" @@ -124,7 +125,7 @@ bool link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) { std::vector<std::string> LinkArgs; auto Add = [&](const Twine &S) { LinkArgs.push_back(S.str()); }; - Add(ArgsArr[0]); + Add("lld-link"); if (auto *A = Args.getLastArg(OPT_entry)) Add("-entry:" + StringRef(A->getValue())); @@ -175,6 +176,15 @@ bool link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) { Add(searchLibrary(A->getValue(), SearchPaths, Args.hasArg(OPT_Bstatic))); } + if (Args.hasArg(OPT_verbose)) + Add("-verbose"); + + if (Args.hasArg(OPT_verbose) || Args.hasArg(OPT__HASH_HASH_HASH)) + outs() << llvm::join(LinkArgs, " ") << "\n"; + + if (Args.hasArg(OPT__HASH_HASH_HASH)) + return true; + // Repack vector of strings to vector of const char pointers for coff::link. std::vector<const char *> Vec; for (const std::string &S : LinkArgs) diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td index bad564c1c50..5d04f64c8f8 100644 --- a/lld/MinGW/Options.td +++ b/lld/MinGW/Options.td @@ -17,6 +17,11 @@ def shared: F<"shared">, HelpText<"Build a shared object">; def subs: Separate<["--"], "subsystem">, HelpText<"Specify subsystem">; def stack: Separate<["--"], "stack">; def outlib: Separate<["--"], "out-implib">, HelpText<"Import library name">; +def verbose: F<"verbose">, HelpText<"Verbose mode">; + +// LLD specific options +def _HASH_HASH_HASH : Flag<["-"], "###">, + HelpText<"Print (but do not run) the commands to run for this compilation">; // Currently stubs to avoid errors def Bdynamic: F<"Bdynamic">, HelpText<"Link against shared libraries">; @@ -27,7 +32,6 @@ def enable_auto_image_base: Flag<["--"], "enable-auto-image-base">; def full_shutdown: Flag<["--"], "full-shutdown">; def O: Joined<["-"], "O">, HelpText<"Optimize output file size">; def v: Flag<["-"], "v">, HelpText<"Display the version number">; -def verbose: F<"verbose">, HelpText<"Verbose mode">; def version: F<"version">, HelpText<"Display the version number and exit">; // Alias diff --git a/lld/test/MinGW/driver.s b/lld/test/MinGW/driver.s index 9f5041248fd..aa73f403b88 100644 --- a/lld/test/MinGW/driver.s +++ b/lld/test/MinGW/driver.s @@ -10,6 +10,11 @@ # RUN: llvm-readobj %t.exe | FileCheck %s # CHECK: File: +# RUN: ld.lld -m i386pep -e main %t.obj -o %t.exe -verbose -### | FileCheck %s -check-prefix CHECK-VERBOSE +# CHECK-VERBOSE: lld-link -entry:main +# CHECK-VERBOSE-SAME: -machine:x64 -alternatename:__image_base__=__ImageBase +# CHECK-VERBOSE-SAME: -verbose + # RUN: ld.lld -m i386pep --entry main %t.obj -o %t.exe --subsystem console # RUN: llvm-readobj -file-headers %t.exe | FileCheck %s -check-prefix CHECK-CONSOLE # CHECK-CONSOLE: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3) |