summaryrefslogtreecommitdiff
path: root/tools/llvm-symbolizer
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2014-03-17 07:28:19 +0000
committerAlexey Samsonov <samsonov@google.com>2014-03-17 07:28:19 +0000
commit133aacf0dd1d7d8c7828594e5cd2e9595e0331ed (patch)
treec23ad0adb1e11ad755918cc3c24bd740a85b5c55 /tools/llvm-symbolizer
parent6e3aceffd39eb8f7e750b5a8364269fc8efc0e53 (diff)
downloadllvm-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.cpp20
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.h2
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;