summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-objdump
diff options
context:
space:
mode:
authorJean-Daniel Dupas <devlists@shadowlab.org>2014-12-04 07:37:02 +0000
committerJean-Daniel Dupas <devlists@shadowlab.org>2014-12-04 07:37:02 +0000
commit00cc1f5cab9e523e4cd9a9cbe291a4f6f2f5a731 (patch)
treed2511c8c6205bbfe437dff8d8744f05da8944227 /llvm/tools/llvm-objdump
parent8d690650e88f2aad2f204a77e918155abb3bcba7 (diff)
downloadbcm5719-llvm-00cc1f5cab9e523e4cd9a9cbe291a4f6f2f5a731.tar.gz
bcm5719-llvm-00cc1f5cab9e523e4cd9a9cbe291a4f6f2f5a731.zip
Add mach-o LC_RPATH support to llvm-objdump
Summary: Add rpath load command support in Mach-O object and update llvm-objdump to use it. Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6512 llvm-svn: 223343
Diffstat (limited to 'llvm/tools/llvm-objdump')
-rw-r--r--llvm/tools/llvm-objdump/MachODump.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp
index 3a28703ab0d..7f97d8a314b 100644
--- a/llvm/tools/llvm-objdump/MachODump.cpp
+++ b/llvm/tools/llvm-objdump/MachODump.cpp
@@ -3299,6 +3299,22 @@ static void PrintUuidLoadCommand(MachO::uuid_command uuid) {
outs() << "\n";
}
+static void PrintRpathLoadCommand(MachO::rpath_command rpath,
+ const char *Ptr) {
+ outs() << " cmd LC_RPATH\n";
+ outs() << " cmdsize " << rpath.cmdsize;
+ if (rpath.cmdsize < sizeof(struct MachO::rpath_command))
+ outs() << " Incorrect size\n";
+ else
+ outs() << "\n";
+ if (rpath.path >= rpath.cmdsize)
+ outs() << " path ?(bad offset " << rpath.path << ")\n";
+ else {
+ const char *P = (const char *)(Ptr) + rpath.path;
+ outs() << " path " << P << " (offset " << rpath.path << ")\n";
+ }
+}
+
static void PrintVersionMinLoadCommand(MachO::version_min_command vd) {
if (vd.cmd == MachO::LC_VERSION_MIN_MACOSX)
outs() << " cmd LC_VERSION_MIN_MACOSX\n";
@@ -3494,6 +3510,9 @@ static void PrintLoadCommands(const MachOObjectFile *Obj, uint32_t ncmds,
} else if (Command.C.cmd == MachO::LC_UUID) {
MachO::uuid_command Uuid = Obj->getUuidCommand(Command);
PrintUuidLoadCommand(Uuid);
+ } else if (Command.C.cmd == MachO::LC_RPATH) {
+ MachO::rpath_command Rpath = Obj->getRpathCommand(Command);
+ PrintRpathLoadCommand(Rpath, Command.Ptr);
} else if (Command.C.cmd == MachO::LC_VERSION_MIN_MACOSX) {
MachO::version_min_command Vd = Obj->getVersionMinLoadCommand(Command);
PrintVersionMinLoadCommand(Vd);
OpenPOWER on IntegriCloud