diff options
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2elf.cpp | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp index 48da02688de..79de01ef43e 100644 --- a/llvm/tools/yaml2obj/yaml2elf.cpp +++ b/llvm/tools/yaml2obj/yaml2elf.cpp @@ -60,28 +60,28 @@ public: // sections and symbols can be referenced by name instead of by index. namespace { class NameToIdxMap { - StringMap<unsigned> Map;
-
+ StringMap<unsigned> Map; + public: - /// \Returns false if name is already present in the map.
- bool addName(StringRef Name, unsigned Ndx) {
- return Map.insert({Name, Ndx}).second;
+ /// \Returns false if name is already present in the map. + bool addName(StringRef Name, unsigned Ndx) { + return Map.insert({Name, Ndx}).second; } - /// \Returns false if name is not present in the map.
+ /// \Returns false if name is not present in the map. bool lookup(StringRef Name, unsigned &Idx) const { - auto I = Map.find(Name);
+ auto I = Map.find(Name); if (I == Map.end()) - return false;
+ return false; Idx = I->getValue(); - return true;
+ return true; } - /// Asserts if name is not present in the map.
+ /// Asserts if name is not present in the map. unsigned get(StringRef Name) const { - unsigned Idx;
- if (lookup(Name, Idx))
- return Idx;
- assert(false && "Expected section not found in index");
- return 0;
+ unsigned Idx; + if (lookup(Name, Idx)) + return Idx; + assert(false && "Expected section not found in index"); + return 0; } unsigned size() const { return Map.size(); } }; @@ -239,7 +239,7 @@ void ELFState<ELFT>::initProgramHeaders(std::vector<Elf_Phdr> &PHeaders) { static bool convertSectionIndex(NameToIdxMap &SN2I, StringRef SecName, StringRef IndexSrc, unsigned &IndexDest) { - if (!SN2I.lookup(IndexSrc, IndexDest) && !to_integer(IndexSrc, IndexDest)) {
+ if (!SN2I.lookup(IndexSrc, IndexDest) && !to_integer(IndexSrc, IndexDest)) { WithColor::error() << "Unknown section referenced: '" << IndexSrc << "' at YAML section '" << SecName << "'.\n"; return false; @@ -393,13 +393,13 @@ void ELFState<ELFT>::setProgramHeaderLayout(std::vector<Elf_Phdr> &PHeaders, for (auto &YamlPhdr : Doc.ProgramHeaders) { Elf_Phdr &PHeader = PHeaders[PhdrIdx++]; - std::vector<Elf_Shdr *> Sections;
- for (const ELFYAML::SectionName &SecName : YamlPhdr.Sections) {
- unsigned Index;
- if (!SN2I.lookup(SecName.Section, Index)) {
- WithColor::error() << "Unknown section referenced: '" << SecName.Section
- << "' by program header.\n";
- exit(1);
+ std::vector<Elf_Shdr *> Sections; + for (const ELFYAML::SectionName &SecName : YamlPhdr.Sections) { + unsigned Index; + if (!SN2I.lookup(SecName.Section, Index)) { + WithColor::error() << "Unknown section referenced: '" << SecName.Section + << "' by program header.\n"; + exit(1); } Sections.push_back(&SHeaders[Index]); } @@ -480,7 +480,7 @@ void ELFState<ELFT>::addSymbols(ArrayRef<ELFYAML::Symbol> Symbols, Symbol.setBindingAndType(Sym.Binding, Sym.Type); if (!Sym.Section.empty()) { unsigned Index; - if (!SN2I.lookup(Sym.Section, Index)) {
+ if (!SN2I.lookup(Sym.Section, Index)) { WithColor::error() << "Unknown section referenced: '" << Sym.Section << "' by YAML symbol " << Sym.Name << ".\n"; exit(1); @@ -554,7 +554,7 @@ ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader, unsigned SymIdx = 0; // If a relocation references a symbol, try to look one up in the symbol // table. If it is not there, treat the value as a symbol index. - if (Rel.Symbol && !SymN2I.lookup(*Rel.Symbol, SymIdx) &&
+ if (Rel.Symbol && !SymN2I.lookup(*Rel.Symbol, SymIdx) && !to_integer(*Rel.Symbol, SymIdx)) { WithColor::error() << "Unknown symbol referenced: '" << *Rel.Symbol << "' at YAML section '" << Section.Name << "'.\n"; @@ -589,11 +589,11 @@ bool ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader, SHeader.sh_entsize = 4; SHeader.sh_size = SHeader.sh_entsize * Section.Members.size(); - unsigned SymIdx;
- if (!SymN2I.lookup(Section.Signature, SymIdx) &&
- !to_integer(Section.Signature, SymIdx)) {
- WithColor::error() << "Unknown symbol referenced: '" << Section.Signature
- << "' at YAML section '" << Section.Name << "'.\n";
+ unsigned SymIdx; + if (!SymN2I.lookup(Section.Signature, SymIdx) && + !to_integer(Section.Signature, SymIdx)) { + WithColor::error() << "Unknown symbol referenced: '" << Section.Signature + << "' at YAML section '" << Section.Name << "'.\n"; return false; } SHeader.sh_info = SymIdx; @@ -791,7 +791,7 @@ template <class ELFT> bool ELFState<ELFT>::buildSectionIndex() { StringRef Name = Doc.Sections[i]->Name; DotShStrtab.add(Name); // "+ 1" to take into account the SHT_NULL entry. - if (!SN2I.addName(Name, i + 1)) {
+ if (!SN2I.addName(Name, i + 1)) { WithColor::error() << "Repeated section name: '" << Name << "' at YAML section number " << i << ".\n"; return false; @@ -827,7 +827,7 @@ bool ELFState<ELFT>::buildSymbolIndex(ArrayRef<ELFYAML::Symbol> Symbols) { if (Sym.Binding.value != ELF::STB_LOCAL) GlobalSymbolSeen = true; - if (!Name.empty() && !SymN2I.addName(Name, I)) {
+ if (!Name.empty() && !SymN2I.addName(Name, I)) { WithColor::error() << "Repeated symbol name: '" << Name << "'.\n"; return false; } |

