diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h index a5c06dacec6..78e035986b3 100644 --- a/include/llvm/Object/ELF.h +++ b/include/llvm/Object/ELF.h @@ -147,16 +147,6 @@ public: return make_range(symbol_begin(Sec), symbol_end(Sec)); } - const Elf_Sym *symbol_begin() const { return symbol_begin(dot_symtab_sec); } - const Elf_Sym *symbol_end() const { return symbol_end(dot_symtab_sec); } - Elf_Sym_Range symbols() const { return symbols(dot_symtab_sec); } - - const Elf_Sym *dynamic_symbol_begin() const { - return symbol_begin(DotDynSymSec); - } - const Elf_Sym *dynamic_symbol_end() const { return symbol_end(DotDynSymSec); } - Elf_Sym_Range dynamic_symbols() const { return symbols(DotDynSymSec); } - typedef iterator_range Elf_Rela_Range; const Elf_Rela *rela_begin(const Elf_Shdr *sec) const { @@ -235,7 +225,7 @@ template ELF::Elf64_Word ELFFile::getExtendedSymbolTableIndex(const Elf_Sym *Sym) const { assert(Sym->st_shndx == ELF::SHN_XINDEX); - unsigned Index = Sym - symbol_begin(); + unsigned Index = Sym - symbol_begin(dot_symtab_sec); // FIXME: error checking const Elf_Word *ShndxTable = reinterpret_cast( diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h index cde5f8dc51e..4b628e1df97 100644 --- a/include/llvm/Object/ELFObjectFile.h +++ b/include/llvm/Object/ELFObjectFile.h @@ -474,7 +474,8 @@ uint32_t ELFObjectFile::getSymbolFlags(DataRefImpl Sym) const { Result |= SymbolRef::SF_Absolute; if (ESym->getType() == ELF::STT_FILE || ESym->getType() == ELF::STT_SECTION || - ESym == EF.symbol_begin() || ESym == EF.dynamic_symbol_begin()) + ESym == EF.symbol_begin(EF.getDotSymtabSec()) || + ESym == EF.symbol_begin(EF.getDotDynSymSec())) Result |= SymbolRef::SF_FormatSpecific; if (EF.getHeader()->e_machine == ELF::EM_ARM) { diff --git a/tools/llvm-readobj/ARMEHABIPrinter.h b/tools/llvm-readobj/ARMEHABIPrinter.h index 4b8744e2015..2917cf0e118 100644 --- a/tools/llvm-readobj/ARMEHABIPrinter.h +++ b/tools/llvm-readobj/ARMEHABIPrinter.h @@ -349,7 +349,7 @@ PrinterContext::FunctionAtAddress(unsigned Section, error(StrTableOrErr.getError()); StringRef StrTable = *StrTableOrErr; - for (const Elf_Sym &Sym : ELF->symbols()) + for (const Elf_Sym &Sym : ELF->symbols(ELF->getDotSymtabSec())) if (Sym.st_shndx == Section && Sym.st_value == Address && Sym.getType() == ELF::STT_FUNC) return Sym.getName(StrTable); diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp index 5887d2944d1..50473d7bb04 100644 --- a/tools/llvm-readobj/ELFDumper.cpp +++ b/tools/llvm-readobj/ELFDumper.cpp @@ -995,7 +995,7 @@ void ELFDumper::printSections() { error(StrTableOrErr.getError()); StringRef StrTable = *StrTableOrErr; - for (const Elf_Sym &Sym : Obj->symbols()) { + for (const Elf_Sym &Sym : Obj->symbols(Symtab)) { ErrorOr SymSec = Obj->getSection(&Sym); if (!SymSec) continue; @@ -1126,7 +1126,7 @@ void ELFDumper::printSymbols() { ErrorOr StrTableOrErr = Obj->getStringTableForSymtab(*Symtab); error(StrTableOrErr.getError()); StringRef StrTable = *StrTableOrErr; - for (const Elf_Sym &Sym : Obj->symbols()) + for (const Elf_Sym &Sym : Obj->symbols(Symtab)) printSymbol(&Sym, StrTable, false); } diff --git a/tools/obj2yaml/elf2yaml.cpp b/tools/obj2yaml/elf2yaml.cpp index 2c6fc1bb09c..0dcb4ef38f8 100644 --- a/tools/obj2yaml/elf2yaml.cpp +++ b/tools/obj2yaml/elf2yaml.cpp @@ -129,7 +129,7 @@ ErrorOr ELFDumper::dump() { StringRef StrTable = *StrTableOrErr; bool IsFirstSym = true; - for (const Elf_Sym &Sym : Obj.symbols()) { + for (const Elf_Sym &Sym : Obj.symbols(Obj.getDotSymtabSec())) { if (IsFirstSym) { IsFirstSym = false; continue;