blob: a4c3944950fcc301f91ef92d28f730eefd58dae2 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/starnix/tests/syscalls/cpp/test_helper.h"
TEST(SwBreakpointTest, Int3CompactGeneratesSIGTRAP) {
test_helper::ForkHelper helper;
helper.RunInForkedProcess([] {
struct sigaction segv_act;
segv_act.sa_sigaction = [](int signo, siginfo_t* info, void* ucontext) {
if (signo == SIGTRAP) {
_exit(EXIT_SUCCESS);
}
_exit(EXIT_FAILURE);
};
segv_act.sa_flags = SA_SIGINFO;
SAFE_SYSCALL(sigaction(SIGTRAP, &segv_act, nullptr));
__builtin_debugtrap();
ADD_FAILURE() << "Expected to generate SIGTRAP.";
exit(EXIT_FAILURE);
});
ASSERT_TRUE(helper.WaitForChildren());
}