diff options
author | Alexey Samsonov <samsonov@google.com> | 2014-03-17 07:28:19 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2014-03-17 07:28:19 +0000 |
commit | 133aacf0dd1d7d8c7828594e5cd2e9595e0331ed (patch) | |
tree | c23ad0adb1e11ad755918cc3c24bd740a85b5c55 /tools/llvm-symbolizer | |
parent | 6e3aceffd39eb8f7e750b5a8364269fc8efc0e53 (diff) | |
download | llvm-133aacf0dd1d7d8c7828594e5cd2e9595e0331ed.tar.gz llvm-133aacf0dd1d7d8c7828594e5cd2e9595e0331ed.tar.bz2 llvm-133aacf0dd1d7d8c7828594e5cd2e9595e0331ed.tar.xz |
[C++11] Introduce ObjectFile::symbols() to use range-based loops.
Reviewers: rafael
Reviewed By: rafael
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D3081
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204031 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-symbolizer')
-rw-r--r-- | tools/llvm-symbolizer/LLVMSymbolize.cpp | 20 | ||||
-rw-r--r-- | tools/llvm-symbolizer/LLVMSymbolize.h | 2 |
2 files changed, 10 insertions, 12 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] == '_') diff --git a/tools/llvm-symbolizer/LLVMSymbolize.h b/tools/llvm-symbolizer/LLVMSymbolize.h index 53fd818378..288be8022e 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.h +++ b/tools/llvm-symbolizer/LLVMSymbolize.h @@ -101,7 +101,7 @@ private: bool getNameFromSymbolTable(SymbolRef::Type Type, uint64_t Address, std::string &Name, uint64_t &Addr, uint64_t &Size) const; - void addSymbol(const symbol_iterator &Sym); + void addSymbol(const SymbolRef &Symbol); ObjectFile *Module; std::unique_ptr<DIContext> DebugInfoContext; |