From 9ed0d629ce9ee7a1a8d7231347ad3050d1f98732 Mon Sep 17 00:00:00 2001 From: Rafael Espindola <rafael.espindola@gmail.com> Date: Tue, 21 Jul 2015 18:04:29 +0000 Subject: [PATCH] Remove getStaticSymbolName. Every user now keeps track of the correct string table to use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242818 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ELF.h | 7 ------- tools/obj2yaml/elf2yaml.cpp | 14 +++++++++++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h index 4ba5bc10ffe..6ebb92f7ee8 100644 --- a/include/llvm/Object/ELF.h +++ b/include/llvm/Object/ELF.h @@ -388,7 +388,6 @@ public: ErrorOr<const Elf_Shdr *> getSection(uint32_t Index) const; const Elf_Sym *getSymbol(uint32_t index) const; - ErrorOr<StringRef> getStaticSymbolName(const Elf_Sym *Symb) const; ErrorOr<StringRef> getDynamicSymbolName(const Elf_Sym *Symb) const; ErrorOr<StringRef> getSectionName(const Elf_Shdr *Section) const; @@ -897,12 +896,6 @@ const char *ELFFile<ELFT>::getDynamicString(uintX_t Offset) const { return (const char *)DynStrRegion.Addr + Offset; } -template <class ELFT> -ErrorOr<StringRef> -ELFFile<ELFT>::getStaticSymbolName(const Elf_Sym *Symb) const { - return Symb->getName(DotStrtab); -} - template <class ELFT> ErrorOr<StringRef> ELFFile<ELFT>::getDynamicSymbolName(const Elf_Sym *Symb) const { diff --git a/tools/obj2yaml/elf2yaml.cpp b/tools/obj2yaml/elf2yaml.cpp index 05efdb6c759..def3981eae1 100644 --- a/tools/obj2yaml/elf2yaml.cpp +++ b/tools/obj2yaml/elf2yaml.cpp @@ -27,7 +27,8 @@ class ELFDumper { const object::ELFFile<ELFT> &Obj; - std::error_code dumpSymbol(const Elf_Sym *Sym, ELFYAML::Symbol &S); + std::error_code dumpSymbol(const Elf_Sym *Sym, StringRef StrTable, + ELFYAML::Symbol &S); std::error_code dumpCommonSection(const Elf_Shdr *Shdr, ELFYAML::Section &S); std::error_code dumpCommonRelocationSection(const Elf_Shdr *Shdr, ELFYAML::RelocationSection &S); @@ -121,6 +122,12 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() { } // Dump symbols + const Elf_Shdr *Symtab = Obj.getDotSymtabSec(); + ErrorOr<StringRef> StrTableOrErr = Obj.getStringTableForSymtab(*Symtab); + if (std::error_code EC = StrTableOrErr.getError()) + return EC; + StringRef StrTable = *StrTableOrErr; + bool IsFirstSym = true; for (const Elf_Sym &Sym : Obj.symbols()) { if (IsFirstSym) { @@ -129,7 +136,7 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() { } ELFYAML::Symbol S; - if (std::error_code EC = ELFDumper<ELFT>::dumpSymbol(&Sym, S)) + if (std::error_code EC = ELFDumper<ELFT>::dumpSymbol(&Sym, StrTable, S)) return EC; switch (Sym.getBinding()) @@ -153,13 +160,14 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() { template <class ELFT> std::error_code ELFDumper<ELFT>::dumpSymbol(const Elf_Sym *Sym, + StringRef StrTable, ELFYAML::Symbol &S) { S.Type = Sym->getType(); S.Value = Sym->st_value; S.Size = Sym->st_size; S.Other = Sym->st_other; - ErrorOr<StringRef> NameOrErr = Obj.getStaticSymbolName(Sym); + ErrorOr<StringRef> NameOrErr = Sym->getName(StrTable); if (std::error_code EC = NameOrErr.getError()) return EC; S.Name = NameOrErr.get(); -- 2.34.1