diff options
| author | Jason Molenda <jason@molenda.com> | 2022-05-25 16:05:16 -0700 |
|---|---|---|
| committer | Jason Molenda <jason@molenda.com> | 2022-05-25 16:05:51 -0700 |
| commit | bef4da4a6aef8196f007f44e3e9c8e3419ffb623 (patch) | |
| tree | 42bc6356e8b8998db9f1dc7a98941c7aa76f27ae /lldb/test/API/python_api | |
| parent | c8e7c0e5dc1e0587bac387bc8d439f58ef7253be (diff) | |
| download | llvm-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.py | 10 |
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) |
