Meta classes can't have dynamic types...
<rdar://problem/11021925> llvm-svn: 152473
This commit is contained in:
		
							parent
							
								
									1fc91ad1c5
								
							
						
					
					
						commit
						fd9de90123
					
				| 
						 | 
				
			
			@ -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;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue