[Lldb-commits] [lldb] r152473 - /lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
Jim Ingham
jingham at apple.com
Fri Mar 9 18:03:37 PST 2012
Author: jingham
Date: Fri Mar 9 20:03:37 2012
New Revision: 152473
URL: http://llvm.org/viewvc/llvm-project?rev=152473&view=rev
Log:
Meta classes can't have dynamic types...
<rdar://problem/11021925>
Modified:
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp?rev=152473&r1=152472&r2=152473&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp Fri Mar 9 20:03:37 2012
@@ -58,6 +58,7 @@
extern void *gdb_class_getClass (void *objc_class); \n\
extern void *class_getName(void *objc_class); \n\
extern int printf(const char *format, ...); \n\
+ extern unsigned char class_isMetaClass (void *objc_class); \n\
} \n\
\n\
struct __lldb_objc_object { \n\
@@ -77,7 +78,17 @@
{ \n\
void *actual_class = (void *) [(id) object_ptr class]; \n\
if (actual_class != 0) \n\
- name = class_getName((void *) actual_class); \n\
+ { \n\
+ if (class_isMetaClass(actual_class) == 1) \n\
+ { \n\
+ if (debug) \n\
+ printf (\"\\n*** Found metaclass.\\n\"); \n\
+ } \n\
+ else \n\
+ { \n\
+ name = class_getName((void *) actual_class); \n\
+ } \n\
+ } \n\
if (debug) \n\
printf (\"\\n*** Found name: %s\\n\", name ? name : \"<NOT FOUND>\"); \n\
} \n\
@@ -298,6 +309,11 @@
{
if (sc.symbol->GetType() == eSymbolTypeObjCClass)
class_name = sc.symbol->GetName().GetCString();
+ else if (sc.symbol->GetType() == eSymbolTypeObjCMetaClass)
+ {
+ // FIXME: Meta-classes can't have dynamic types...
+ return false;
+ }
}
}
}
More information about the lldb-commits
mailing list