mirror of
https://github.com/chromium/crashpad.git
synced 2025-03-09 14:06:33 +00:00
mac-arm64: Set expectations for tests that crash via __builtin_trap
__builtin_trap uses ud2 on x86_64, producing a SIGILL. On arm64, it uses brk #1, producing a SIGTRAP. Test expectations must be adjusted accordingly. Bug: crashpad:345 Test: crashpad_snapshot_test MachOImageAnnotationsReader.CrashModuleInitialization, crashpad_util_test ExcServerVariants.*,ExceptionPorts.* Change-Id: I22e75b7b48b8887031b1d95f1cea8a09733daf49 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2386464 Commit-Queue: Mark Mentovai <mark@chromium.org> Reviewed-by: Robert Sesek <rsesek@chromium.org>
This commit is contained in:
parent
e0d8a0aa01
commit
abfc89bb9b
@ -112,9 +112,7 @@ class TestMachOImageAnnotationsReader final
|
||||
break;
|
||||
|
||||
case kCrashModuleInitialization:
|
||||
// This crash is triggered by __builtin_trap(), which shows up as
|
||||
// SIGILL.
|
||||
SetExpectedChildTermination(kTerminationSignal, SIGILL);
|
||||
SetExpectedChildTerminationBuiltinTrap();
|
||||
break;
|
||||
|
||||
case kCrashDyld:
|
||||
|
@ -975,8 +975,7 @@ class TestExcServerVariants : public MachMultiprocess,
|
||||
flavor_(flavor),
|
||||
state_count_(state_count),
|
||||
handled_(false) {
|
||||
// This is how the __builtin_trap() in MachMultiprocessChild() appears.
|
||||
SetExpectedChildTermination(kTerminationSignal, SIGILL);
|
||||
SetExpectedChildTerminationBuiltinTrap();
|
||||
}
|
||||
|
||||
// UniversalMachExcServer::Interface:
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "base/macros.h"
|
||||
#include "base/notreached.h"
|
||||
#include "base/strings/stringprintf.h"
|
||||
#include "build/build_config.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "test/mac/mach_errors.h"
|
||||
#include "test/mac/mach_multiprocess.h"
|
||||
@ -145,8 +146,7 @@ class TestExceptionPorts : public MachMultiprocess,
|
||||
who_crashes_(who_crashes),
|
||||
handled_(false) {
|
||||
if (who_crashes_ != kNobodyCrashes) {
|
||||
// This is how the __builtin_trap() in Child::Crash() appears.
|
||||
SetExpectedChildTermination(kTerminationSignal, SIGILL);
|
||||
SetExpectedChildTerminationBuiltinTrap();
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,8 +205,14 @@ class TestExceptionPorts : public MachMultiprocess,
|
||||
int signal;
|
||||
ExcCrashRecoverOriginalException(code[0], nullptr, &signal);
|
||||
|
||||
// The child crashed with __builtin_trap(), which shows up as SIGILL.
|
||||
EXPECT_EQ(signal, SIGILL);
|
||||
#if defined(ARCH_CPU_X86_FAMILY)
|
||||
constexpr int kBuiltinTrapSignal = SIGILL;
|
||||
#elif defined(ARCH_CPU_ARM64)
|
||||
constexpr int kBuiltinTrapSignal = SIGTRAP;
|
||||
#else
|
||||
#error Port
|
||||
#endif
|
||||
EXPECT_EQ(signal, kBuiltinTrapSignal);
|
||||
}
|
||||
|
||||
EXPECT_EQ(AuditPIDFromMachMessageTrailer(trailer), 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user