summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/tools/yaml2obj/yaml2elf.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp
index 3e7234a4963..6bae48bba40 100644
--- a/llvm/tools/yaml2obj/yaml2elf.cpp
+++ b/llvm/tools/yaml2obj/yaml2elf.cpp
@@ -133,8 +133,7 @@ class ELFState {
const ELFYAML::Object &Doc;
bool buildSectionIndex();
- bool buildSymbolIndex(std::size_t &StartIndex,
- const std::vector<ELFYAML::Symbol> &Symbols);
+ bool buildSymbolIndex(const ELFYAML::LocalGlobalWeakSymbols &);
void initELFHeader(Elf_Ehdr &Header);
void initProgramHeaders(std::vector<Elf_Phdr> &PHeaders);
bool initSectionHeaders(std::vector<Elf_Shdr> &SHeaders,
@@ -779,16 +778,19 @@ template <class ELFT> bool ELFState<ELFT>::buildSectionIndex() {
}
template <class ELFT>
-bool
-ELFState<ELFT>::buildSymbolIndex(std::size_t &StartIndex,
- const std::vector<ELFYAML::Symbol> &Symbols) {
- for (const auto &Sym : Symbols) {
- ++StartIndex;
- if (Sym.Name.empty())
- continue;
- if (SymN2I.addName(Sym.Name, StartIndex)) {
- WithColor::error() << "Repeated symbol name: '" << Sym.Name << "'.\n";
- return false;
+bool ELFState<ELFT>::buildSymbolIndex(
+ const ELFYAML::LocalGlobalWeakSymbols &Symbols) {
+ std::size_t I = 0;
+ for (const std::vector<ELFYAML::Symbol> &V :
+ {Symbols.Local, Symbols.Global, Symbols.Weak}) {
+ for (const auto &Sym : V) {
+ ++I;
+ if (Sym.Name.empty())
+ continue;
+ if (SymN2I.addName(Sym.Name, I)) {
+ WithColor::error() << "Repeated symbol name: '" << Sym.Name << "'.\n";
+ return false;
+ }
}
}
return true;
@@ -846,10 +848,7 @@ int ELFState<ELFT>::writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) {
if (!State.buildSectionIndex())
return 1;
- std::size_t StartSymIndex = 0;
- if (!State.buildSymbolIndex(StartSymIndex, Doc.Symbols.Local) ||
- !State.buildSymbolIndex(StartSymIndex, Doc.Symbols.Global) ||
- !State.buildSymbolIndex(StartSymIndex, Doc.Symbols.Weak))
+ if (!State.buildSymbolIndex(Doc.Symbols))
return 1;
Elf_Ehdr Header;
OpenPOWER on IntegriCloud