summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/COFF/Config.h2
-rw-r--r--lld/COFF/Driver.cpp6
-rw-r--r--lld/test/COFF/rsds.test25
3 files changed, 10 insertions, 23 deletions
diff --git a/lld/COFF/Config.h b/lld/COFF/Config.h
index f75f355c4aa..bfff563366a 100644
--- a/lld/COFF/Config.h
+++ b/lld/COFF/Config.h
@@ -89,7 +89,7 @@ struct Configuration {
bool Debug = false;
bool WriteSymtab = true;
unsigned DebugTypes = static_cast<unsigned>(DebugType::None);
- StringRef PDBPath;
+ llvm::SmallString<128> PDBPath;
// Symbols in this set are considered as live by the garbage collector.
std::set<SymbolBody *> GCRoot;
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index 3bf9b761350..027b3ac915e 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -890,6 +890,12 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
getOutputPath((*Args.filtered_begin(OPT_INPUT))->getValue());
}
+ // Put the PDB next to the image if no /pdb flag was passed.
+ if (Config->Debug && Config->PDBPath.empty()) {
+ Config->PDBPath = Config->OutputFile;
+ sys::path::replace_extension(Config->PDBPath, ".pdb");
+ }
+
// Set default image base if /base is not given.
if (Config->ImageBase == uint64_t(-1))
Config->ImageBase = getDefaultImageBase();
diff --git a/lld/test/COFF/rsds.test b/lld/test/COFF/rsds.test
index 37ec48b5068..82b0f220b6c 100644
--- a/lld/test/COFF/rsds.test
+++ b/lld/test/COFF/rsds.test
@@ -4,7 +4,7 @@
# RUN: llvm-readobj -coff-debug-directory %t.dll | FileCheck %s
# RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:DllMain %t.obj
-# RUN: llvm-readobj -coff-debug-directory %t.dll | FileCheck %s -check-prefix CHECK-PDB
+# RUN: llvm-readobj -coff-debug-directory %t.dll | FileCheck %s
# CHECK: DebugDirectory [
# CHECK: DebugEntry {
@@ -13,37 +13,18 @@
# CHECK: MajorVersion: 0x0
# CHECK: MinorVersion: 0x0
# CHECK: Type: CodeView (0x2)
-# CHECK: SizeOfData: 0x19
+# CHECK: SizeOfData:
# CHECK: AddressOfRawData:
# CHECK: PointerToRawData:
# CHECK: PDBInfo {
# CHECK: PDBSignature: 0x53445352
# CHECK: PDBGUID:
# CHECK: PDBAge: 1
-# CHECK: PDBFileName: {{$}}
+# CHECK: PDBFileName: {{.*}}.pdb
# CHECK: }
# CHECK: }
# CHECK: ]
-# CHECK-PDB: DebugDirectory [
-# CHECK-PDB: DebugEntry {
-# CHECK-PDB: Characteristics: 0x0
-# CHECK-PDB: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
-# CHECK-PDB: MajorVersion: 0x0
-# CHECK-PDB: MinorVersion: 0x0
-# CHECK-PDB: Type: CodeView (0x2)
-# CHECK-PDB: SizeOfData:
-# CHECK-PDB: AddressOfRawData:
-# CHECK-PDB: PointerToRawData:
-# CHECK-PDB: PDBInfo {
-# CHECK-PDB: PDBSignature: 0x53445352
-# CHECK-PDB: PDBGUID:
-# CHECK-PDB: PDBAge: 1
-# CHECK-PDB: PDBFileName: {{.*}}.pdb
-# CHECK-PDB: }
-# CHECK-PDB: }
-# CHECK-PDB: ]
-
--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
OpenPOWER on IntegriCloud