[lldb] Ignore registers that the debugserver fails to read (#132122)

On Mac x86-64, the debugserver reports a register ('ds' at least) but
returns an error when we try to read it. Just skip storing such
registers in snapshots so we won't try to restore them.
This commit is contained in:
Robert O'Callahan
2025-03-21 22:10:54 +13:00
committed by GitHub
parent 2170d77e5d
commit f89a7fa319
3 changed files with 4 additions and 13 deletions

View File

@@ -300,7 +300,10 @@ class ReverseTestBase(GDBProxyTestBase):
for index in sorted(self.general_purpose_register_info.keys()):
reply = self.pass_through(f"p{index:x};thread:{thread_id:x};")
if reply == "" or reply[0] == "E":
raise ValueError("Can't read register")
# Mac debugserver tells us about registers that it won't let
# us actually read. Ignore those registers.
self.logger.debug(f"Failed to read register {index:x}")
continue
registers[index] = reply
thread_snapshot = ThreadSnapshot(thread_id, registers)
thread_sp = self.get_register(

View File

@@ -11,13 +11,11 @@ from lldbsuite.test import lldbutil
class TestReverseContinueBreakpoints(ReverseTestBase):
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue(self):
self.reverse_continue_internal(async_mode=False)
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_async(self):
self.reverse_continue_internal(async_mode=True)
@@ -47,13 +45,11 @@ class TestReverseContinueBreakpoints(ReverseTestBase):
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_breakpoint(self):
self.reverse_continue_breakpoint_internal(async_mode=False)
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_breakpoint_async(self):
self.reverse_continue_breakpoint_internal(async_mode=True)
@@ -72,13 +68,11 @@ class TestReverseContinueBreakpoints(ReverseTestBase):
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_skip_breakpoint(self):
self.reverse_continue_skip_breakpoint_internal(async_mode=False)
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_skip_breakpoint_async(self):
self.reverse_continue_skip_breakpoint_internal(async_mode=True)
@@ -104,13 +98,11 @@ class TestReverseContinueBreakpoints(ReverseTestBase):
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_continue_preserves_direction(self):
self.continue_preserves_direction_internal(async_mode=False)
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_continue_preserves_direction_asyhc(self):
self.continue_preserves_direction_internal(async_mode=True)

View File

@@ -11,13 +11,11 @@ from lldbsuite.test import lldbutil
class TestReverseContinueWatchpoints(ReverseTestBase):
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_watchpoint(self):
self.reverse_continue_watchpoint_internal(async_mode=False)
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_watchpoint_async(self):
self.reverse_continue_watchpoint_internal(async_mode=True)
@@ -63,13 +61,11 @@ class TestReverseContinueWatchpoints(ReverseTestBase):
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_skip_watchpoint(self):
self.reverse_continue_skip_watchpoint_internal(async_mode=False)
@skipIfRemote
@skipIf(macos_version=["<", "15.0"])
@skipIf(oslist=lldbplatformutil.getDarwinOSTriples(), archs=["x86_64"])
def test_reverse_continue_skip_watchpoint_async(self):
self.reverse_continue_skip_watchpoint_internal(async_mode=True)