[llvm] r203802 - [C++11] Use ObjectFile::sections() in commandline llvm tools

Alexey Samsonov samsonov at google.com
Thu Mar 13 07:37:37 PDT 2014


Author: samsonov
Date: Thu Mar 13 09:37:36 2014
New Revision: 203802

URL: http://llvm.org/viewvc/llvm-project?rev=203802&view=rev
Log:
[C++11] Use ObjectFile::sections() in commandline llvm tools

Modified:
    llvm/trunk/tools/llvm-objdump/MachODump.cpp
    llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
    llvm/trunk/tools/llvm-readobj/MachODumper.cpp
    llvm/trunk/tools/llvm-size/llvm-size.cpp
    llvm/trunk/tools/llvm-symbolizer/LLVMSymbolize.cpp

Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=203802&r1=203801&r2=203802&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Thu Mar 13 09:37:36 2014
@@ -158,17 +158,14 @@ getSectionsAndSymbols(const MachO::mach_
        SI != SE; ++SI)
     Symbols.push_back(*SI);
 
-  for (section_iterator SI = MachOObj->section_begin(),
-                        SE = MachOObj->section_end();
-       SI != SE; ++SI) {
-    SectionRef SR = *SI;
+  for (const SectionRef &Section : MachOObj->sections()) {
     StringRef SectName;
-    SR.getName(SectName);
-    Sections.push_back(*SI);
+    Section.getName(SectName);
+    Sections.push_back(Section);
   }
 
   MachOObjectFile::LoadCommandInfo Command =
-    MachOObj->getFirstLoadCommandInfo();
+      MachOObj->getFirstLoadCommandInfo();
   bool BaseSegmentAddressSet = false;
   for (unsigned i = 0; ; ++i) {
     if (Command.C.cmd == MachO::LC_FUNCTION_STARTS) {

Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=203802&r1=203801&r2=203802&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu Mar 13 09:37:36 2014
@@ -385,28 +385,26 @@ static void DisassembleObject(const Obje
   // Create a mapping, RelocSecs = SectionRelocMap[S], where sections
   // in RelocSecs contain the relocations for section S.
   error_code EC;
-  std::map<SectionRef, SmallVector<SectionRef, 1> > SectionRelocMap;
-  for (section_iterator I = Obj->section_begin(), E = Obj->section_end();
-       I != E; ++I) {
-    section_iterator Sec2 = I->getRelocatedSection();
+  std::map<SectionRef, SmallVector<SectionRef, 1>> SectionRelocMap;
+  for (const SectionRef &Section : Obj->sections()) {
+    section_iterator Sec2 = Section.getRelocatedSection();
     if (Sec2 != Obj->section_end())
-      SectionRelocMap[*Sec2].push_back(*I);
+      SectionRelocMap[*Sec2].push_back(Section);
   }
 
-  for (section_iterator I = Obj->section_begin(), E = Obj->section_end();
-       I != E; ++I) {
+  for (const SectionRef &Section : Obj->sections()) {
     bool Text;
-    if (error(I->isText(Text)))
+    if (error(Section.isText(Text)))
       break;
     if (!Text)
       continue;
 
     uint64_t SectionAddr;
-    if (error(I->getAddress(SectionAddr)))
+    if (error(Section.getAddress(SectionAddr)))
       break;
 
     uint64_t SectSize;
-    if (error(I->getSize(SectSize)))
+    if (error(Section.getSize(SectSize)))
       break;
 
     // Make a list of all the symbols in this section.
@@ -414,7 +412,7 @@ static void DisassembleObject(const Obje
     for (symbol_iterator SI = Obj->symbol_begin(), SE = Obj->symbol_end();
          SI != SE; ++SI) {
       bool contains;
-      if (!error(I->containsSymbol(*SI, contains)) && contains) {
+      if (!error(Section.containsSymbol(*SI, contains)) && contains) {
         uint64_t Address;
         if (error(SI->getAddress(Address)))
           break;
@@ -437,7 +435,7 @@ static void DisassembleObject(const Obje
     // Make a list of all the relocations for this section.
     std::vector<RelocationRef> Rels;
     if (InlineRelocs) {
-      SmallVectorImpl<SectionRef> *RelocSecs = &SectionRelocMap[*I];
+      SmallVectorImpl<SectionRef> *RelocSecs = &SectionRelocMap[Section];
       for (SmallVectorImpl<SectionRef>::iterator RelocSec = RelocSecs->begin(),
                                                  E = RelocSecs->end();
            RelocSec != E; ++RelocSec) {
@@ -453,11 +451,11 @@ static void DisassembleObject(const Obje
 
     StringRef SegmentName = "";
     if (const MachOObjectFile *MachO = dyn_cast<const MachOObjectFile>(Obj)) {
-      DataRefImpl DR = I->getRawDataRefImpl();
+      DataRefImpl DR = Section.getRawDataRefImpl();
       SegmentName = MachO->getSectionFinalSegmentName(DR);
     }
     StringRef name;
-    if (error(I->getName(name)))
+    if (error(Section.getName(name)))
       break;
     outs() << "Disassembly of section ";
     if (!SegmentName.empty())
@@ -474,7 +472,7 @@ static void DisassembleObject(const Obje
     raw_svector_ostream CommentStream(Comments);
 
     StringRef Bytes;
-    if (error(I->getContents(Bytes)))
+    if (error(Section.getContents(Bytes)))
       break;
     StringRefMemoryObject memoryObject(Bytes, SectionAddr);
     uint64_t Size;
@@ -554,16 +552,16 @@ static void DisassembleObject(const Obje
   }
 }
 
-static void PrintRelocations(const ObjectFile *o) {
-  for (section_iterator si = o->section_begin(), se = o->section_end();
-       si != se; ++si) {
-    if (si->relocation_begin() == si->relocation_end())
+static void PrintRelocations(const ObjectFile *Obj) {
+  for (const SectionRef &Section : Obj->sections()) {
+    if (Section.relocation_begin() == Section.relocation_end())
       continue;
     StringRef secname;
-    if (error(si->getName(secname))) continue;
+    if (error(Section.getName(secname)))
+      continue;
     outs() << "RELOCATION RECORDS FOR [" << secname << "]:\n";
-    for (relocation_iterator ri = si->relocation_begin(),
-                             re = si->relocation_end();
+    for (relocation_iterator ri = Section.relocation_begin(),
+                             re = Section.relocation_end();
          ri != re; ++ri) {
       bool hidden;
       uint64_t address;
@@ -580,43 +578,50 @@ static void PrintRelocations(const Objec
   }
 }
 
-static void PrintSectionHeaders(const ObjectFile *o) {
+static void PrintSectionHeaders(const ObjectFile *Obj) {
   outs() << "Sections:\n"
             "Idx Name          Size      Address          Type\n";
   unsigned i = 0;
-  for (section_iterator si = o->section_begin(), se = o->section_end();
-       si != se; ++si) {
+  for (const SectionRef &Section : Obj->sections()) {
     StringRef Name;
-    if (error(si->getName(Name)))
+    if (error(Section.getName(Name)))
       return;
     uint64_t Address;
-    if (error(si->getAddress(Address))) return;
+    if (error(Section.getAddress(Address)))
+      return;
     uint64_t Size;
-    if (error(si->getSize(Size))) return;
+    if (error(Section.getSize(Size)))
+      return;
     bool Text, Data, BSS;
-    if (error(si->isText(Text))) return;
-    if (error(si->isData(Data))) return;
-    if (error(si->isBSS(BSS))) return;
+    if (error(Section.isText(Text)))
+      return;
+    if (error(Section.isData(Data)))
+      return;
+    if (error(Section.isBSS(BSS)))
+      return;
     std::string Type = (std::string(Text ? "TEXT " : "") +
                         (Data ? "DATA " : "") + (BSS ? "BSS" : ""));
-    outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %s\n",
-                     i, Name.str().c_str(), Size, Address, Type.c_str());
+    outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %s\n", i,
+                     Name.str().c_str(), Size, Address, Type.c_str());
     ++i;
   }
 }
 
-static void PrintSectionContents(const ObjectFile *o) {
+static void PrintSectionContents(const ObjectFile *Obj) {
   error_code EC;
-  for (section_iterator si = o->section_begin(), se = o->section_end();
-       si != se; ++si) {
+  for (const SectionRef &Section : Obj->sections()) {
     StringRef Name;
     StringRef Contents;
     uint64_t BaseAddr;
     bool BSS;
-    if (error(si->getName(Name))) continue;
-    if (error(si->getContents(Contents))) continue;
-    if (error(si->getAddress(BaseAddr))) continue;
-    if (error(si->isBSS(BSS))) continue;
+    if (error(Section.getName(Name)))
+      continue;
+    if (error(Section.getContents(Contents)))
+      continue;
+    if (error(Section.getAddress(BaseAddr)))
+      continue;
+    if (error(Section.isBSS(BSS)))
+      continue;
 
     outs() << "Contents of section " << Name << ":\n";
     if (BSS) {

Modified: llvm/trunk/tools/llvm-readobj/MachODumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/MachODumper.cpp?rev=203802&r1=203801&r2=203802&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/MachODumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/MachODumper.cpp Thu Mar 13 09:37:36 2014
@@ -40,10 +40,9 @@ public:
 private:
   void printSymbol(symbol_iterator SymI);
 
-  void printRelocation(section_iterator SecI, relocation_iterator RelI);
+  void printRelocation(relocation_iterator RelI);
 
-  void printRelocation(const MachOObjectFile *Obj,
-                       section_iterator SecI, relocation_iterator RelI);
+  void printRelocation(const MachOObjectFile *Obj, relocation_iterator RelI);
 
   void printSections(const MachOObjectFile *Obj);
 
@@ -216,18 +215,16 @@ void MachODumper::printSections(const Ma
   ListScope Group(W, "Sections");
 
   int SectionIndex = -1;
-  for (section_iterator SecI = Obj->section_begin(),
-                        SecE = Obj->section_end();
-       SecI != SecE; ++SecI) {
+  for (const SectionRef &Section : Obj->sections()) {
     ++SectionIndex;
 
-    MachOSection Section;
-    getSection(Obj, SecI->getRawDataRefImpl(), Section);
-    DataRefImpl DR = SecI->getRawDataRefImpl();
+    MachOSection MOSection;
+    getSection(Obj, Section.getRawDataRefImpl(), MOSection);
+    DataRefImpl DR = Section.getRawDataRefImpl();
 
     StringRef Name;
-    if (error(SecI->getName(Name)))
-        Name = "";
+    if (error(Section.getName(Name)))
+      Name = "";
 
     ArrayRef<char> RawName = Obj->getSectionRawName(DR);
     StringRef SegmentName = Obj->getSectionFinalSegmentName(DR);
@@ -237,34 +234,33 @@ void MachODumper::printSections(const Ma
     W.printNumber("Index", SectionIndex);
     W.printBinary("Name", Name, RawName);
     W.printBinary("Segment", SegmentName, RawSegmentName);
-    W.printHex   ("Address", Section.Address);
-    W.printHex   ("Size", Section.Size);
-    W.printNumber("Offset", Section.Offset);
-    W.printNumber("Alignment", Section.Alignment);
-    W.printHex   ("RelocationOffset", Section.RelocationTableOffset);
-    W.printNumber("RelocationCount", Section.NumRelocationTableEntries);
-    W.printEnum  ("Type", Section.Flags & 0xFF,
-                  makeArrayRef(MachOSectionAttributes));
-    W.printFlags ("Attributes", Section.Flags >> 8,
-                  makeArrayRef(MachOSectionAttributes));
-    W.printHex   ("Reserved1", Section.Reserved1);
-    W.printHex   ("Reserved2", Section.Reserved2);
+    W.printHex("Address", MOSection.Address);
+    W.printHex("Size", MOSection.Size);
+    W.printNumber("Offset", MOSection.Offset);
+    W.printNumber("Alignment", MOSection.Alignment);
+    W.printHex("RelocationOffset", MOSection.RelocationTableOffset);
+    W.printNumber("RelocationCount", MOSection.NumRelocationTableEntries);
+    W.printEnum("Type", MOSection.Flags & 0xFF,
+                makeArrayRef(MachOSectionAttributes));
+    W.printFlags("Attributes", MOSection.Flags >> 8,
+                 makeArrayRef(MachOSectionAttributes));
+    W.printHex("Reserved1", MOSection.Reserved1);
+    W.printHex("Reserved2", MOSection.Reserved2);
 
     if (opts::SectionRelocations) {
       ListScope D(W, "Relocations");
-      for (relocation_iterator RelI = SecI->relocation_begin(),
-                               RelE = SecI->relocation_end();
+      for (relocation_iterator RelI = Section.relocation_begin(),
+                               RelE = Section.relocation_end();
            RelI != RelE; ++RelI)
-        printRelocation(SecI, RelI);
+        printRelocation(RelI);
     }
 
     if (opts::SectionSymbols) {
       ListScope D(W, "Symbols");
-      for (symbol_iterator SymI = Obj->symbol_begin(),
-                           SymE = Obj->symbol_end();
+      for (symbol_iterator SymI = Obj->symbol_begin(), SymE = Obj->symbol_end();
            SymI != SymE; ++SymI) {
         bool Contained = false;
-        if (SecI->containsSymbol(*SymI, Contained) || !Contained)
+        if (Section.containsSymbol(*SymI, Contained) || !Contained)
           continue;
 
         printSymbol(SymI);
@@ -273,7 +269,8 @@ void MachODumper::printSections(const Ma
 
     if (opts::SectionData) {
       StringRef Data;
-      if (error(SecI->getContents(Data))) break;
+      if (error(Section.getContents(Data)))
+        break;
 
       W.printBinaryBlock("SectionData", Data);
     }
@@ -284,16 +281,14 @@ void MachODumper::printRelocations() {
   ListScope D(W, "Relocations");
 
   error_code EC;
-  for (section_iterator SecI = Obj->section_begin(),
-                        SecE = Obj->section_end();
-       SecI != SecE; ++SecI) {
+  for (const SectionRef &Section : Obj->sections()) {
     StringRef Name;
-    if (error(SecI->getName(Name)))
+    if (error(Section.getName(Name)))
       continue;
 
     bool PrintedGroup = false;
-    for (relocation_iterator RelI = SecI->relocation_begin(),
-                             RelE = SecI->relocation_end();
+    for (relocation_iterator RelI = Section.relocation_begin(),
+                             RelE = Section.relocation_end();
          RelI != RelE; ++RelI) {
       if (!PrintedGroup) {
         W.startLine() << "Section " << Name << " {\n";
@@ -301,7 +296,7 @@ void MachODumper::printRelocations() {
         PrintedGroup = true;
       }
 
-      printRelocation(SecI, RelI);
+      printRelocation(RelI);
     }
 
     if (PrintedGroup) {
@@ -311,13 +306,11 @@ void MachODumper::printRelocations() {
   }
 }
 
-void MachODumper::printRelocation(section_iterator SecI,
-                                  relocation_iterator RelI) {
-  return printRelocation(Obj, SecI, RelI);
+void MachODumper::printRelocation(relocation_iterator RelI) {
+  return printRelocation(Obj, RelI);
 }
 
 void MachODumper::printRelocation(const MachOObjectFile *Obj,
-                                  section_iterator SecI,
                                   relocation_iterator RelI) {
   uint64_t Offset;
   SmallString<32> RelocName;

Modified: llvm/trunk/tools/llvm-size/llvm-size.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-size/llvm-size.cpp?rev=203802&r1=203801&r2=203802&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-size/llvm-size.cpp (original)
+++ llvm/trunk/tools/llvm-size/llvm-size.cpp Thu Mar 13 09:37:36 2014
@@ -85,10 +85,10 @@ static size_t getNumLengthAsString(uint6
   return result.size();
 }
 
-/// @brief Print the size of each section in @p o.
+/// @brief Print the size of each section in @p Obj.
 ///
 /// The format used is determined by @c OutputFormat and @c Radix.
-static void PrintObjectSectionSizes(ObjectFile *o) {
+static void PrintObjectSectionSizes(ObjectFile *Obj) {
   uint64_t total = 0;
   std::string fmtbuf;
   raw_string_ostream fmt(fmtbuf);
@@ -111,17 +111,18 @@ static void PrintObjectSectionSizes(Obje
     std::size_t max_name_len = strlen("section");
     std::size_t max_size_len = strlen("size");
     std::size_t max_addr_len = strlen("addr");
-    for (section_iterator i = o->section_begin(), e = o->section_end();
-         i != e; ++i) {
+    for (const SectionRef &Section : Obj->sections()) {
       uint64_t size = 0;
-      if (error(i->getSize(size)))
+      if (error(Section.getSize(size)))
         return;
       total += size;
 
       StringRef name;
       uint64_t addr = 0;
-      if (error(i->getName(name))) return;
-      if (error(i->getAddress(addr))) return;
+      if (error(Section.getName(name)))
+        return;
+      if (error(Section.getAddress(addr)))
+        return;
       max_name_len = std::max(max_name_len, name.size());
       max_size_len = std::max(max_size_len, getNumLengthAsString(size));
       max_addr_len = std::max(max_addr_len, getNumLengthAsString(addr));
@@ -150,20 +151,19 @@ static void PrintObjectSectionSizes(Obje
         << "%#" << max_addr_len << radix_fmt << "\n";
 
     // Print each section.
-    for (section_iterator i = o->section_begin(), e = o->section_end();
-         i != e; ++i) {
+    for (const SectionRef &Section : Obj->sections()) {
       StringRef name;
       uint64_t size = 0;
       uint64_t addr = 0;
-      if (error(i->getName(name))) return;
-      if (error(i->getSize(size))) return;
-      if (error(i->getAddress(addr))) return;
+      if (error(Section.getName(name)))
+        return;
+      if (error(Section.getSize(size)))
+        return;
+      if (error(Section.getAddress(addr)))
+        return;
       std::string namestr = name;
 
-      outs() << format(fmt.str().c_str(),
-                       namestr.c_str(),
-                       size,
-                       addr);
+      outs() << format(fmt.str().c_str(), namestr.c_str(), size, addr);
     }
 
     // Print total.
@@ -181,16 +181,19 @@ static void PrintObjectSectionSizes(Obje
     uint64_t total_bss = 0;
 
     // Make one pass over the section table to calculate sizes.
-    for (section_iterator i = o->section_begin(), e = o->section_end();
-         i != e; ++i) {
+    for (const SectionRef &Section : Obj->sections()) {
       uint64_t size = 0;
       bool isText = false;
       bool isData = false;
       bool isBSS = false;
-      if (error(i->getSize(size))) return;
-      if (error(i->isText(isText))) return;
-      if (error(i->isData(isData))) return;
-      if (error(i->isBSS(isBSS))) return;
+      if (error(Section.getSize(size)))
+        return;
+      if (error(Section.isText(isText)))
+        return;
+      if (error(Section.isData(isData)))
+        return;
+      if (error(Section.isBSS(isBSS)))
+        return;
       if (isText)
         total_text += size;
       else if (isData)

Modified: llvm/trunk/tools/llvm-symbolizer/LLVMSymbolize.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-symbolizer/LLVMSymbolize.cpp?rev=203802&r1=203801&r2=203802&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-symbolizer/LLVMSymbolize.cpp (original)
+++ llvm/trunk/tools/llvm-symbolizer/LLVMSymbolize.cpp Thu Mar 13 09:37:36 2014
@@ -279,14 +279,13 @@ static bool getGNUDebuglinkContents(cons
   const ObjectFile *Obj = dyn_cast<ObjectFile>(Bin);
   if (!Obj)
     return false;
-  for (section_iterator I = Obj->section_begin(), E = Obj->section_end();
-       I != E; ++I) {
+  for (const SectionRef &Section : Obj->sections()) {
     StringRef Name;
-    I->getName(Name);
+    Section.getName(Name);
     Name = Name.substr(Name.find_first_not_of("._"));
     if (Name == "gnu_debuglink") {
       StringRef Data;
-      I->getContents(Data);
+      Section.getContents(Data);
       DataExtractor DE(Data, Obj->isLittleEndian(), 0);
       uint32_t Offset = 0;
       if (const char *DebugNameStr = DE.getCStr(&Offset)) {





More information about the llvm-commits mailing list