Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 167a9c5

Browse files
authored
Fix DWARF debug information emitted for empty enum (#433)
1 parent dd51247 commit 167a9c5

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ void Dump(MCObjectStreamer *Streamer, uint16_t DwarfVersion, unsigned TargetPoin
5959
dwarf::DW_AT_byte_size, dwarf::DW_FORM_data1,
6060
0, 0,
6161

62+
EnumerationTypeNoChildren,
63+
dwarf::DW_TAG_enumeration_type, dwarf::DW_CHILDREN_no,
64+
dwarf::DW_AT_name, dwarf::DW_FORM_strp,
65+
dwarf::DW_AT_type, dwarf::DW_FORM_ref4,
66+
dwarf::DW_AT_byte_size, dwarf::DW_FORM_data1,
67+
0, 0,
68+
6269
Enumerator1,
6370
dwarf::DW_TAG_enumerator, dwarf::DW_CHILDREN_no,
6471
dwarf::DW_AT_name, dwarf::DW_FORM_strp,

llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ enum DwarfAbbrev : uint16_t
2121
CompileUnit = 0x1,
2222
BaseType,
2323
EnumerationType,
24+
EnumerationTypeNoChildren,
2425
Enumerator1,
2526
Enumerator2,
2627
Enumerator4,

llvm/tools/objwriter/debugInfo/dwarf/dwarfTypeBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ void DwarfEnumTypeInfo::DumpStrings(MCObjectStreamer *Streamer) {
282282

283283
void DwarfEnumTypeInfo::DumpTypeInfo(MCObjectStreamer *Streamer, UserDefinedDwarfTypesBuilder *TypeBuilder) {
284284
// Abbrev Number
285-
Streamer->emitULEB128IntValue(DwarfAbbrev::EnumerationType);
285+
Streamer->emitULEB128IntValue(HasChildren() ? DwarfAbbrev::EnumerationType : DwarfAbbrev::EnumerationTypeNoChildren);
286286

287287
// DW_AT_name
288288
EmitSectionOffset(Streamer, StrSymbol, 4);

0 commit comments

Comments
 (0)