[llvm] 3be2b0d - [yaml2obj][NFCI] - Address post commit comments for "[yaml2obj][ELF] - Simplify the code that performs sections validation."

Georgii Rymar via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 20 02:51:43 PDT 2020


Author: Georgii Rymar
Date: 2020-10-20T12:51:19+03:00
New Revision: 3be2b0d1a1e0b94e8586f695e8174f139f7a84d8

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

LOG: [yaml2obj][NFCI] - Address post commit comments for "[yaml2obj][ELF] - Simplify the code that performs sections validation."

This addresses post commit comments for D89463.

Added: 
    

Modified: 
    llvm/include/llvm/ObjectYAML/ELFYAML.h
    llvm/lib/ObjectYAML/ELFYAML.cpp
    llvm/lib/ObjectYAML/MachOYAML.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h
index 5d794bae991c..28cbf325ecb6 100644
--- a/llvm/include/llvm/ObjectYAML/ELFYAML.h
+++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h
@@ -193,8 +193,9 @@ struct Section : public Chunk {
 
   static bool classof(const Chunk *S) { return S->Kind != ChunkKind::Fill; }
 
-  // Some derived sections might have own special entries. This method returns
-  // vector of <entry name, is used> pairs. It is used for sections validation.
+  // Some derived sections might have their own special entries. This method
+  // returns a vector of <entry name, is used> pairs. It is used for section
+  // validation.
   virtual std::vector<std::pair<StringRef, bool>> getEntries() const {
     return {};
   };
@@ -242,7 +243,7 @@ struct StackSizesSection : Section {
   StackSizesSection() : Section(ChunkKind::StackSizes) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -260,7 +261,7 @@ struct DynamicSection : Section {
   DynamicSection() : Section(ChunkKind::Dynamic) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::Dynamic; }
@@ -291,7 +292,7 @@ struct NoteSection : Section {
   NoteSection() : Section(ChunkKind::Note) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Notes", !!Notes}};
+    return {{"Notes", Notes.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::Note; }
@@ -302,7 +303,7 @@ struct HashSection : Section {
   Optional<std::vector<uint32_t>> Chain;
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Bucket", !!Bucket}, {"Chain", !!Chain}};
+    return {{"Bucket", Bucket.hasValue()}, {"Chain", Chain.hasValue()}};
   };
 
   // The following members are used to override section fields.
@@ -344,10 +345,10 @@ struct GnuHashSection : Section {
   GnuHashSection() : Section(ChunkKind::GnuHash) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Header", !!Header},
-            {"BloomFilter", !!BloomFilter},
-            {"HashBuckets", !!HashBuckets},
-            {"HashValues", !!HashValues}};
+    return {{"Header", Header.hasValue()},
+            {"BloomFilter", BloomFilter.hasValue()},
+            {"HashBuckets", HashBuckets.hasValue()},
+            {"HashValues", HashValues.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::GnuHash; }
@@ -373,7 +374,7 @@ struct VerneedSection : Section {
   VerneedSection() : Section(ChunkKind::Verneed) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Dependencies", !!VerneedV}};
+    return {{"Dependencies", VerneedV.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -387,7 +388,7 @@ struct AddrsigSection : Section {
   AddrsigSection() : Section(ChunkKind::Addrsig) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Symbols", !!Symbols}};
+    return {{"Symbols", Symbols.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::Addrsig; }
@@ -404,7 +405,7 @@ struct LinkerOptionsSection : Section {
   LinkerOptionsSection() : Section(ChunkKind::LinkerOptions) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Options", !!Options}};
+    return {{"Options", Options.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -418,7 +419,7 @@ struct DependentLibrariesSection : Section {
   DependentLibrariesSection() : Section(ChunkKind::DependentLibraries) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Libraries", !!Libs}};
+    return {{"Libraries", Libs.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -442,7 +443,7 @@ struct CallGraphProfileSection : Section {
   CallGraphProfileSection() : Section(ChunkKind::CallGraphProfile) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -456,7 +457,7 @@ struct SymverSection : Section {
   SymverSection() : Section(ChunkKind::Symver) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::Symver; }
@@ -478,7 +479,7 @@ struct VerdefSection : Section {
   VerdefSection() : Section(ChunkKind::Verdef) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::Verdef; }
@@ -493,7 +494,7 @@ struct GroupSection : Section {
   GroupSection() : Section(ChunkKind::Group) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Members", !!Members}};
+    return {{"Members", Members.hasValue()}};
   };
 
   static bool classof(const Chunk *S) { return S->Kind == ChunkKind::Group; }
@@ -513,7 +514,7 @@ struct RelocationSection : Section {
   RelocationSection() : Section(ChunkKind::Relocation) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Relocations", !!Relocations}};
+    return {{"Relocations", Relocations.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -527,7 +528,7 @@ struct RelrSection : Section {
   RelrSection() : Section(ChunkKind::Relr) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -541,7 +542,7 @@ struct SymtabShndxSection : Section {
   SymtabShndxSection() : Section(ChunkKind::SymtabShndxSection) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {
@@ -560,7 +561,7 @@ struct ARMIndexTableSection : Section {
   ARMIndexTableSection() : Section(ChunkKind::ARMIndexTable) {}
 
   std::vector<std::pair<StringRef, bool>> getEntries() const override {
-    return {{"Entries", !!Entries}};
+    return {{"Entries", Entries.hasValue()}};
   };
 
   static bool classof(const Chunk *S) {

diff  --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index a26ffa86a790..978c4968dc64 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -871,7 +871,7 @@ std::string MappingTraits<ELFYAML::SectionHeaderTable>::validate(
   if (!SecHdrTable.NoHeaders && !SecHdrTable.Sections && !SecHdrTable.Excluded)
     return "SectionHeaderTable can't be empty. Use 'NoHeaders' key to drop the "
            "section header table";
-  return {};
+  return "";
 }
 
 void MappingTraits<ELFYAML::FileHeader>::mapping(IO &IO,
@@ -1093,7 +1093,7 @@ std::string MappingTraits<ELFYAML::Symbol>::validate(IO &IO,
                                                      ELFYAML::Symbol &Symbol) {
   if (Symbol.Index && Symbol.Section.data())
     return "Index and Section cannot both be specified for Symbol";
-  return {};
+  return "";
 }
 
 static void commonSectionMapping(IO &IO, ELFYAML::Section &Section) {
@@ -1427,7 +1427,7 @@ std::string MappingTraits<std::unique_ptr<ELFYAML::Chunk>>::validate(
   if (const auto *F = dyn_cast<ELFYAML::Fill>(C.get())) {
     if (F->Pattern && F->Pattern->binary_size() != 0 && !F->Size)
       return "\"Size\" can't be 0 when \"Pattern\" is not empty";
-    return {};
+    return "";
   }
 
   const ELFYAML::Section &Sec = *cast<ELFYAML::Section>(C.get());
@@ -1437,7 +1437,7 @@ std::string MappingTraits<std::unique_ptr<ELFYAML::Chunk>>::validate(
 
   auto BuildErrPrefix = [](ArrayRef<std::pair<StringRef, bool>> EntV) {
     std::string Msg;
-    for (size_t I = 0; I < EntV.size(); ++I) {
+    for (size_t I = 0, E = EntV.size(); I != E; ++I) {
       StringRef Name = EntV[I].first;
       if (I == 0) {
         Msg = "\"" + Name.str() + "\"";
@@ -1465,13 +1465,13 @@ std::string MappingTraits<std::unique_ptr<ELFYAML::Chunk>>::validate(
   if (const auto *RawSection = dyn_cast<ELFYAML::RawContentSection>(C.get())) {
     if (RawSection->Flags && RawSection->ShFlags)
       return "ShFlags and Flags cannot be used together";
-    return {};
+    return "";
   }
 
   if (const auto *NB = dyn_cast<ELFYAML::NoBitsSection>(C.get())) {
     if (NB->Content)
       return "SHT_NOBITS section cannot have \"Content\"";
-    return {};
+    return "";
   }
 
   if (const auto *MF = dyn_cast<ELFYAML::MipsABIFlags>(C.get())) {
@@ -1480,10 +1480,10 @@ std::string MappingTraits<std::unique_ptr<ELFYAML::Chunk>>::validate(
              "sections";
     if (MF->Size)
       return "\"Size\" key is not implemented for SHT_MIPS_ABIFLAGS sections";
-    return {};
+    return "";
   }
 
-  return {};
+  return "";
 }
 
 namespace {

diff  --git a/llvm/lib/ObjectYAML/MachOYAML.cpp b/llvm/lib/ObjectYAML/MachOYAML.cpp
index adcc4f0f1d4d..5a27d37cb726 100644
--- a/llvm/lib/ObjectYAML/MachOYAML.cpp
+++ b/llvm/lib/ObjectYAML/MachOYAML.cpp
@@ -310,7 +310,7 @@ MappingTraits<MachOYAML::Section>::validate(IO &IO,
                                             MachOYAML::Section &Section) {
   if (Section.content && Section.size < Section.content->binary_size())
     return "Section size must be greater than or equal to the content size";
-  return {};
+  return "";
 }
 
 void MappingTraits<MachO::build_tool_version>::mapping(


        


More information about the llvm-commits mailing list