diff --git a/llvm/lib/ObjectYAML/DWARFEmitter.cpp b/llvm/lib/ObjectYAML/DWARFEmitter.cpp --- a/llvm/lib/ObjectYAML/DWARFEmitter.cpp +++ b/llvm/lib/ObjectYAML/DWARFEmitter.cpp @@ -95,8 +95,8 @@ } Error DWARFYAML::emitDebugAbbrev(raw_ostream &OS, const DWARFYAML::Data &DI) { - uint64_t AbbrevCode = 0; for (const DWARFYAML::AbbrevTable &AbbrevTable : DI.DebugAbbrev) { + uint64_t AbbrevCode = 0; for (const DWARFYAML::Abbrev &AbbrevDecl : AbbrevTable.Table) { AbbrevCode = AbbrevDecl.Code ? (uint64_t)*AbbrevDecl.Code : AbbrevCode + 1; diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml --- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml +++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml @@ -277,9 +277,12 @@ ## ^- abbreviation code (ULEB128) 0x04 ## ^- abbreviation code (ULEB128) 0x04 ## -# CODE-NEXT: 0x00000010 2e000000 052e0000 00062e00 0000 -## ^- abbreviation code ULEB128 -## ^- abbreviation code ULEB128 +# CODE-NEXT: 0x00000010 2e000000 052e0000 00062e00 00000001 +## ^- abbreviation code ULEB128 +## ^- abbreviation code ULEB128 +## ^- abbreviation code ULEB128 +# CODE-NEXT: 0x00000020 11000000 022e0000 0000 +## ^- abbreviation code ULEB128 --- !ELF FileHeader: @@ -303,6 +306,12 @@ Children: DW_CHILDREN_no - Tag: DW_TAG_subprogram Children: DW_CHILDREN_no + - Table: + ## Test that the abbrev codes in a new table start from 1 by default. + - Tag: DW_TAG_compile_unit + Children: DW_CHILDREN_no + - Tag: DW_TAG_subprogram + Children: DW_CHILDREN_no ## i) Test that yaml2obj emits an error message when there are non-empty compilation units ## and multiple abbrev tables are assigned the same ID.