diff options
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2elf.cpp | 31 | 
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;  | 

