diff options
Diffstat (limited to 'tools/llvm-symbolizer/LLVMSymbolize.cpp')
-rw-r--r-- | tools/llvm-symbolizer/LLVMSymbolize.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp index c1a0654e87..13f2f8fc58 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.cpp +++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp @@ -53,9 +53,8 @@ static void patchFunctionNameInDILineInfo(const std::string &NewFunctionName, ModuleInfo::ModuleInfo(ObjectFile *Obj, DIContext *DICtx) : Module(Obj), DebugInfoContext(DICtx) { - for (symbol_iterator si = Module->symbol_begin(), se = Module->symbol_end(); - si != se; ++si) { - addSymbol(si); + for (const SymbolRef &Symbol : Module->symbols()) { + addSymbol(Symbol); } bool NoSymbolTable = (Module->symbol_begin() == Module->symbol_end()); if (NoSymbolTable && Module->isELF()) { @@ -63,20 +62,19 @@ ModuleInfo::ModuleInfo(ObjectFile *Obj, DIContext *DICtx) std::pair<symbol_iterator, symbol_iterator> IDyn = getELFDynamicSymbolIterators(Module); for (symbol_iterator si = IDyn.first, se = IDyn.second; si != se; ++si) { - addSymbol(si); + addSymbol(*si); } } } -void ModuleInfo::addSymbol(const symbol_iterator &Sym) { +void ModuleInfo::addSymbol(const SymbolRef &Symbol) { SymbolRef::Type SymbolType; - if (error(Sym->getType(SymbolType))) + if (error(Symbol.getType(SymbolType))) return; - if (SymbolType != SymbolRef::ST_Function && - SymbolType != SymbolRef::ST_Data) + if (SymbolType != SymbolRef::ST_Function && SymbolType != SymbolRef::ST_Data) return; uint64_t SymbolAddress; - if (error(Sym->getAddress(SymbolAddress)) || + if (error(Symbol.getAddress(SymbolAddress)) || SymbolAddress == UnknownAddressOrSize) return; uint64_t SymbolSize; @@ -84,11 +82,11 @@ void ModuleInfo::addSymbol(const symbol_iterator &Sym) { // occupies the memory range up to the following symbol. if (isa<MachOObjectFile>(Module)) SymbolSize = 0; - else if (error(Sym->getSize(SymbolSize)) || + else if (error(Symbol.getSize(SymbolSize)) || SymbolSize == UnknownAddressOrSize) return; StringRef SymbolName; - if (error(Sym->getName(SymbolName))) + if (error(Symbol.getName(SymbolName))) return; // Mach-O symbol table names have leading underscore, skip it. if (Module->isMachO() && SymbolName.size() > 0 && SymbolName[0] == '_') |