32 lines · cpp
1// RUN: %clangxx_msan -std=c++11 -O0 -g %s -o %t && %run %t2 3#include <assert.h>4#include <sanitizer/msan_interface.h>5#include <signal.h>6#include <sys/time.h>7#include <unistd.h>8 9void test_sigwaitinfo() {10 sigset_t s;11 sigemptyset(&s);12 sigaddset(&s, SIGUSR1);13 sigprocmask(SIG_BLOCK, &s, 0);14 15 if (pid_t pid = fork()) {16 kill(pid, SIGUSR1);17 _exit(0);18 } else {19 siginfo_t info;20 int res = sigwaitinfo(&s, &info);21 assert(!res);22 // The following checks that sig is initialized.23 assert(info.si_signo == SIGUSR1);24 assert(-1 == __msan_test_shadow(&info, sizeof(info)));25 }26}27 28int main(void) {29 test_sigwaitinfo();30 return 0;31}32