[obj2yaml,yaml2obj] Add NumBlocks to the BBAddrMapEntry yaml field.
authorRahman Lavaee <rahmanl@google.com>
Tue, 23 Feb 2021 01:50:14 +0000 (17:50 -0800)
committerRahman Lavaee <rahmanl@google.com>
Tue, 23 Feb 2021 02:08:26 +0000 (18:08 -0800)
As discussed in D95511, this allows us to encode invalid BBAddrMap
sections to be used in more rigorous testing.

Reviewed By: jhenderson

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

llvm/lib/ObjectYAML/ELFEmitter.cpp
llvm/lib/ObjectYAML/ELFYAML.cpp
llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
llvm/tools/obj2yaml/elf2yaml.cpp

index a9ff25c..242b87c 100644 (file)
@@ -1359,7 +1359,7 @@ void ELFState<ELFT>::writeSectionContent(
     // Write the address of the function.
     CBA.write<uintX_t>(E.Address, ELFT::TargetEndianness);
     // Write number of BBEntries (number of basic blocks in the function). This
-    // is overriden by the 'NumBlocks' YAML field if specified.
+    // is overridden by the 'NumBlocks' YAML field when specified.
     uint32_t NumBlocks =
         E.NumBlocks.getValueOr(E.BBEntries ? E.BBEntries->size() : 0);
     SHeader.sh_size += sizeof(uintX_t) + CBA.writeULEB128(NumBlocks);
index 8267ac9..f4bdba1 100644 (file)
@@ -1665,8 +1665,8 @@ void MappingTraits<ELFYAML::BBAddrMapEntry>::mapping(
     IO &IO, ELFYAML::BBAddrMapEntry &E) {
   assert(IO.getContext() && "The IO context is not initialized");
   IO.mapOptional("Address", E.Address, Hex64(0));
-  IO.mapOptional("BBEntries", E.BBEntries);
   IO.mapOptional("NumBlocks", E.NumBlocks);
+  IO.mapOptional("BBEntries", E.BBEntries);
 }
 
 void MappingTraits<ELFYAML::BBAddrMapEntry::BBEntry>::mapping(
index d9c46bc..b5218f9 100644 (file)
@@ -130,8 +130,8 @@ Sections:
       - Address:   0x20
 
 ## Check that obj2yaml uses the "Content" tag to describe an .llvm_bb_addr_map section
-## when it can't extract the entries, for example, when section is truncated, or when
-## an invalid NumBlocks field is specified.
+## when it can't extract the entries, for example, when the section is truncated, or
+## when an invalid 'NumBlocks' field is specified.
 
 # RUN: yaml2obj --docnum=1 -DSIZE=0x8 %s -o %t4
 # RUN: obj2yaml %t4 | FileCheck %s --check-prefixes=TRUNCATED,INVALID
index 56fa43c..bbe5d72 100644 (file)
@@ -861,7 +861,7 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
       uint64_t Metadata = Data.getULEB128(Cur);
       BBEntries.push_back({Offset, Size, Metadata});
     }
-    Entries.push_back({Address, /* NumBlocks */ {}, BBEntries});
+    Entries.push_back({Address, /*NumBlocks=*/{}, BBEntries});
   }
 
   if (!Cur) {