Add EXC_SYSCALL to the set of ignorable mach exceptions.

Add some more tests of what exceptions we accept and don't accept.

Differential Revision: https://reviews.llvm.org/D151843
This commit is contained in:
Jim Ingham 2023-05-31 14:43:00 -07:00
parent 82b5a934b8
commit 620dc1224f
2 changed files with 17 additions and 4 deletions

View File

@ -63,7 +63,8 @@ static Status ExceptionMaskValidator(const char *string, void *unused) {
|| candidate == "EXC_BAD_INSTRUCTION"
|| candidate == "EXC_ARITHMETIC"
|| candidate == "EXC_RESOURCE"
|| candidate == "EXC_GUARD")) {
|| candidate == "EXC_GUARD"
|| candidate == "EXC_SYSCALL")) {
error.SetErrorStringWithFormat("invalid exception type: '%s'",
candidate.str().c_str());
return error;

View File

@ -30,10 +30,22 @@ class TestDarwinSignalHandlers(TestBase):
"EXC_BAD_AXESS",
error=True,
)
# Now set ourselves to ignore some exceptions. The test depends on ignoring EXC_BAD_ACCESS, but I passed a couple
# to make sure they parse:
# Make sure that we don't accept exceptions that lldb/debugserver need:
self.match(
"settings set platform.plugin.darwin.ignored-exceptions EXC_BREAKPOINT",
"EXC_BREAKPOINT",
error=True,
)
# Make sure that we don't accept exceptions that lldb/debugserver need:
self.match(
"settings set platform.plugin.darwin.ignored-exceptions EXC_SOFT_SIGNAL",
"EXC_SOFT_SIGNAL",
error=True,
)
# Now set ourselves to ignore some exceptions. The test depends on ignoring EXC_BAD_ACCESS, but I passed all the
# ones we currently accept to make sure they parse:
self.runCmd(
"settings set platform.plugin.darwin.ignored-exceptions EXC_BAD_ACCESS|EXC_ARITHMETIC"
"settings set platform.plugin.darwin.ignored-exceptions EXC_BAD_ACCESS|EXC_BAD_INSTRUCTION|EXC_ARITHMETIC|EXC_RESOURCE|EXC_GUARD|EXC_SYSCALL"
)
(target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
self, "Stop here to get things going", self.main_source_file