[lld][COFF] Add -print-search-paths for debugging.
While working on adding more implicit search paths to the lld COFF driver, it was helpful to have a way to print all the search paths, both for debugging and for testing without having to create very complicated test cases. This is a simple arg that just prints the search paths and exits. Related to the efforts in #63827 Differential Revision: https://reviews.llvm.org/D155047
This commit is contained in:
parent
85c6d57eb3
commit
33f93425dd
@ -132,6 +132,7 @@ struct Configuration {
|
|||||||
bool driverWdm = false;
|
bool driverWdm = false;
|
||||||
bool showTiming = false;
|
bool showTiming = false;
|
||||||
bool showSummary = false;
|
bool showSummary = false;
|
||||||
|
bool printSearchPaths = false;
|
||||||
unsigned debugTypes = static_cast<unsigned>(DebugType::None);
|
unsigned debugTypes = static_cast<unsigned>(DebugType::None);
|
||||||
llvm::SmallVector<llvm::StringRef, 0> mllvmOpts;
|
llvm::SmallVector<llvm::StringRef, 0> mllvmOpts;
|
||||||
std::vector<std::string> natvisFiles;
|
std::vector<std::string> natvisFiles;
|
||||||
|
@ -1500,6 +1500,7 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
|
|||||||
config->showTiming = true;
|
config->showTiming = true;
|
||||||
|
|
||||||
config->showSummary = args.hasArg(OPT_summary);
|
config->showSummary = args.hasArg(OPT_summary);
|
||||||
|
config->printSearchPaths = args.hasArg(OPT_print_search_paths);
|
||||||
|
|
||||||
// Handle --version, which is an lld extension. This option is a bit odd
|
// Handle --version, which is an lld extension. This option is a bit odd
|
||||||
// because it doesn't start with "/", but we deliberately chose "--" to
|
// because it doesn't start with "/", but we deliberately chose "--" to
|
||||||
@ -2052,6 +2053,17 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
|
|||||||
}
|
}
|
||||||
config->wordsize = config->is64() ? 8 : 4;
|
config->wordsize = config->is64() ? 8 : 4;
|
||||||
|
|
||||||
|
if (config->printSearchPaths) {
|
||||||
|
SmallString<256> buffer;
|
||||||
|
raw_svector_ostream stream(buffer);
|
||||||
|
stream << "Library search paths:\n";
|
||||||
|
|
||||||
|
for (StringRef path : searchPaths)
|
||||||
|
stream << " " << path << "\n";
|
||||||
|
|
||||||
|
message(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
// Process files specified as /defaultlib. These must be processed after
|
// Process files specified as /defaultlib. These must be processed after
|
||||||
// addWinSysRootLibSearchPaths(), which is why they are in a separate loop.
|
// addWinSysRootLibSearchPaths(), which is why they are in a separate loop.
|
||||||
for (auto *arg : args.filtered(OPT_defaultlib))
|
for (auto *arg : args.filtered(OPT_defaultlib))
|
||||||
|
@ -295,6 +295,7 @@ def lldmap_file : P_priv<"lldmap">;
|
|||||||
def map : F<"map">;
|
def map : F<"map">;
|
||||||
def map_file : P_priv<"map">;
|
def map_file : P_priv<"map">;
|
||||||
def map_info : P<"mapinfo", "Include the specified information in a map file">;
|
def map_info : P<"mapinfo", "Include the specified information in a map file">;
|
||||||
|
def print_search_paths : F<"print-search-paths">;
|
||||||
def show_timing : F<"time">;
|
def show_timing : F<"time">;
|
||||||
def summary : F<"summary">;
|
def summary : F<"summary">;
|
||||||
|
|
||||||
|
21
lld/test/COFF/print-search-paths.s
Normal file
21
lld/test/COFF/print-search-paths.s
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# REQUIRES: x86
|
||||||
|
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
|
||||||
|
# RUN: lld-link -safeseh:no /dll /noentry /winsysroot:%t.dir/sysroot /vctoolsversion:1.1.1.1 /winsdkversion:10.0.1 %t.obj -print-search-paths | FileCheck -DSYSROOT=%t.dir %s
|
||||||
|
# RUN: llvm-mc -triple i686-windows-msvc %s -filetype=obj -o %t_32.obj
|
||||||
|
# RUN: lld-link -safeseh:no /dll /noentry /winsysroot:%t.dir/sysroot /vctoolsversion:1.1.1.1 /winsdkversion:10.0.1 %t_32.obj -print-search-paths | FileCheck -DSYSROOT=%t.dir -check-prefix=X86 %s
|
||||||
|
# CHECK: Library search paths:
|
||||||
|
# CHECK: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}VC{{[/\\]}}Tools{{[/\\]}}MSVC{{[/\\]}}1.1.1.1{{[/\\]}}lib{{[/\\]}}x64
|
||||||
|
# CHECK: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}VC{{[/\\]}}Tools{{[/\\]}}MSVC{{[/\\]}}1.1.1.1{{[/\\]}}atlmfc{{[/\\]}}lib{{[/\\]}}x64
|
||||||
|
# CHECK: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}Windows Kits{{[/\\]}}10{{[/\\]}}Lib{{[/\\]}}10.0.1{{[/\\]}}ucrt{{[/\\]}}x64
|
||||||
|
# CHECK: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}Windows Kits{{[/\\]}}10{{[/\\]}}Lib{{[/\\]}}10.0.1{{[/\\]}}um{{[/\\]}}x64
|
||||||
|
# X86: Library search paths:
|
||||||
|
# X86: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}VC{{[/\\]}}Tools{{[/\\]}}MSVC{{[/\\]}}1.1.1.1{{[/\\]}}lib{{[/\\]}}x86
|
||||||
|
# X86: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}VC{{[/\\]}}Tools{{[/\\]}}MSVC{{[/\\]}}1.1.1.1{{[/\\]}}atlmfc{{[/\\]}}lib{{[/\\]}}x86
|
||||||
|
# X86: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}Windows Kits{{[/\\]}}10{{[/\\]}}Lib{{[/\\]}}10.0.1{{[/\\]}}ucrt{{[/\\]}}x86
|
||||||
|
# X86: [[SYSROOT]]{{[/\\]}}sysroot{{[/\\]}}Windows Kits{{[/\\]}}10{{[/\\]}}Lib{{[/\\]}}10.0.1{{[/\\]}}um{{[/\\]}}x86
|
||||||
|
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl _main
|
||||||
|
_main:
|
||||||
|
ret
|
Loading…
x
Reference in New Issue
Block a user