diff --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h --- a/llvm/include/llvm/ObjectYAML/ELFYAML.h +++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h @@ -155,9 +155,9 @@ struct BBAddrMapEntry { struct BBEntry { - llvm::yaml::Hex32 AddressOffset; - llvm::yaml::Hex32 Size; - llvm::yaml::Hex32 Metadata; + llvm::yaml::Hex64 AddressOffset; + llvm::yaml::Hex64 Size; + llvm::yaml::Hex64 Metadata; }; llvm::yaml::Hex64 Address; Optional> BBEntries; diff --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml --- a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml +++ b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml @@ -22,10 +22,10 @@ # VALID-NEXT: - AddressOffset: 0x4 # VALID-NEXT: Size: 0x5 # VALID-NEXT: Metadata: 0x6 -# VALID-NEXT: - AddressOffset: 0x7 -# VALID-NEXT: Size: 0x8 -# VALID-NEXT: Metadata: 0x9 -# VALID-NEXT: - Address: 0x20 +# VALID-NEXT: - AddressOffset: 0xFFFFFFFFFFFFFFF7 +# VALID-NEXT: Size: 0xFFFFFFFFFFFFFFF8 +# VALID-NEXT: Metadata: 0xFFFFFFFFFFFFFFF9 +# VALID-NEXT: - Address: 0xFFFFFFFFFFFFFF20 # VALID-NEXT: BBEntries: # VALID-NEXT: - AddressOffset: 0xA # VALID-NEXT: Size: 0xB @@ -48,10 +48,10 @@ - AddressOffset: 0x4 Size: 0x5 Metadata: 0x6 - - AddressOffset: 0x7 - Size: 0x8 - Metadata: 0x9 - - Address: 0x20 + - AddressOffset: 0xFFFFFFFFFFFFFFF7 + Size: 0xFFFFFFFFFFFFFFF8 + Metadata: 0xFFFFFFFFFFFFFFF9 + - Address: 0xFFFFFFFFFFFFFF20 BBEntries: - AddressOffset: 0xA Size: 0xB diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp --- a/llvm/tools/obj2yaml/elf2yaml.cpp +++ b/llvm/tools/obj2yaml/elf2yaml.cpp @@ -852,13 +852,13 @@ DataExtractor::Cursor Cur(0); while (Cur && Cur.tell() < Content.size()) { uint64_t Address = Data.getAddress(Cur); - uint32_t NumBlocks = Data.getULEB128(Cur); + uint64_t NumBlocks = Data.getULEB128(Cur); std::vector BBEntries; // Read the specified number of BB entries, or until decoding fails. - for (uint32_t BlockID = 0; Cur && BlockID < NumBlocks; ++BlockID) { - uint32_t Offset = Data.getULEB128(Cur); - uint32_t Size = Data.getULEB128(Cur); - uint32_t Metadata = Data.getULEB128(Cur); + for (uint64_t BlockID = 0; Cur && BlockID < NumBlocks; ++BlockID) { + uint64_t Offset = Data.getULEB128(Cur); + uint64_t Size = Data.getULEB128(Cur); + uint64_t Metadata = Data.getULEB128(Cur); BBEntries.push_back({Offset, Size, Metadata}); } Entries.push_back({Address, BBEntries});