Skip to content

Commit 44c2871

Browse files
committedJun 29, 2015
Convert obj->getSymbolName to sym->getName.
I doesn't depend on the object anymore. llvm-svn: 240996
1 parent 59013c3 commit 44c2871

File tree

5 files changed

+18
-17
lines changed

5 files changed

+18
-17
lines changed
 

‎llvm/include/llvm/Object/ELF.h

+2-12
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,6 @@ class ELFFile {
371371
///
372372
/// \p SymTab is used to lookup the string table to use to get the symbol's
373373
/// name.
374-
ErrorOr<StringRef> getSymbolName(StringRef StrTab, const Elf_Sym *Symb) const;
375374
ErrorOr<StringRef> getSectionName(const Elf_Shdr *Section) const;
376375
uint64_t getSymbolIndex(const Elf_Sym *sym) const;
377376
ErrorOr<ArrayRef<uint8_t> > getSectionContents(const Elf_Shdr *Sec) const;
@@ -881,7 +880,7 @@ const char *ELFFile<ELFT>::getDynamicString(uintX_t Offset) const {
881880
template <class ELFT>
882881
ErrorOr<StringRef>
883882
ELFFile<ELFT>::getStaticSymbolName(const Elf_Sym *Symb) const {
884-
return getSymbolName(DotStrtab, Symb);
883+
return Symb->getName(DotStrtab);
885884
}
886885

887886
template <class ELFT>
@@ -898,15 +897,6 @@ ErrorOr<StringRef> ELFFile<ELFT>::getSymbolName(const Elf_Sym *Symb,
898897
return getStaticSymbolName(Symb);
899898
}
900899

901-
template <class ELFT>
902-
ErrorOr<StringRef> ELFFile<ELFT>::getSymbolName(StringRef StrTab,
903-
const Elf_Sym *Sym) const {
904-
uint32_t Offset = Sym->st_name;
905-
if (Offset >= StrTab.size())
906-
return object_error::parse_failed;
907-
return StringRef(StrTab.data() + Offset);
908-
}
909-
910900
template <class ELFT>
911901
ErrorOr<StringRef>
912902
ELFFile<ELFT>::getSectionName(const Elf_Shdr *Section) const {
@@ -932,7 +922,7 @@ ErrorOr<StringRef> ELFFile<ELFT>::getSymbolVersion(const Elf_Shdr *section,
932922
// Non-dynamic symbols can have versions in their names
933923
// A name of the form 'foo@V1' indicates version 'V1', non-default.
934924
// A name of the form 'foo@@V2' indicates version 'V2', default version.
935-
ErrorOr<StringRef> SymName = getSymbolName(StrTab, symb);
925+
ErrorOr<StringRef> SymName = symb->getName(StrTab);
936926
if (!SymName)
937927
return SymName;
938928
StringRef Name = *SymName;

‎llvm/include/llvm/Object/ELFTypes.h

+12
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
#ifndef LLVM_OBJECT_ELFTYPES_H
1111
#define LLVM_OBJECT_ELFTYPES_H
1212

13+
#include "llvm/Object/Error.h"
1314
#include "llvm/Support/DataTypes.h"
1415
#include "llvm/Support/ELF.h"
1516
#include "llvm/Support/Endian.h"
17+
#include "llvm/Support/ErrorOr.h"
1618

1719
namespace llvm {
1820
namespace object {
@@ -205,8 +207,18 @@ struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {
205207
bool isExternal() const {
206208
return getBinding() != ELF::STB_LOCAL;
207209
}
210+
211+
ErrorOr<StringRef> getName(StringRef StrTab) const;
208212
};
209213

214+
template <class ELFT>
215+
ErrorOr<StringRef> Elf_Sym_Impl<ELFT>::getName(StringRef StrTab) const {
216+
uint32_t Offset = this->st_name;
217+
if (Offset >= StrTab.size())
218+
return object_error::parse_failed;
219+
return StringRef(StrTab.data() + Offset);
220+
}
221+
210222
/// Elf_Versym: This is the structure of entries in the SHT_GNU_versym section
211223
/// (.gnu.version). This structure is identical for ELF32 and ELF64.
212224
template <class ELFT>

‎llvm/tools/llvm-objdump/llvm-objdump.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj,
359359
return EC;
360360
Target = *SecName;
361361
} else {
362-
ErrorOr<StringRef> SymName = EF.getSymbolName(StrTab, symb);
362+
ErrorOr<StringRef> SymName = symb->getName(StrTab);
363363
if (!SymName)
364364
return SymName.getError();
365365
Target = *SymName;

‎llvm/tools/llvm-readobj/ELFDumper.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -760,8 +760,7 @@ void ELFDumper<ELFT>::printRelocation(const Elf_Shdr *Sec,
760760
const Elf_Shdr *StrTableSec = Obj->getSection(SymTable->sh_link);
761761
ErrorOr<StringRef> StrTableOrErr = Obj->getStringTable(StrTableSec);
762762
if (!error(StrTableOrErr.getError()))
763-
TargetName =
764-
errorOrDefault(Obj->getSymbolName(*StrTableOrErr, Sym.second));
763+
TargetName = errorOrDefault(Sym.second->getName(*StrTableOrErr));
765764
}
766765

767766
if (opts::ExpandRelocs) {

‎llvm/tools/obj2yaml/elf2yaml.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ std::error_code ELFDumper<ELFT>::dumpRelocation(const Elf_Shdr *Shdr,
189189
return EC;
190190
StringRef StrTab = *StrTabOrErr;
191191

192-
ErrorOr<StringRef> NameOrErr = Obj.getSymbolName(StrTab, NamePair.second);
192+
ErrorOr<StringRef> NameOrErr = NamePair.second->getName(StrTab);
193193
if (std::error_code EC = NameOrErr.getError())
194194
return EC;
195195
R.Symbol = NameOrErr.get();
@@ -314,7 +314,7 @@ ErrorOr<ELFYAML::Group *> ELFDumper<ELFT>::dumpGroup(const Elf_Shdr *Shdr) {
314314
auto sectionContents = Obj.getSectionContents(Shdr);
315315
if (std::error_code ec = sectionContents.getError())
316316
return ec;
317-
ErrorOr<StringRef> symbolName = Obj.getSymbolName(StrTab, symbol);
317+
ErrorOr<StringRef> symbolName = symbol->getName(StrTab);
318318
if (std::error_code EC = symbolName.getError())
319319
return EC;
320320
S->Info = *symbolName;

0 commit comments

Comments
 (0)