Remove last use of InMemoryStruct in llvm-objdump.
authorRafael Espindola <rafael.espindola@gmail.com>
Sun, 7 Apr 2013 14:40:18 +0000 (14:40 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sun, 7 Apr 2013 14:40:18 +0000 (14:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178979 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/MachO.h
lib/Object/MachOObjectFile.cpp
tools/llvm-objdump/MachODump.cpp

index 8543ecc8291c61a1ace961786128404e4790cf02..f026e6c69d49d795a3c9c40b6651ef63fe7c6849 100644 (file)
@@ -113,6 +113,13 @@ namespace MachOFormat {
     support::ulittle32_t NumSections;
     support::ulittle32_t Flags;
   };
+
+  struct LinkeditDataLoadCommand {
+    support::ulittle32_t Type;
+    support::ulittle32_t Size;
+    support::ulittle32_t DataOffset;
+    support::ulittle32_t DataSize;
+  };
 }
 
 typedef MachOObject::LoadCommandInfo LoadCommandInfo;
@@ -145,6 +152,9 @@ public:
   ArrayRef<char> getSectionRawName(DataRefImpl Sec) const;
   ArrayRef<char>getSectionRawFinalSegmentName(DataRefImpl Sec) const;
 
+  const MachOFormat::LinkeditDataLoadCommand *
+    getLinkeditDataLoadCommand(LoadCommandInfo LCI) const;
+
   MachOObject *getObject() { return MachOObj.get(); }
 
   static inline bool classof(const Binary *v) {
index 1eb14f31ff43922b17871c017d68932bb6c43dd5..94827693e9983e083479e6ce4c2397b61951e0d2 100644 (file)
@@ -75,6 +75,14 @@ MachOObjectFile::getSegmentLoadCommand(LoadCommandInfo LCI) const {
   return reinterpret_cast<const MachOFormat::SegmentLoadCommand*>(Data.data());
 }
 
+const MachOFormat::LinkeditDataLoadCommand *
+MachOObjectFile::getLinkeditDataLoadCommand(LoadCommandInfo LCI) const {
+  StringRef Data = MachOObj->getData(LCI.Offset,
+                                  sizeof(MachOFormat::LinkeditDataLoadCommand));
+  return
+    reinterpret_cast<const MachOFormat::LinkeditDataLoadCommand*>(Data.data());
+}
+
 const MachOFormat::Segment64LoadCommand *
 MachOObjectFile::getSegment64LoadCommand(LoadCommandInfo LCI) const {
   StringRef Data = MachOObj->getData(LCI.Offset,
index b122cd3b7abfc0f82a623bab1902f38e304568c9..894e769115ccb171e01343fb60d6d3d148526597 100644 (file)
@@ -223,8 +223,8 @@ static void getSectionsAndSymbols(const macho::Header &Header,
     if (LCI.Command.Type == macho::LCT_FunctionStarts) {
       // We found a function starts segment, parse the addresses for later
       // consumption.
-      InMemoryStruct<macho::LinkeditDataLoadCommand> LLC;
-      MachOObj->getObject()->ReadLinkeditDataLoadCommand(LCI, LLC);
+      const MachOFormat::LinkeditDataLoadCommand *LLC =
+        MachOObj->getLinkeditDataLoadCommand(LCI);
 
       MachOObj->getObject()->ReadULEB128s(LLC->DataOffset, FoundFns);
     }