Skip to content

Commit abfc89b

Browse files
markmentovaiCommit Bot
authored and
Commit Bot
committed
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 <[email protected]> Reviewed-by: Robert Sesek <[email protected]>
1 parent e0d8a0a commit abfc89b

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

snapshot/mac/mach_o_image_annotations_reader_test.cc

+1-3
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,7 @@ class TestMachOImageAnnotationsReader final
112112
break;
113113

114114
case kCrashModuleInitialization:
115-
// This crash is triggered by __builtin_trap(), which shows up as
116-
// SIGILL.
117-
SetExpectedChildTermination(kTerminationSignal, SIGILL);
115+
SetExpectedChildTerminationBuiltinTrap();
118116
break;
119117

120118
case kCrashDyld:

util/mach/exc_server_variants_test.cc

+1-2
Original file line numberDiff line numberDiff line change
@@ -975,8 +975,7 @@ class TestExcServerVariants : public MachMultiprocess,
975975
flavor_(flavor),
976976
state_count_(state_count),
977977
handled_(false) {
978-
// This is how the __builtin_trap() in MachMultiprocessChild() appears.
979-
SetExpectedChildTermination(kTerminationSignal, SIGILL);
978+
SetExpectedChildTerminationBuiltinTrap();
980979
}
981980

982981
// UniversalMachExcServer::Interface:

util/mach/exception_ports_test.cc

+10-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "base/macros.h"
2626
#include "base/notreached.h"
2727
#include "base/strings/stringprintf.h"
28+
#include "build/build_config.h"
2829
#include "gtest/gtest.h"
2930
#include "test/mac/mach_errors.h"
3031
#include "test/mac/mach_multiprocess.h"
@@ -145,8 +146,7 @@ class TestExceptionPorts : public MachMultiprocess,
145146
who_crashes_(who_crashes),
146147
handled_(false) {
147148
if (who_crashes_ != kNobodyCrashes) {
148-
// This is how the __builtin_trap() in Child::Crash() appears.
149-
SetExpectedChildTermination(kTerminationSignal, SIGILL);
149+
SetExpectedChildTerminationBuiltinTrap();
150150
}
151151
}
152152

@@ -205,8 +205,14 @@ class TestExceptionPorts : public MachMultiprocess,
205205
int signal;
206206
ExcCrashRecoverOriginalException(code[0], nullptr, &signal);
207207

208-
// The child crashed with __builtin_trap(), which shows up as SIGILL.
209-
EXPECT_EQ(signal, SIGILL);
208+
#if defined(ARCH_CPU_X86_FAMILY)
209+
constexpr int kBuiltinTrapSignal = SIGILL;
210+
#elif defined(ARCH_CPU_ARM64)
211+
constexpr int kBuiltinTrapSignal = SIGTRAP;
212+
#else
213+
#error Port
214+
#endif
215+
EXPECT_EQ(signal, kBuiltinTrapSignal);
210216
}
211217

212218
EXPECT_EQ(AuditPIDFromMachMessageTrailer(trailer), 0);

0 commit comments

Comments
 (0)