Skip to content

Commit 5c73fed

Browse files
authored
[ObjectYAML][CodeView] Include inline annotation data (#168211)
The annotation data for `S_INLINESITE` symbols was missing in YAML. This caused PDBs with inline sites to have incorrect symbol offsets, because `S_INLINESITE` wouldn't have the same size after creating a PDB from YAML. I kept the annotations as binary, because that's how they're represented in LLVM.
1 parent c6775e2 commit 5c73fed

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ template <> void SymbolRecordImpl<InlineSiteSym>::map(IO &IO) {
386386
IO.mapOptional("PtrParent", Symbol.Parent, 0U);
387387
IO.mapOptional("PtrEnd", Symbol.End, 0U);
388388
IO.mapRequired("Inlinee", Symbol.Inlinee);
389-
// TODO: The binary annotations
389+
IO.mapOptional("AnnotationData", Symbol.AnnotationData);
390390
}
391391

392392
template <> void SymbolRecordImpl<LocalSym>::map(IO &IO) {
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# RUN: llvm-pdbutil yaml2pdb %s --pdb=%t.pdb
2+
# RUN: llvm-pdbutil dump --all %t.pdb | FileCheck --check-prefix=CHECK-YAML2PDB %s
3+
4+
# RUN: llvm-pdbutil pdb2yaml --module-syms %t.pdb > %t.yaml
5+
# RUN: FileCheck --input-file=%t.yaml --check-prefix=CHECK-PDB2YAML %s
6+
7+
# CHECK-YAML2PDB: 4 | S_INLINESITE [size = 24]
8+
# CHECK-YAML2PDB: inlinee = 0x1000 (<unknown UDT>), parent = 268, end = 508
9+
# CHECK-YAML2PDB: 0602 line 1 (+1)
10+
# CHECK-YAML2PDB: 0315 code 0x15 (+0x15)
11+
# CHECK-YAML2PDB: 040B code end 0x20 (+0xB)
12+
# CHECK-YAML2PDB: 0000
13+
14+
# CHECK-PDB2YAML: Modi:
15+
# CHECK-PDB2YAML: Records:
16+
# CHECK-PDB2YAML: - Kind: S_INLINESITE
17+
# CHECK-PDB2YAML: InlineSiteSym:
18+
# CHECK-PDB2YAML: PtrParent: 268
19+
# CHECK-PDB2YAML: PtrEnd: 508
20+
# CHECK-PDB2YAML: Inlinee: 4096
21+
# CHECK-PDB2YAML: AnnotationData: [ 6, 2, 3, 21, 4, 11, 0, 0 ]
22+
23+
---
24+
DbiStream:
25+
Modules:
26+
- Module: 'C:\Users\johannes\AppData\Local\Temp\inline_sites_live-2a62f2.o'
27+
Modi:
28+
Records:
29+
- Kind: S_INLINESITE
30+
InlineSiteSym:
31+
PtrParent: 268
32+
PtrEnd: 508
33+
Inlinee: 4096
34+
AnnotationData: [ 6, 2, 3, 21, 4, 11, 0, 0 ]
35+
SectionHeaders:
36+
- Name: .text
37+
- Name: .rdata
38+
- Name: .pdata
39+
...

0 commit comments

Comments
 (0)