File tree Expand file tree Collapse file tree 2 files changed +38
-4
lines changed Expand file tree Collapse file tree 2 files changed +38
-4
lines changed Original file line number Diff line number Diff line change @@ -628,13 +628,20 @@ LLVMSymbolizer::getOrCreateModuleInfo(const std::string &ModuleName) {
628
628
ObjectPair Objects = ObjectsOrErr.get ();
629
629
630
630
std::unique_ptr<DIContext> Context;
631
- // If this is a COFF object containing PDB info, use a PDBContext to
632
- // symbolize. Otherwise, use DWARF.
631
+ // If this is a COFF object containing PDB info and not containing DWARF
632
+ // section, use a PDBContext to symbolize. Otherwise, use DWARF.
633
633
if (auto CoffObject = dyn_cast<COFFObjectFile>(Objects.first )) {
634
634
const codeview::DebugInfo *DebugInfo;
635
635
StringRef PDBFileName;
636
636
auto EC = CoffObject->getDebugPDBInfo (DebugInfo, PDBFileName);
637
- if (!EC && DebugInfo != nullptr && !PDBFileName.empty ()) {
637
+ // Use DWARF if there're DWARF sections.
638
+ bool HasDwarf =
639
+ llvm::any_of (Objects.first ->sections (), [](SectionRef Section) -> bool {
640
+ if (Expected<StringRef> SectionName = Section.getName ())
641
+ return SectionName.get () == " .debug_info" ;
642
+ return false ;
643
+ });
644
+ if (!EC && !HasDwarf && DebugInfo != nullptr && !PDBFileName.empty ()) {
638
645
using namespace pdb ;
639
646
std::unique_ptr<IPDBSession> Session;
640
647
Original file line number Diff line number Diff line change 2
2
; RUN: FileCheck %s --input-file %t
3
3
4
4
; CHECK: main:2914368:0
5
- ; CHECK-NEXT: 0: 31124
5
+ ; CHECK-NEXT: 3.1: 0
6
+ ; CHECK-NEXT: 3.2: 0
7
+ ; CHECK-NEXT: 8: 0
8
+ ; CHECK-NEXT: 65501: 0
9
+ ; CHECK-NEXT: 1: ??$init@HG@MyNameSpace2@@YAXHPEAG@Z:0
10
+ ; CHECK-NEXT: 1: 0
11
+ ; CHECK-NEXT: 1.1: 0
12
+ ; CHECK-NEXT: 1.2: 0
13
+ ; CHECK-NEXT: 2: 0
14
+ ; CHECK-NEXT: 13: 0
15
+ ; CHECK-NEXT: 65514: 0
16
+ ; CHECK-NEXT: 4: ?work1@?$MyClass@GH@MyNameSpace1@@QEAAXQEAGH@Z:299952
17
+ ; CHECK-NEXT: 0: ?work@?$MyClass@GH@MyNameSpace1@@AEAAXQEAGHH@Z:299952
18
+ ; CHECK-NEXT: 1.1: 2913
19
+ ; CHECK-NEXT: 1.2: 2913
20
+ ; CHECK-NEXT: 2: 2912
21
+ ; CHECK-NEXT: 3: 2913
22
+ ; CHECK-NEXT: 65530: 0
23
+ ; CHECK-NEXT: 5: ?work2@?$MyClass@GH@MyNameSpace1@@QEAAXQEAGH@Z:2614416
24
+ ; CHECK-NEXT: 0: ?work@?$MyClass@GH@MyNameSpace1@@AEAAXQEAGHH@Z:2614416
25
+ ; CHECK-NEXT: 1.1: 31124
26
+ ; CHECK-NEXT: 1.2: 31124
27
+ ; CHECK-NEXT: 2: 31124
28
+ ; CHECK-NEXT: 3: 31124
29
+ ; CHECK-NEXT: 65530: 0
30
+ ; CHECK-NEXT: 7: ?print@MyNameSpace2@@YAXPEAGH@Z:0
31
+ ; CHECK-NEXT: 1: 0
32
+ ; CHECK-NEXT: 65508: 0
6
33
7
34
; Original code
8
35
; clang-cl.exe -O2 -gdwarf coff-profile.cpp -fuse-ld=lld -Xclang -fdebug-info-for-profiling -o coff-profile.exe /link /debug:dwarf
You can’t perform that action at this time.
0 commit comments