diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py index d6cb68f55bf296..cbe430c92fa7fb 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py @@ -1410,7 +1410,17 @@ def read_register_values(self, reg_infos, endian, thread_id=None): p_response = context.get("p_response") self.assertIsNotNone(p_response) self.assertTrue(len(p_response) > 0) - self.assertFalse(p_response[0] == "E") + + # on x86 Darwin, 4 GPR registers are often + # unavailable, this is expected and correct. + if ( + self.getArchitecture() == "x86_64" + and self.platformIsDarwin() + and p_response[0] == "E" + ): + values[reg_index] = 0 + else: + self.assertFalse(p_response[0] == "E") values[reg_index] = unpack_register_hex_unsigned(endian, p_response) diff --git a/lldb/test/API/commands/register/register/register_command/TestRegisters.py b/lldb/test/API/commands/register/register/register_command/TestRegisters.py index 0b80a09534371e..99290e02cd2b04 100644 --- a/lldb/test/API/commands/register/register/register_command/TestRegisters.py +++ b/lldb/test/API/commands/register/register/register_command/TestRegisters.py @@ -58,6 +58,13 @@ def test_register_commands(self): # could not be read. This is expected. error_str_matched = True + if self.getArchitecture() == "x86_64" and self.platformIsDarwin(): + # debugserver on x86 will provide ds/es/ss/gsbase when the + # kernel provides them, but most of the time they will be + # unavailable. So "register read -a" will report that + # 4 registers were unavailable, it is expected. + error_str_matched = True + self.expect( "register read -a", MISSING_EXPECTED_REGISTERS,