1*fd893bdaSMatt Morehouse // RUN: %clangxx_msan -O0 -g %s -o %t
2*fd893bdaSMatt Morehouse // RUN: MSAN_OPTIONS=handle_segv=2 %t 2>&1 | FileCheck %s
3*fd893bdaSMatt Morehouse #include <stdlib.h>
4*fd893bdaSMatt Morehouse #include <stdio.h>
5*fd893bdaSMatt Morehouse #include <unistd.h>
6*fd893bdaSMatt Morehouse #include <signal.h>
7*fd893bdaSMatt Morehouse #include <string.h>
8*fd893bdaSMatt Morehouse
9*fd893bdaSMatt Morehouse extern "C" int __interceptor_sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
sigaction(int signum,const struct sigaction * act,struct sigaction * oldact)10*fd893bdaSMatt Morehouse extern "C" int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) {
11*fd893bdaSMatt Morehouse write(2, "sigaction call\n", sizeof("sigaction call\n") - 1);
12*fd893bdaSMatt Morehouse return __interceptor_sigaction(signum, act, oldact);
13*fd893bdaSMatt Morehouse }
14*fd893bdaSMatt Morehouse
main()15*fd893bdaSMatt Morehouse int main() {
16*fd893bdaSMatt Morehouse struct sigaction oldact;
17*fd893bdaSMatt Morehouse sigaction(SIGSEGV, nullptr, &oldact);
18*fd893bdaSMatt Morehouse
19*fd893bdaSMatt Morehouse if (oldact.sa_handler || oldact.sa_sigaction) {
20*fd893bdaSMatt Morehouse fprintf(stderr, "oldact filled\n");
21*fd893bdaSMatt Morehouse }
22*fd893bdaSMatt Morehouse return 0;
23*fd893bdaSMatt Morehouse // CHECK: sigaction call
24*fd893bdaSMatt Morehouse // CHECK: oldact filled
25*fd893bdaSMatt Morehouse }
26