Skip to content

Commit 205fbc2

Browse files
committed
[obj2yaml] Add support for ELF .debug_info and .debug_abbrev
Support for these DWARF sections was already in obj2yaml for MachO, but not enabled for ELF.
1 parent b2c2fef commit 205fbc2

File tree

2 files changed

+125
-0
lines changed

2 files changed

+125
-0
lines changed
+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# RUN: yaml2obj %s | obj2yaml | FileCheck %s
2+
3+
# CHECK: debug_abbrev:
4+
# CHECK: - ID: 0
5+
# CHECK: Table:
6+
# CHECK: - Code: 0x1
7+
# CHECK: Tag: DW_TAG_compile_unit
8+
# CHECK: Children: DW_CHILDREN_no
9+
# CHECK: Attributes:
10+
# CHECK: - Attribute: DW_AT_low_pc
11+
# CHECK: Form: DW_FORM_addr
12+
# CHECK: - ID: 1
13+
# CHECK: Table:
14+
# CHECK: - Code: 0x1
15+
# CHECK: Tag: DW_TAG_compile_unit
16+
# CHECK: Children: DW_CHILDREN_no
17+
# CHECK: Attributes:
18+
# CHECK: - Attribute: DW_AT_low_pc
19+
# CHECK: Form: DW_FORM_data4
20+
# CHECK: - ID: 2
21+
# CHECK: Table:
22+
# CHECK: - Code: 0x1
23+
# CHECK: Tag: DW_TAG_compile_unit
24+
# CHECK: Children: DW_CHILDREN_no
25+
# CHECK: Attributes:
26+
# CHECK: - Attribute: DW_AT_low_pc
27+
# CHECK: Form: DW_FORM_udata
28+
#
29+
# CHECK: debug_info:
30+
# CHECK: - Length: 0xC
31+
# CHECK: Version: 4
32+
# CHECK: AbbrevTableID: 1
33+
# CHECK: AbbrOffset: 0x8
34+
# CHECK: AddrSize: 8
35+
# CHECK: Entries:
36+
# CHECK: - AbbrCode: 0x1
37+
# CHECK: Values:
38+
# CHECK: - Value: 0x1234
39+
# CHECK: - Length: 0xC
40+
# CHECK: Version: 4
41+
# CHECK: AbbrevTableID: 1
42+
# CHECK: AbbrOffset: 0x8
43+
# CHECK: AddrSize: 8
44+
# CHECK: Entries:
45+
# CHECK: - AbbrCode: 0x1
46+
# CHECK: Values:
47+
# CHECK: - Value: 0x4321
48+
# CHECK: - Length: 0x10
49+
# CHECK: Version: 4
50+
# CHECK: AbbrevTableID: 0
51+
# CHECK: AbbrOffset: 0x0
52+
# CHECK: AddrSize: 8
53+
# CHECK: Entries:
54+
# CHECK: - AbbrCode: 0x1
55+
# CHECK: Values:
56+
# CHECK: - Value: 0x5678
57+
# CHECK: - Length: 0xB
58+
# CHECK: Version: 4
59+
# CHECK: AbbrevTableID: 2
60+
# CHECK: AbbrOffset: 0x10
61+
# CHECK: AddrSize: 8
62+
# CHECK: Entries:
63+
# CHECK: - AbbrCode: 0x1
64+
# CHECK: Values:
65+
# CHECK: - Value: 0x8765
66+
67+
--- !ELF
68+
FileHeader:
69+
Class: ELFCLASS64
70+
Data: ELFDATA2LSB
71+
Type: ET_EXEC
72+
DWARF:
73+
debug_abbrev:
74+
- Table:
75+
- Code: 1
76+
Tag: DW_TAG_compile_unit
77+
Children: DW_CHILDREN_no
78+
Attributes:
79+
- Attribute: DW_AT_low_pc
80+
Form: DW_FORM_addr
81+
- ID: 2
82+
Table:
83+
- Code: 1
84+
Tag: DW_TAG_compile_unit
85+
Children: DW_CHILDREN_no
86+
Attributes:
87+
- Attribute: DW_AT_low_pc
88+
Form: DW_FORM_data4
89+
- ID: 1
90+
Table:
91+
- Code: 1
92+
Tag: DW_TAG_compile_unit
93+
Children: DW_CHILDREN_no
94+
Attributes:
95+
- Attribute: DW_AT_low_pc
96+
Form: DW_FORM_udata
97+
debug_info:
98+
- Version: 4
99+
AbbrevTableID: 2
100+
Entries:
101+
- AbbrCode: 1
102+
Values:
103+
- Value: 0x1234
104+
- Version: 4
105+
AbbrevTableID: 2
106+
Entries:
107+
- AbbrCode: 1
108+
Values:
109+
- Value: 0x4321
110+
- Version: 4
111+
AbbrevTableID: 0
112+
Entries:
113+
- AbbrCode: 1
114+
Values:
115+
- Value: 0x5678
116+
- Version: 4
117+
AbbrevTableID: 1
118+
Entries:
119+
- AbbrCode: 1
120+
Values:
121+
- Value: 0x8765

Diff for: llvm/tools/obj2yaml/elf2yaml.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,10 @@ std::optional<DWARFYAML::Data> ELFDumper<ELFT>::dumpDWARFSections(
536536
Err = dumpDebugRanges(*DWARFCtx, DWARF);
537537
else if (RawSec->Name == ".debug_addr")
538538
Err = dumpDebugAddr(*DWARFCtx, DWARF);
539+
else if (RawSec->Name == ".debug_abbrev")
540+
Err = dumpDebugAbbrev(*DWARFCtx, DWARF);
541+
else if (RawSec->Name == ".debug_info")
542+
dumpDebugInfo(*DWARFCtx, DWARF);
539543
else
540544
continue;
541545

0 commit comments

Comments
 (0)