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
25 lines
784 B
Python
25 lines
784 B
Python
import unittest2
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.concurrent_base import ConcurrentEventsBase
|
|
from lldbsuite.test.lldbtest import TestBase
|
|
|
|
|
|
@skipIfWindows
|
|
class ConcurrentManyWatchpoints(ConcurrentEventsBase):
|
|
|
|
mydir = ConcurrentEventsBase.compute_mydir(__file__)
|
|
|
|
# Atomic sequences are not supported yet for MIPS in LLDB.
|
|
@skipIf(triple='^mips')
|
|
@skipIf(
|
|
oslist=["ios", "watchos", "tvos", "bridgeos", "macosx"],
|
|
archs=['arm64', 'arm64e', 'arm64_32', 'arm'],
|
|
bugnumber="rdar://93863107")
|
|
@add_test_categories(["watchpoint"])
|
|
@skipIfOutOfTreeDebugserver
|
|
def test(self):
|
|
"""Test 100 watchpoints from 100 threads."""
|
|
self.build()
|
|
self.do_thread_actions(num_watchpoint_threads=100)
|