[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