Remove usage of InMemoryStruct in getSymbol.
authorRafael Espindola <rafael.espindola@gmail.com>
Sun, 7 Apr 2013 15:35:18 +0000 (15:35 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sun, 7 Apr 2013 15:35:18 +0000 (15:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178984 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/MachO.h
tools/llvm-readobj/MachODumper.cpp

index ba0ffa8b32dd3c7f2b266e42ed524b6551692b0c..aeb6bd3dc8d2307ecf61d0ca60b3eba7c7a0f2a0 100644 (file)
@@ -156,6 +156,10 @@ public:
     getLinkeditDataLoadCommand(LoadCommandInfo LCI) const;
   const MachOFormat::Section64 *getSection64(DataRefImpl DRI) const;
   const MachOFormat::Section *getSection(DataRefImpl DRI) const;
+  const MachOFormat::Symbol64TableEntry *
+    getSymbol64TableEntry(DataRefImpl DRI) const;
+  const MachOFormat::SymbolTableEntry *
+    getSymbolTableEntry(DataRefImpl DRI) const;
 
   const MachOObject *getObject() const { return MachOObj.get(); }
 
@@ -224,16 +228,10 @@ private:
 
   void moveToNextSection(DataRefImpl &DRI) const;
 
-  const MachOFormat::SymbolTableEntry *
-  getSymbolTableEntry(DataRefImpl DRI) const;
-
   const MachOFormat::SymbolTableEntry *
   getSymbolTableEntry(DataRefImpl DRI,
                      const MachOFormat::SymtabLoadCommand *SymtabLoadCmd) const;
 
-  const MachOFormat::Symbol64TableEntry *
-  getSymbol64TableEntry(DataRefImpl DRI) const;
-
   const MachOFormat::Symbol64TableEntry *
   getSymbol64TableEntry(DataRefImpl DRI,
                      const MachOFormat::SymtabLoadCommand *SymtabLoadCmd) const;
index 717569cd43bb9a21991e3a82090d7d15bc84b9ad..8f37b9a183756e1b06b75e2889c5bfe21b658115 100644 (file)
@@ -197,38 +197,20 @@ static void getSection(const MachOObjectFile *Obj,
   }
 }
 
-static void getSymbolTableEntry(const MachOObject *MachO,
-                                DataRefImpl DRI,
-                                InMemoryStruct<macho::SymbolTableEntry> &Res) {
-  InMemoryStruct<macho::SymtabLoadCommand> SymtabLoadCmd;
-  LoadCommandInfo LCI = MachO->getLoadCommandInfo(DRI.d.a);
-  MachO->ReadSymtabLoadCommand(LCI, SymtabLoadCmd);
-  MachO->ReadSymbolTableEntry(SymtabLoadCmd->SymbolTableOffset, DRI.d.b, Res);
-}
-
-static void getSymbol64TableEntry(const MachOObject *MachO,
-                                  DataRefImpl DRI,
-                               InMemoryStruct<macho::Symbol64TableEntry> &Res) {
-  InMemoryStruct<macho::SymtabLoadCommand> SymtabLoadCmd;
-  LoadCommandInfo LCI = MachO->getLoadCommandInfo(DRI.d.a);
-  MachO->ReadSymtabLoadCommand(LCI, SymtabLoadCmd);
-  MachO->ReadSymbol64TableEntry(SymtabLoadCmd->SymbolTableOffset, DRI.d.b, Res);
-}
-
-static void getSymbol(const MachOObject *MachOObj,
+static void getSymbol(const MachOObjectFile *Obj,
                       DataRefImpl DRI,
                       MachOSymbol &Symbol) {
+  const MachOObject *MachOObj = Obj->getObject();
   if (MachOObj->is64Bit()) {
-    InMemoryStruct<macho::Symbol64TableEntry> Entry;
-    getSymbol64TableEntry(MachOObj, DRI, Entry);
+    const MachOFormat::Symbol64TableEntry *Entry =
+      Obj->getSymbol64TableEntry( DRI);
     Symbol.StringIndex  = Entry->StringIndex;
     Symbol.Type         = Entry->Type;
     Symbol.SectionIndex = Entry->SectionIndex;
     Symbol.Flags        = Entry->Flags;
     Symbol.Value        = Entry->Value;
   } else {
-    InMemoryStruct<macho::SymbolTableEntry> Entry;
-    getSymbolTableEntry(MachOObj, DRI, Entry);
+    const MachOFormat::SymbolTableEntry *Entry = Obj->getSymbolTableEntry(DRI);
     Symbol.StringIndex  = Entry->StringIndex;
     Symbol.Type         = Entry->Type;
     Symbol.SectionIndex = Entry->SectionIndex;
@@ -397,10 +379,8 @@ void MachODumper::printSymbol(symbol_iterator SymI) {
   if (SymI->getName(SymbolName))
     SymbolName = "";
 
-  const MachOObject *MachO = const_cast<MachOObjectFile*>(Obj)->getObject();
-
   MachOSymbol Symbol;
-  getSymbol(MachO, SymI->getRawDataRefImpl(), Symbol);
+  getSymbol(Obj, SymI->getRawDataRefImpl(), Symbol);
 
   StringRef SectionName;
   section_iterator SecI(Obj->end_sections());