diff --git a/llvm/include/llvm/ObjectYAML/DWARFYAML.h b/llvm/include/llvm/ObjectYAML/DWARFYAML.h --- a/llvm/include/llvm/ObjectYAML/DWARFYAML.h +++ b/llvm/include/llvm/ObjectYAML/DWARFYAML.h @@ -167,10 +167,10 @@ struct AddrTableEntry { dwarf::DwarfFormat Format; - Optional Length; - yaml::Hex16 Version; - Optional AddrSize; - yaml::Hex8 SegSelectorSize; + Optional Length; + uint16_t Version; + Optional AddrSize; + uint8_t SegSelectorSize; std::vector SegAddrPairs; }; 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 @@ -376,7 +376,7 @@ uint64_t Length; if (TableEntry.Length) - Length = (uint64_t)*TableEntry.Length; + Length = *TableEntry.Length; else // 2 (version) + 1 (address_size) + 1 (segment_selector_size) = 4 Length = 4 + (AddrSize + TableEntry.SegSelectorSize) * diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-addr.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-addr.yaml --- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-addr.yaml +++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-addr.yaml @@ -148,7 +148,7 @@ debug_addr: ## 1) Only address (4-byte) exists. - Version: 5 - AddressSize: 0x04 + AddressSize: 4 Entries: - Address: 0x1234 - Address: 0x5678 @@ -159,22 +159,22 @@ - Address: 0x8765 ## 3) Only segment (4-byte) exists. - Version: 5 - AddressSize: 0x00 - SegmentSelectorSize: 0x04 + AddressSize: 0 + SegmentSelectorSize: 4 Entries: - Segment: 0x1234 - Segment: 0x5678 ## 4) Only segment (8-byte) exists. - Version: 5 - AddressSize: 0x00 - SegmentSelectorSize: 0x08 + AddressSize: 0 + SegmentSelectorSize: 8 Entries: - Segment: 0x4321 - Segment: 0x8765 ## 5) Both address (4-byte) and segment (4-byte) exist. - Version: 5 - AddressSize: 0x04 - SegmentSelectorSize: 0x04 + AddressSize: 4 + SegmentSelectorSize: 4 Entries: - Segment: 0x1234 Address: 0x5678 @@ -184,7 +184,7 @@ ## Address exists, while segment takes the default value 0x00. ## 6) Both address (8-byte) and segment (8-byte) exist (AddressSize is derived from FileHeader). - Version: 5 - SegmentSelectorSize: 0x08 + SegmentSelectorSize: 8 Entries: - Segment: 0x1234 Address: 0x5678 @@ -194,8 +194,8 @@ ## Address exists, while segment takes the default value 0x00. ## 7) Both address (4-byte) and segment (8-byte) exist. - Version: 5 - AddressSize: 0x04 - SegmentSelectorSize: 0x08 + AddressSize: 4 + SegmentSelectorSize: 8 Entries: - Segment: 0x1234 Address: 0x5678 @@ -205,7 +205,7 @@ ## Address exists, while segment takes the default value 0x00. ## 8) Both address (8-byte) and segment (4-byte) exist (AddressSize is derived from FileHeader). - Version: 5 - SegmentSelectorSize: 0x04 + SegmentSelectorSize: 4 Entries: - Segment: 0x1234 Address: 0x5678 @@ -214,10 +214,10 @@ - Address: 0x4321 ## Address exists, while segment takes the default value 0x00. ## 9) Explicitly assign a value to 'Length'. - - Length: 0x1234 - Version: 0x02 - AddressSize: 0x04 - SegmentSelectorSize: 0x00 + - Length: 4660 ## 0x1234 + Version: 2 + AddressSize: 4 + SegmentSelectorSize: 0 Entries: [] ## b) Generate and verify a big endian DWARF32 .debug_addr section. @@ -392,7 +392,7 @@ debug_addr: - Format: DWARF64 Version: 5 - AddressSize: 0x04 + AddressSize: 4 Entries: - Address: 0x1234 - Address: 0x5678