[llvm-readobj] Dump MachO indirect symbols.
[oota-llvm.git] / tools / llvm-readobj / MachODumper.cpp
index a7c5d23b7e4c379f274bbaa90bcb511db97b8ae9..80c45dee3cc2d5fba71be53f2741d113da317c00 100644 (file)
@@ -45,6 +45,7 @@ public:
   void printMachOVersionMin() override;
   void printMachODysymtab() override;
   void printMachOSegment() override;
+  void printMachOIndirectSymbols() override;
 
 private:
   template<class MachHeader>
@@ -774,3 +775,19 @@ void MachODumper::printMachOSegment() {
     }
   }
 }
+
+void MachODumper::printMachOIndirectSymbols() {
+  for (const auto &Load : Obj->load_commands()) {
+    if (Load.C.cmd == MachO::LC_DYSYMTAB) {
+      MachO::dysymtab_command DLC = Obj->getDysymtabLoadCommand();
+      DictScope Group(W, "Indirect Symbols");
+      W.printNumber("Number", DLC.nindirectsyms);
+      ListScope D(W, "Symbols");
+      for (unsigned i = 0; i < DLC.nindirectsyms; ++i) {
+        DictScope Group(W, "Entry");
+        W.printNumber("Entry Index", i);
+        W.printHex("Symbol Index", Obj->getIndirectSymbolTableEntry(DLC, i));
+      }
+    }
+  }
+}