diff options
| -rw-r--r-- | lld/COFF/Config.h | 2 | ||||
| -rw-r--r-- | lld/COFF/Driver.cpp | 6 | ||||
| -rw-r--r-- | lld/test/COFF/rsds.test | 25 |
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 |

