summaryrefslogtreecommitdiff
path: root/tools/macho-dump
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-11-27 13:26:12 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-11-27 13:26:12 +0000
commit4c55e0db0f0a095dcd76326bef24d0fe05d2a5e4 (patch)
treeff0f8b98a1f6b8a9d0bd3bd2ace1a7bdc6886919 /tools/macho-dump
parent4aeb48904344d2dd8e3b8f39a4752567828ad96f (diff)
macho-dump: Add support for dumping dysymtab indirect symbol table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120214 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/macho-dump')
-rw-r--r--tools/macho-dump/macho-dump.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/tools/macho-dump/macho-dump.cpp b/tools/macho-dump/macho-dump.cpp
index 9648caec558..487a00607b8 100644
--- a/tools/macho-dump/macho-dump.cpp
+++ b/tools/macho-dump/macho-dump.cpp
@@ -14,6 +14,7 @@
#include "llvm/Object/MachOObject.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Format.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
@@ -154,7 +155,24 @@ static int DumpDysymtabCommand(MachOObject &Obj,
outs() << " ('locreloff', " << DLC->LocalRelocationTableOffset << ")\n";
outs() << " ('nlocrel', " << DLC->NumLocalRelocationTableEntries << ")\n";
- return 0;
+ // Dump the indirect symbol table.
+ int Res = 0;
+ outs() << " ('_indirect_symbols', [\n";
+ for (unsigned i = 0; i != DLC->NumIndirectSymbolTableEntries; ++i) {
+ InMemoryStruct<macho::IndirectSymbolTableEntry> ISTE;
+ Obj.ReadIndirectSymbolTableEntry(*DLC, i, ISTE);
+ if (!ISTE) {
+ Res = Error("unable to read segment load command");
+ break;
+ }
+
+ outs() << " # Indirect Symbol " << i << "\n";
+ outs() << " (('symbol_index', "
+ << format("%#x", ISTE->Index) << "),),\n";
+ }
+ outs() << " ])\n";
+
+ return Res;
}
static int DumpLoadCommand(MachOObject &Obj, unsigned Index) {