Meta classes can't have dynamic types...

<rdar://problem/11021925>

llvm-svn: 152473
This commit is contained in:
Jim Ingham 2012-03-10 02:03:37 +00:00
parent 1fc91ad1c5
commit fd9de90123
1 changed files with 17 additions and 1 deletions

View File

@ -58,6 +58,7 @@ extern \"C\"
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 @@ extern \"C\" void *__lldb_apple_objc_v2_find_class_name (
{ \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 @@ AppleObjCRuntimeV2::GetDynamicTypeAndAddress (ValueObject &in_value,
{
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;
}
}
}
}