Index: lldb/packages/Python/lldbsuite/test/decorators.py =================================================================== --- lldb/packages/Python/lldbsuite/test/decorators.py +++ lldb/packages/Python/lldbsuite/test/decorators.py @@ -826,3 +826,18 @@ return (('DYLD_INSERT_LIBRARIES' in os.environ) and 'libclang_rt.asan' in os.environ['DYLD_INSERT_LIBRARIES']) return skipTestIfFn(is_sanitized)(func) + +def skipIfDbRegsReadOnly(func): + """Skip this test if platform does not permit writing to debug registers.""" + def is_dbregs_rdonly(): + if platform.system() != 'NetBSD': + return None + try: + output = subprocess.check_output(["/sbin/sysctl", "-n", + "security.models.extensions.user_set_dbregs"]).decode().strip() + if output == "1": + return None + except subprocess.CalledProcessError: + pass + return "security.models.extensions.user_set_dbregs is disabled" + return skipTestIfFn(is_dbregs_rdonly)(func) Index: lldb/packages/Python/lldbsuite/test/dotest.py =================================================================== --- lldb/packages/Python/lldbsuite/test/dotest.py +++ lldb/packages/Python/lldbsuite/test/dotest.py @@ -1181,6 +1181,30 @@ print("libstdcxx tests will not be run because: " + reason) configuration.skipCategories.append("libstdcxx") +def canRunWatchpointTests(): + from lldbsuite.test import lldbplatformutil + + platform = lldbplatformutil.getPlatform() + if platform == "netbsd": + try: + output = subprocess.check_output(["/sbin/sysctl", "-n", + "security.models.extensions.user_set_dbregs"]).decode().strip() + if output == "1": + return True, "security.models.extensions.user_set_dbregs enabled" + except subprocess.CalledProcessError: + pass + return False, "security.models.extensions.user_set_dbregs disabled" + return True, "dbregs always writable" + +def checkWatchpointSupport(): + result, reason = canRunWatchpointTests() + if result: + return # watchpoints supported + if "watchpoint" in configuration.categoriesList: + return # watchpoint category explicitly requested, let it run. + print("watchpoint tests will not be run because: " + reason) + configuration.skipCategories.append("watchpoint") + def checkDebugInfoSupport(): import lldb @@ -1305,6 +1329,7 @@ checkLibcxxSupport() checkLibstdcxxSupport() + checkWatchpointSupport() checkDebugInfoSupport() # Don't do debugserver tests on anything except OS X.