[llvm] r305866 - Updated llvm-objdump with Mach-O files and the -objc-meta-data option so

Kevin Enderby via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 20 15:55:11 PDT 2017


Author: enderby
Date: Tue Jun 20 17:55:11 2017
New Revision: 305866

URL: http://llvm.org/viewvc/llvm-project?rev=305866&view=rev
Log:
Updated llvm-objdump with Mach-O files and the -objc-meta-data option so
that it symbolically prints the superclass when it has dyld bind info for it.

rdar://7638823

Modified:
    llvm/trunk/test/tools/llvm-objdump/X86/macho-objc-meta-data.test
    llvm/trunk/tools/llvm-objdump/MachODump.cpp

Modified: llvm/trunk/test/tools/llvm-objdump/X86/macho-objc-meta-data.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/X86/macho-objc-meta-data.test?rev=305866&r1=305865&r2=305866&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/X86/macho-objc-meta-data.test (original)
+++ llvm/trunk/test/tools/llvm-objdump/X86/macho-objc-meta-data.test Tue Jun 20 17:55:11 2017
@@ -1042,7 +1042,7 @@ PROTOCOL:     class_methods 0x00000000 (
 OBJC2_64BIT_DYLIB: Contents of (__DATA_CONST,__objc_classlist) section
 OBJC2_64BIT_DYLIB: 000000000000c038 0x8030 _OBJC_CLASS_$_Test
 OBJC2_64BIT_DYLIB:            isa 0x8008 _OBJC_METACLASS_$_Test
-OBJC2_64BIT_DYLIB:     superclass 0x0
+OBJC2_64BIT_DYLIB:     superclass 0x0 _OBJC_CLASS_$_NSObject
 OBJC2_64BIT_DYLIB:          cache 0x0
 OBJC2_64BIT_DYLIB:         vtable 0x0
 OBJC2_64BIT_DYLIB:           data 0xc120 (struct class_ro_t *)
@@ -1081,7 +1081,7 @@ OBJC2_64BIT_DYLIB: 			     name 0x4f42 t
 OBJC2_64BIT_DYLIB: 			attributes 0x4f4b TQ,V_testProp
 OBJC2_64BIT_DYLIB: Meta Class
 OBJC2_64BIT_DYLIB:            isa 0x0
-OBJC2_64BIT_DYLIB:     superclass 0x0
+OBJC2_64BIT_DYLIB:     superclass 0x0 _OBJC_METACLASS_$_NSObject
 OBJC2_64BIT_DYLIB:          cache 0x0
 OBJC2_64BIT_DYLIB:         vtable 0x0
 OBJC2_64BIT_DYLIB:           data 0xc048 (struct class_ro_t *)

Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=305866&r1=305865&r2=305866&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Tue Jun 20 17:55:11 2017
@@ -4573,6 +4573,12 @@ static void print_class64_t(uint64_t p,
                        n_value, c.superclass);
   if (name != nullptr)
     outs() << " " << name;
+  else {
+    name = get_dyld_bind_info_symbolname(S.getAddress() +
+             offset + offsetof(struct class64_t, superclass), info);
+    if (name != nullptr)
+      outs() << " " << name;
+  }
   outs() << "\n";
 
   outs() << "         cache " << format("0x%" PRIx64, c.cache);




More information about the llvm-commits mailing list