macho-dump: add code to print LC_ID_DYLIB load commands.

I want to check them in lld.

llvm-svn: 212043
This commit is contained in:
Tim Northover 2014-06-30 14:40:57 +00:00
parent dbd9f7ce21
commit 9b37e52530
3 changed files with 21 additions and 0 deletions

View File

@ -201,6 +201,8 @@ public:
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;

View File

@ -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;

View File

@ -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) {
@ -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;