Skip to content

Commit

Permalink
[lldb] Update two API tests to fix x86 Darwin failures (llvm#121380)
Browse files Browse the repository at this point in the history
The Intel Darwin CI bots had their Xcode updated, which brought in a
debugserver with Brendan Shanks' change from September
7281e0c
llvm#108663 where four general
purpose registers are sent by debugserver when in certain process
states. But most processes (nearly all in the testsuite) do not have
these registers available, so we will get register read failures when
requesting those four. These two tests would flag those as errors. There
would have been an additional problem with the g/G packet (which lldb
doesn't use w/ debugserver, but the testsuite tests) if placeholder
values were not included in the full register context bytes; I fixed
that issue with the SME patch to debugserver recently already.
  • Loading branch information
jasonmolenda authored Dec 31, 2024
1 parent 2cee903 commit 5056a4b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 5056a4b

Please sign in to comment.