diff options
author | Kevin Enderby <enderby@apple.com> | 2014-10-23 19:37:31 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2014-10-23 19:37:31 +0000 |
commit | 6f326ce75bc6424d1e01bbae525323bc5a57f2c8 (patch) | |
tree | c9218076ff55ab1c07f52e2f056e6e9ae6de9a28 /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 52b249b9f46f1c33fb591a4369cce85e1e54c951 (diff) | |
download | llvm-6f326ce75bc6424d1e01bbae525323bc5a57f2c8.zip llvm-6f326ce75bc6424d1e01bbae525323bc5a57f2c8.tar.gz llvm-6f326ce75bc6424d1e01bbae525323bc5a57f2c8.tar.bz2 |
Update llvm-objdump’s Mach-O symbolizer code for Objective-C references.
This prints disassembly comments for Objective-C references to CFStrings,
Selectors, Classes and method calls.
llvm-svn: 220500
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 6e83d81..0bd61ce 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -2345,11 +2345,47 @@ MachOObjectFile::getDataInCodeTableEntry(uint32_t DataOffset, } MachO::symtab_command MachOObjectFile::getSymtabLoadCommand() const { - return getStruct<MachO::symtab_command>(this, SymtabLoadCmd); + if (SymtabLoadCmd) + return getStruct<MachO::symtab_command>(this, SymtabLoadCmd); + + // If there is no SymtabLoadCmd return a load command with zero'ed fields. + MachO::symtab_command Cmd; + Cmd.cmd = MachO::LC_SYMTAB; + Cmd.cmdsize = sizeof(MachO::symtab_command); + Cmd.symoff = 0; + Cmd.nsyms = 0; + Cmd.stroff = 0; + Cmd.strsize = 0; + return Cmd; } MachO::dysymtab_command MachOObjectFile::getDysymtabLoadCommand() const { - return getStruct<MachO::dysymtab_command>(this, DysymtabLoadCmd); + if (DysymtabLoadCmd) + return getStruct<MachO::dysymtab_command>(this, DysymtabLoadCmd); + + // If there is no DysymtabLoadCmd return a load command with zero'ed fields. + MachO::dysymtab_command Cmd; + Cmd.cmd = MachO::LC_DYSYMTAB; + Cmd.cmdsize = sizeof(MachO::dysymtab_command); + Cmd.ilocalsym = 0; + Cmd.nlocalsym = 0; + Cmd.iextdefsym = 0; + Cmd.nextdefsym = 0; + Cmd.iundefsym = 0; + Cmd.nundefsym = 0; + Cmd.tocoff = 0; + Cmd.ntoc = 0; + Cmd.modtaboff = 0; + Cmd.nmodtab = 0; + Cmd.extrefsymoff = 0; + Cmd.nextrefsyms = 0; + Cmd.indirectsymoff = 0; + Cmd.nindirectsyms = 0; + Cmd.extreloff = 0; + Cmd.nextrel = 0; + Cmd.locreloff = 0; + Cmd.nlocrel = 0; + return Cmd; } MachO::linkedit_data_command |