llvm-project/compiler-rt/test/msan/sigaltstack.cpp
Evgenii Stepanov 28c91219c7 [compiler-rt] implement sigaltstack interception
Summary:
An implementation for `sigaltstack` to make its side effect be visible to MSAN.

```
ninja check-msan
```

Reviewers: vitalybuka, eugenis

Reviewed By: eugenis

Subscribers: dberris, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D73816

Patch by Igor Sugak.
2020-02-03 16:28:47 -08:00

21 lines
447 B
C++

// RUN: %clangxx_msan -O0 -g %s -o %t && not %run %t
//
#include <signal.h>
#include <assert.h>
#include <sanitizer/msan_interface.h>
int main(void) {
stack_t old_ss;
assert(sigaltstack(nullptr, &old_ss) == 0);
__msan_check_mem_is_initialized(&old_ss, sizeof(stack_t));
stack_t ss;
sigaltstack(&ss, nullptr);
// CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value
// CHECK: in main {{.*}}sigaltstack.cpp:15
return 0;
}