Skip to content

Commit

Permalink
macho-dump: add code to print LC_ID_DYLIB load commands.
Browse files Browse the repository at this point in the history
I want to check them in lld.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212043 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
TNorthover committed Jun 30, 2014
1 parent a1ff0ae commit 12a261e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/llvm/Object/MachO.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,8 @@ class MachOObjectFile : public ObjectFile {
getLinkerOptionsLoadCommand(const LoadCommandInfo &L) const;
MachO::version_min_command
getVersionMinLoadCommand(const LoadCommandInfo &L) const;
MachO::dylib_command
getDylibIDLoadCommand(const LoadCommandInfo &L) const;

MachO::any_relocation_info getRelocation(DataRefImpl Rel) const;
MachO::data_in_code_entry getDice(DataRefImpl Rel) const;
Expand Down
6 changes: 6 additions & 0 deletions lib/Object/MachOObjectFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1721,6 +1721,12 @@ MachOObjectFile::getVersionMinLoadCommand(const LoadCommandInfo &L) const {
return getStruct<MachO::version_min_command>(this, L.Ptr);
}

MachO::dylib_command
MachOObjectFile::getDylibIDLoadCommand(const LoadCommandInfo &L) const {
return getStruct<MachO::dylib_command>(this, L.Ptr);
}


MachO::any_relocation_info
MachOObjectFile::getRelocation(DataRefImpl Rel) const {
DataRefImpl Sec;
Expand Down
13 changes: 13 additions & 0 deletions tools/macho-dump/macho-dump.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,17 @@ DumpVersionMin(const MachOObjectFile &Obj,
return 0;
}

static int
DumpDylibID(const MachOObjectFile &Obj,
const MachOObjectFile::LoadCommandInfo &LCI) {
MachO::dylib_command DLLC = Obj.getDylibIDLoadCommand(LCI);
outs() << " ('install_name', '" << LCI.Ptr + DLLC.dylib.name << "')\n"
<< " ('timestamp, " << DLLC.dylib.timestamp << ")\n"
<< " ('cur_version, " << DLLC.dylib.current_version << ")\n"
<< " ('compat_version, " << DLLC.dylib.compatibility_version << ")\n";
return 0;
}

static int DumpLoadCommand(const MachOObjectFile &Obj,
MachOObjectFile::LoadCommandInfo &LCI) {
switch (LCI.C.cmd) {
Expand All @@ -350,6 +361,8 @@ static int DumpLoadCommand(const MachOObjectFile &Obj,
case MachO::LC_VERSION_MIN_IPHONEOS:
case MachO::LC_VERSION_MIN_MACOSX:
return DumpVersionMin(Obj, LCI);
case MachO::LC_ID_DYLIB:
return DumpDylibID(Obj, LCI);
default:
Warning("unknown load command: " + Twine(LCI.C.cmd));
return 0;
Expand Down

0 comments on commit 12a261e

Please sign in to comment.