[PATCH] llvm-readobj: implement MachODumper::printNeededLibraries

Chilledheart rwindz0 at gmail.com
Sun Mar 1 18:13:02 PST 2015


remove std::stable_sort and LC_ID_DYLIB items


http://reviews.llvm.org/D7378

Files:
  tools/llvm-readobj/MachODumper.cpp

Index: tools/llvm-readobj/MachODumper.cpp
===================================================================
--- tools/llvm-readobj/MachODumper.cpp
+++ tools/llvm-readobj/MachODumper.cpp
@@ -38,6 +38,8 @@
   void printDynamicSymbols() override;
   void printUnwindInfo() override;
 
+  void printNeededLibraries() override;
+
 private:
   template<class MachHeader>
   void printFileHeaders(const MachHeader &Header);
@@ -586,3 +588,32 @@
 void MachODumper::printUnwindInfo() {
   W.startLine() << "UnwindInfo not implemented.\n";
 }
+
+void MachODumper::printNeededLibraries() {
+  ListScope D(W, "NeededLibraries");
+
+  typedef std::vector<StringRef> LibsTy;
+  LibsTy Libs;
+
+  uint32_t NumOfCommands =
+      Obj->is64Bit() ? Obj->getHeader64().ncmds : Obj->getHeader().ncmds;
+  MachOObjectFile::LoadCommandInfo Command = Obj->getFirstLoadCommandInfo();
+  MachO::dylib_command DylibCommand;
+  for (uint32_t i = 0; i != NumOfCommands;
+       ++i, Command = Obj->getNextLoadCommandInfo(Command)) {
+    if (Command.C.cmd == MachO::LC_LOAD_DYLIB ||
+        Command.C.cmd == MachO::LC_LOAD_WEAK_DYLIB ||
+        Command.C.cmd == MachO::LC_REEXPORT_DYLIB ||
+        Command.C.cmd == MachO::LC_LAZY_LOAD_DYLIB ||
+        Command.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) {
+      DylibCommand = Obj->getDylibIDLoadCommand(Command);
+      Libs.push_back(Command.Ptr + DylibCommand.dylib.name);
+    }
+    if (i == NumOfCommands -1)
+      break;
+  }
+
+  for (LibsTy::const_iterator I = Libs.begin(), E = Libs.end(); I != E; ++I) {
+    outs() << "  " << *I << "\n";
+  }
+}

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7378.20972.patch
Type: text/x-patch
Size: 1582 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150302/1d4a24ef/attachment.bin>


More information about the llvm-commits mailing list