summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions
diff options
context:
space:
mode:
authorKuba Mracek <mracek@apple.com>2018-11-12 21:26:03 +0000
committerKuba Mracek <mracek@apple.com>2018-11-12 21:26:03 +0000
commit377912845e5f67e9d13aadbd226618bcac319781 (patch)
treea5f2d17bdba6a5da4469998a79abbee45c28c035 /lldb/packages/Python/lldbsuite/test/lang/objc/exceptions
parent87e403aa4f62d7385999041abce5fdadb8741a47 (diff)
downloadbcm5719-llvm-377912845e5f67e9d13aadbd226618bcac319781.tar.gz
bcm5719-llvm-377912845e5f67e9d13aadbd226618bcac319781.zip
[lldb] Add synthetic frontend for _NSCallStackArray
An Obj-C array type _NSCallStackArray is used in NSException backtraces. This patch adds a synthetic frontend for _NSCallStackArray, which now correctly returns frame PCs. Differential Revision: https://reviews.llvm.org/D44081 llvm-svn: 346708
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/objc/exceptions')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/TestObjCExceptions.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/TestObjCExceptions.py b/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/TestObjCExceptions.py
index 423776cd115..8d260b235fc 100644
--- a/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/TestObjCExceptions.py
+++ b/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/TestObjCExceptions.py
@@ -28,7 +28,8 @@ class ObjCExceptionsTestCase(TestBase):
self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
substrs=['stopped', 'stop reason = breakpoint'])
- thread = self.dbg.GetSelectedTarget().GetProcess().GetSelectedThread()
+ target = self.dbg.GetSelectedTarget()
+ thread = target.GetProcess().GetSelectedThread()
frame = thread.GetSelectedFrame()
self.expect(
@@ -87,4 +88,13 @@ class ObjCExceptionsTestCase(TestBase):
self.assertEqual(userInfo.summary, "1 key/value pair")
self.assertEqual(userInfo.GetChildAtIndex(0).GetChildAtIndex(0).description, "some_key")
self.assertEqual(userInfo.GetChildAtIndex(0).GetChildAtIndex(1).description, "some_value")
- self.assertGreater(e2.GetChildMemberWithName("reserved").dynamic.num_children, 0)
+ reserved = e2.GetChildMemberWithName("reserved").dynamic
+ self.assertGreater(reserved.num_children, 0)
+ callStackReturnAddresses = [reserved.GetChildAtIndex(i).GetChildAtIndex(1) for i in range(0, reserved.GetNumChildren())
+ if reserved.GetChildAtIndex(i).GetChildAtIndex(0).description == "callStackReturnAddresses"][0].dynamic
+ children = [callStackReturnAddresses.GetChildAtIndex(i) for i in range(0, callStackReturnAddresses.num_children)]
+
+ pcs = [i.unsigned for i in children]
+ names = [target.ResolveSymbolContextForAddress(lldb.SBAddress(pc, target), lldb.eSymbolContextSymbol).GetSymbol().name for pc in pcs]
+ for n in ["objc_exception_throw", "foo", "main"]:
+ self.assertTrue(n in names, "%s is in the exception backtrace (%s)" % (n, names))
OpenPOWER on IntegriCloud