// REQUIRES: objc-gnustep // XFAIL: system-windows // // RUN: %build %s --compiler=clang --objc-gnustep --output=%t #import "objc/runtime.h" @protocol NSCoding @end #ifdef __has_attribute #if __has_attribute(objc_root_class) __attribute__((objc_root_class)) #endif #endif @interface NSObject { id isa; int refcount; } @end @implementation NSObject - (id)class { return object_getClass(self); } + (id)new { return class_createInstance(self, 0); } @end @interface TestObj : NSObject { int _int; float _float; char _char; void *_ptr_void; NSObject *_ptr_nsobject; id _id_objc; } - (void)check_ivars_zeroed; - (void)set_ivars; @end @implementation TestObj - (void)check_ivars_zeroed { ; } - (void)set_ivars { _int = 1; _float = 2.0f; _char = '\3'; _ptr_void = (void*)4; _ptr_nsobject = (NSObject*)5; _id_objc = (id)6; } @end // RUN: %lldb -b -o "b objc-gnustep-print.m:43" -o "run" -o "p self" -o "p *self" -- %t | FileCheck %s --check-prefix=SELF // // SELF: (lldb) b objc-gnustep-print.m:43 // SELF: Breakpoint {{.*}} at objc-gnustep-print.m // // SELF: (lldb) run // SELF: Process {{[0-9]+}} stopped // SELF: -[TestObj check_ivars_zeroed](self=[[SELF_PTR:0x[0-9a-f]+]]{{.*}}) at objc-gnustep-print.m // // SELF: (lldb) p self // SELF: (TestObj *) [[SELF_PTR]] // // SELF: (lldb) p *self // SELF: (TestObj) { // SELF: NSObject = { // SELF: isa // SELF: refcount // SELF: } // SELF: _int = 0 // SELF: _float = 0 // SELF: _char = '\0' // SELF: _ptr_void = 0x{{0*}} // SELF: _ptr_nsobject = nil // SELF: _id_objc = nil // SELF: } // RUN: %lldb -b -o "b objc-gnustep-print.m:106" -o "run" -o "p t->_int" -o "p t->_float" -o "p t->_char" \ // RUN: -o "p t->_ptr_void" -o "p t->_ptr_nsobject" -o "p t->_id_objc" -- %t | FileCheck %s --check-prefix=IVARS_SET // // IVARS_SET: (lldb) p t->_int // IVARS_SET: (int) 1 // // IVARS_SET: (lldb) p t->_float // IVARS_SET: (float) 2 // // IVARS_SET: (lldb) p t->_char // IVARS_SET: (char) '\x03' // // IVARS_SET: (lldb) p t->_ptr_void // IVARS_SET: (void *) 0x{{0*}}4 // // IVARS_SET: (lldb) p t->_ptr_nsobject // IVARS_SET: (NSObject *) 0x{{0*}}5 // // IVARS_SET: (lldb) p t->_id_objc // IVARS_SET: (id) 0x{{0*}}6 int main() { TestObj *t = [TestObj new]; [t check_ivars_zeroed]; [t set_ivars]; return 0; }