[C++11] Introduce ObjectFile::symbols() to use range-based loops.
[oota-llvm.git] / tools / llvm-symbolizer / LLVMSymbolize.cpp
index c1a0654e87f4d6533c602b1514887540d8ce5a54..13f2f8fc587901684fd7150036b11722e59ec939 100644 (file)
@@ -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] == '_')