29 lines · cpp
1// RUN: %clangxx_msan -std=c++11 -O0 -g %s -o %t && not %run %t 2>&1 | FileCheck %s2// RUN: %clangxx_msan -DLEFT_OK -std=c++11 -O0 -g %s -o %t && not %run %t 2>&1 | FileCheck %s3// RUN: %clangxx_msan -DRIGHT_OK -std=c++11 -O0 -g %s -o %t && not %run %t 2>&1 | FileCheck %s4// RUN: %clangxx_msan -DLEFT_OK -DRIGHT_OK -std=c++11 -O0 -g %s -o %t && %run %t5// REQUIRES: !android6 7#include <assert.h>8#include <sanitizer/msan_interface.h>9#include <signal.h>10#include <sys/time.h>11#include <unistd.h>12 13int main(void) {14 sigset_t s, t, u;15#ifdef LEFT_OK16 sigemptyset(&t);17#endif18#ifdef RIGHT_OK19 sigemptyset(&u);20#endif21 22 // CHECK: MemorySanitizer: use-of-uninitialized-value23 // CHECK-NEXT: in main {{.*}}sigandorset.cpp:[[@LINE+1]]24 sigandset(&s, &t, &u);25 sigorset(&s, &t, &u);26 __msan_check_mem_is_initialized(&s, sizeof s);27 return 0;28}29