summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
commit061da546b983eb767bad15e67af1174fb0bcf31c (patch)
tree83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-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/hide-runtime-values')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile4
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py47
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm28
3 files changed, 79 insertions, 0 deletions
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;
+}