diff options
author | 2020-08-03 14:33:06 +0000 | |
---|---|---|
committer | 2020-08-03 14:33:06 +0000 | |
commit | 061da546b983eb767bad15e67af1174fb0bcf31c (patch) | |
tree | 83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx | |
parent | Import LLVM 10.0.0 release including clang, lld and lldb. (diff) | |
download | wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip |
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom
tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx')
14 files changed, 276 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile new file mode 100644 index 00000000000..bae88debbb1 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile @@ -0,0 +1,10 @@ +OBJCXX_SOURCES := main.mm myobject.mm +include Makefile.rules +CFLAGS_NO_DEBUG = +ifeq "$(OS)" "Darwin" + CFLAGS_NO_DEBUG += -arch $(ARCH) +endif + +# myobject.o needs to be built without debug info +myobject.o: myobject.mm + $(CXX) $(CFLAGS_NO_DEBUG) -c -o $@ $< diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py new file mode 100644 index 00000000000..19832aefee9 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py @@ -0,0 +1,7 @@ +from lldbsuite.test import decorators +from lldbsuite.test import lldbinline + +lldbinline.MakeInlineTest( + __file__, globals(), [ + decorators.skipIfFreeBSD, decorators.skipIfLinux, + decorators.skipIfWindows, decorators.skipIfNetBSD]) diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm new file mode 100644 index 00000000000..b74871f4270 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm @@ -0,0 +1,21 @@ +#import <Foundation/Foundation.h> + +namespace NS { + class MyObject { int i = 42; }; + NS::MyObject globalObject; +} + +@interface MyObject: NSObject +@end + +int main () +{ + @autoreleasepool + { + MyObject *o = [MyObject alloc]; + return 0; //% self.expect("fr var o", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["(MyObject"]); + //% self.expect("fr var globalObject", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["42"]); + } +} + + diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm new file mode 100644 index 00000000000..051c4e5eb1d --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm @@ -0,0 +1,7 @@ +#import <Foundation/Foundation.h> + +@interface MyObject : NSObject +@end + +@implementation MyObject +@end diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile new file mode 100644 index 00000000000..7cfe4a3f0fd --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile @@ -0,0 +1,4 @@ +OBJCXX_SOURCES := main.mm +LD_EXTRAS := -lobjc -framework CoreFoundation + +include Makefile.rules diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py new file mode 100644 index 00000000000..6f3275b861c --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py @@ -0,0 +1,21 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * +import lldbsuite.test.lldbutil as lldbutil + +class TestObjCXXBridgedPO(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipUnlessDarwin + def test_bridged_type_po(self): + self.build() + lldbutil.run_to_source_breakpoint( + self, 'break here', lldb.SBFileSpec('main.mm')) + self.expect('po num', + "did not get the Objective-C object description", + substrs=['CFNumber', '0x', '42']) + pointer_val = str(self.frame().FindVariable('num').GetValue()) + self.expect('po '+pointer_val, + "did not get the Objective-C object description", + substrs=['CFNumber', '0x', '42']) diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm new file mode 100644 index 00000000000..e376456033f --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm @@ -0,0 +1,12 @@ +#include <CoreFoundation/CoreFoundation.h> + +void stop() {} + +int main(int argc, char **argv) +{ + int value = 42; + CFNumberRef num; + num = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &value); + stop(); // break here + return 0; +} diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile new file mode 100644 index 00000000000..3af75c304c3 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile @@ -0,0 +1,4 @@ +OBJCXX_SOURCES := main.mm +LD_EXTRAS := -lobjc -framework Foundation + +include Makefile.rules diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py new file mode 100644 index 00000000000..cc6ac20b84b --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py @@ -0,0 +1,47 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * +import lldbsuite.test.lldbutil as lldbutil +import unittest2 + + +class TestObjCXXHideRuntimeSupportValues(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipIfFreeBSD + @skipIfLinux + @skipIfWindows + @skipIfNetBSD + def test_hide_runtime_support_values(self): + self.build() + _, process, _, _ = lldbutil.run_to_source_breakpoint( + self, 'break here', lldb.SBFileSpec('main.mm')) + + var_opts = lldb.SBVariablesOptions() + var_opts.SetIncludeArguments(True) + var_opts.SetIncludeLocals(True) + var_opts.SetInScopeOnly(True) + var_opts.SetIncludeStatics(False) + var_opts.SetIncludeRuntimeSupportValues(False) + var_opts.SetUseDynamic(lldb.eDynamicCanRunTarget) + values = self.frame().GetVariables(var_opts) + + def shows_var(name): + for value in values: + if value.name == name: + return True + return False + # ObjC method. + values = self.frame().GetVariables(var_opts) + self.assertFalse(shows_var("this")) + self.assertTrue(shows_var("self")) + self.assertTrue(shows_var("_cmd")) + self.assertTrue(shows_var("c")) + + process.Continue() + # C++ method. + values = self.frame().GetVariables(var_opts) + self.assertTrue(shows_var("this")) + self.assertFalse(shows_var("self")) + self.assertFalse(shows_var("_cmd")) diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm new file mode 100644 index 00000000000..c192f386f22 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm @@ -0,0 +1,28 @@ +#import <Foundation/Foundation.h> + +void baz() {} + +struct MyClass { + void bar() { + baz(); // break here + } +}; + +@interface MyObject : NSObject {} +- (void)foo; +@end + +@implementation MyObject +- (void)foo { + MyClass c; + c.bar(); // break here +} +@end + +int main (int argc, char const *argv[]) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + id obj = [MyObject new]; + [obj foo]; + [pool release]; + return 0; +} diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py new file mode 100644 index 00000000000..19832aefee9 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py @@ -0,0 +1,7 @@ +from lldbsuite.test import decorators +from lldbsuite.test import lldbinline + +lldbinline.MakeInlineTest( + __file__, globals(), [ + decorators.skipIfFreeBSD, decorators.skipIfLinux, + decorators.skipIfWindows, decorators.skipIfNetBSD]) diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm new file mode 100644 index 00000000000..36eda1da2ac --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm @@ -0,0 +1,33 @@ +#import <Foundation/Foundation.h> + +#include <vector> + +@interface MyElement : NSObject { +} +@end + +@interface MyClass : NSObject { + std::vector<MyElement *> elements; +}; + +-(void)doSomething; + +@end + +@implementation MyClass + +-(void)doSomething +{ + NSLog(@"Hello"); //% self.expect("expression -- elements", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["vector", "MyElement"]); +} + +@end + +int main () +{ + @autoreleasepool + { + MyClass *c = [MyClass alloc]; + [c doSomething]; + } +} diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile new file mode 100644 index 00000000000..3af75c304c3 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile @@ -0,0 +1,4 @@ +OBJCXX_SOURCES := main.mm +LD_EXTRAS := -lobjc -framework Foundation + +include Makefile.rules diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm new file mode 100644 index 00000000000..c9a2172c368 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm @@ -0,0 +1,71 @@ +#import <Foundation/Foundation.h> +#include <iostream> + +@interface MyString : NSObject { + NSString *_string; + NSDate *_date; +} +- (id)initWithNSString:(NSString *)string; + +@property (copy) NSString *string; +@property (readonly,getter=getTheDate) NSDate *date; + +- (NSDate *) getTheDate; +@end + +@implementation MyString + +@synthesize string = _string; +@synthesize date = _date; + +- (id)initWithNSString:(NSString *)string +{ + if (self = [super init]) + { + _string = [NSString stringWithString:string]; + _date = [NSDate date]; + } + return self; +} + +- (void) dealloc +{ + [_date release]; + [_string release]; + [super dealloc]; +} + +- (NSDate *) getTheDate +{ + return _date; +} + +- (NSString *)description +{ + return [_string stringByAppendingFormat:@" with timestamp: %@", _date]; +} +@end + +int main (int argc, char const *argv[]) +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + static NSString *g_global_nsstr = @"Howdy"; + + MyString *myStr = [[MyString alloc] initWithNSString: [NSString stringWithFormat:@"string %i", 1]]; + NSString *str1 = myStr.string; + NSString *str2 = [NSString stringWithFormat:@"string %i", 2]; + NSString *str3 = [NSString stringWithFormat:@"string %i", 3]; + NSArray *array = [NSArray arrayWithObjects: str1, str2, str3, nil]; + NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: + str1, @"1", + str2, @"2", + str3, @"3", + myStr.date, @"date", + nil]; + + id str_id = str1; + SEL sel = @selector(length); + [pool release]; + std::cout << "Hello, objc++!\n"; + return 0; +} |