aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api
diff options
context:
space:
mode:
authorJason Molenda <jason@molenda.com>2022-05-25 16:05:16 -0700
committerJason Molenda <jason@molenda.com>2022-05-25 16:05:51 -0700
commitbef4da4a6aef8196f007f44e3e9c8e3419ffb623 (patch)
tree42bc6356e8b8998db9f1dc7a98941c7aa76f27ae /lldb/test/API/python_api
parentc8e7c0e5dc1e0587bac387bc8d439f58ef7253be (diff)
downloadllvm-bef4da4a6aef8196f007f44e3e9c8e3419ffb623.zip
llvm-bef4da4a6aef8196f007f44e3e9c8e3419ffb623.tar.gz
llvm-bef4da4a6aef8196f007f44e3e9c8e3419ffb623.tar.bz2
Skip testing of watchpoint hit-count/ignore-count on multithreaded
Skip all watchpoint hit-count/ignore-count tests for multithreaded API tests for now on arm64 Darwin. On AArch64, insns that trigger a WP are rolled back and we are notified. lldb needs to disable the WP, insn step, re-enable it, then report it to the user. lldb only does this full step action for the "selected thread", and so when a program stops with multiple threads hitting a stop reason, some of them watchpoints, any non-selected-thread will not be completed in this way. But all threads with the initial watchpoint exception will have their hit-count/ignore-counts updated. When we resume execution, the other threads sitting at the instruction will again execute & trigger the WP exceptoin again, repeating until we've gone through all of the threads. This bug is being tracked in llvm.org/pr49433 and inside apple in rdar://93863107
Diffstat (limited to 'lldb/test/API/python_api')
-rw-r--r--lldb/test/API/python_api/watchpoint/TestWatchpointIgnoreCount.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/lldb/test/API/python_api/watchpoint/TestWatchpointIgnoreCount.py b/lldb/test/API/python_api/watchpoint/TestWatchpointIgnoreCount.py
index d0fd398..dd0defd 100644
--- a/lldb/test/API/python_api/watchpoint/TestWatchpointIgnoreCount.py
+++ b/lldb/test/API/python_api/watchpoint/TestWatchpointIgnoreCount.py
@@ -25,6 +25,13 @@ class WatchpointIgnoreCountTestCase(TestBase):
self.line = line_number(
self.source, '// Set break point at this line.')
+ # on arm64 targets, lldb has incorrect hit-count / ignore-counts
+ # for watchpoints when they are hit with multiple threads at
+ # the same time. Tracked as llvm.org/pr49433
+ # or rdar://93863107 inside Apple.
+ def affected_by_radar_93863107(self):
+ return (self.getArchitecture() in ['arm64', 'arm64e']) and self.platformIsDarwin()
+
# Read-write watchpoints not supported on SystemZ
@expectedFailureAll(archs=['s390x'])
def test_set_watch_ignore_count(self):
@@ -87,5 +94,6 @@ class WatchpointIgnoreCountTestCase(TestBase):
# Verify some vital statistics.
self.assertTrue(watchpoint)
self.assertEqual(watchpoint.GetWatchSize(), 4)
- self.assertEqual(watchpoint.GetHitCount(), 2)
+ if not self.affected_by_radar_93863107():
+ self.assertEqual(watchpoint.GetHitCount(), 2)
print(watchpoint)