From c0f8e4de729892cb9b209548db66faa4721b737f Mon Sep 17 00:00:00 2001 From: Xing GUO Date: Fri, 28 Aug 2020 18:42:19 +0800 Subject: [PATCH] [DWARFYAML] Abbrev codes in a new abbrev table should start from 1 (by default). The abbrev codes in a new abbrev table should start from 1 (by default), rather than inherit the value from the code in the previous table. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D86545 --- lib/ObjectYAML/DWARFEmitter.cpp | 2 +- test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/ObjectYAML/DWARFEmitter.cpp b/lib/ObjectYAML/DWARFEmitter.cpp index bbcf56cc0ce..91221351733 100644 --- a/lib/ObjectYAML/DWARFEmitter.cpp +++ b/lib/ObjectYAML/DWARFEmitter.cpp @@ -95,8 +95,8 @@ Error DWARFYAML::emitDebugStr(raw_ostream &OS, const DWARFYAML::Data &DI) { } 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/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml b/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml index f1d14847699..23262e0ff5e 100644 --- a/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml +++ b/test/tools/yaml2obj/ELF/DWARF/debug-abbrev.yaml @@ -277,9 +277,12 @@ DWARF: ## ^- 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 @@ DWARF: 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.