[llvm] f1ff6d2 - [obj2yaml, yaml2obj] Use Hex64 for BBAddressMap fields.

Rahman Lavaee via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 1 15:38:00 PST 2021


Author: Rahman Lavaee
Date: 2021-02-01T15:37:30-08:00
New Revision: f1ff6d210a5fb45dc90d063d04b12b9da0ae4110

URL: https://github.com/llvm/llvm-project/commit/f1ff6d210a5fb45dc90d063d04b12b9da0ae4110
DIFF: https://github.com/llvm/llvm-project/commit/f1ff6d210a5fb45dc90d063d04b12b9da0ae4110.diff

LOG: [obj2yaml, yaml2obj] Use Hex64 for BBAddressMap fields.

This patch let the yaml encoding use Hex64 values for NumBlocks, BB AddressOffset, BB Size, and BB Metadata.
Additionally, it changes the decoded values in elf2yaml to uint64_t to match DataExtractor::getULEB128 return type.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D95767

Added: 
    

Modified: 
    llvm/include/llvm/ObjectYAML/ELFYAML.h
    llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
    llvm/tools/obj2yaml/elf2yaml.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h
index d9a9f61f27b5..5ae04a1a418c 100644
--- a/llvm/include/llvm/ObjectYAML/ELFYAML.h
+++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h
@@ -155,9 +155,9 @@ struct DynamicEntry {
 
 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<std::vector<BBEntry>> BBEntries;

diff  --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
index 739a8f77cabe..44dd9d17c074 100644
--- 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 @@ Sections:
           - 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
index c85e2653b655..31034299b010 100644
--- a/llvm/tools/obj2yaml/elf2yaml.cpp
+++ b/llvm/tools/obj2yaml/elf2yaml.cpp
@@ -852,13 +852,13 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
   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<ELFYAML::BBAddrMapEntry::BBEntry> 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});


        


More information about the llvm-commits mailing list