[llvm] 5c73fed - [ObjectYAML][CodeView] Include inline annotation data (#168211)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 19 08:39:31 PST 2025
Author: nerix
Date: 2025-11-19T17:39:27+01:00
New Revision: 5c73feddd1654624703102fdfd341df5046ba793
URL: https://github.com/llvm/llvm-project/commit/5c73feddd1654624703102fdfd341df5046ba793
DIFF: https://github.com/llvm/llvm-project/commit/5c73feddd1654624703102fdfd341df5046ba793.diff
LOG: [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.
Added:
llvm/test/tools/llvm-pdbutil/inline-annotations.test
Modified:
llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
Removed:
################################################################################
diff --git a/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp b/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
index 5dd10f402f2ca..fa7c92b34aa39 100644
--- a/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
+++ b/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
@@ -386,7 +386,7 @@ template <> void SymbolRecordImpl<InlineSiteSym>::map(IO &IO) {
IO.mapOptional("PtrParent", Symbol.Parent, 0U);
IO.mapOptional("PtrEnd", Symbol.End, 0U);
IO.mapRequired("Inlinee", Symbol.Inlinee);
- // TODO: The binary annotations
+ IO.mapOptional("AnnotationData", Symbol.AnnotationData);
}
template <> void SymbolRecordImpl<LocalSym>::map(IO &IO) {
diff --git a/llvm/test/tools/llvm-pdbutil/inline-annotations.test b/llvm/test/tools/llvm-pdbutil/inline-annotations.test
new file mode 100644
index 0000000000000..2e3eca94a792c
--- /dev/null
+++ b/llvm/test/tools/llvm-pdbutil/inline-annotations.test
@@ -0,0 +1,39 @@
+# RUN: llvm-pdbutil yaml2pdb %s --pdb=%t.pdb
+# RUN: llvm-pdbutil dump --all %t.pdb | FileCheck --check-prefix=CHECK-YAML2PDB %s
+
+# RUN: llvm-pdbutil pdb2yaml --module-syms %t.pdb > %t.yaml
+# RUN: FileCheck --input-file=%t.yaml --check-prefix=CHECK-PDB2YAML %s
+
+# CHECK-YAML2PDB: 4 | S_INLINESITE [size = 24]
+# CHECK-YAML2PDB: inlinee = 0x1000 (<unknown UDT>), parent = 268, end = 508
+# CHECK-YAML2PDB: 0602 line 1 (+1)
+# CHECK-YAML2PDB: 0315 code 0x15 (+0x15)
+# CHECK-YAML2PDB: 040B code end 0x20 (+0xB)
+# CHECK-YAML2PDB: 0000
+
+# CHECK-PDB2YAML: Modi:
+# CHECK-PDB2YAML: Records:
+# CHECK-PDB2YAML: - Kind: S_INLINESITE
+# CHECK-PDB2YAML: InlineSiteSym:
+# CHECK-PDB2YAML: PtrParent: 268
+# CHECK-PDB2YAML: PtrEnd: 508
+# CHECK-PDB2YAML: Inlinee: 4096
+# CHECK-PDB2YAML: AnnotationData: [ 6, 2, 3, 21, 4, 11, 0, 0 ]
+
+---
+DbiStream:
+ Modules:
+ - Module: 'C:\Users\johannes\AppData\Local\Temp\inline_sites_live-2a62f2.o'
+ Modi:
+ Records:
+ - Kind: S_INLINESITE
+ InlineSiteSym:
+ PtrParent: 268
+ PtrEnd: 508
+ Inlinee: 4096
+ AnnotationData: [ 6, 2, 3, 21, 4, 11, 0, 0 ]
+ SectionHeaders:
+ - Name: .text
+ - Name: .rdata
+ - Name: .pdata
+...
More information about the llvm-commits
mailing list