1// Test __sanitizer_set_report_fd:
2// Fails with debug checks: https://bugs.llvm.org/show_bug.cgi?id=46860
3// XFAIL: !compiler-rt-optimized && tsan
4// RUN: %clangxx -O2 %s -o %t
5// RUN: not %run %t 2>&1 | FileCheck %s
6// RUN: not %run %t stdout | FileCheck %s
7// RUN: not %run %t %t-out && FileCheck < %t-out %s
8
9// REQUIRES: stable-runtime
10// XFAIL: android && asan
11
12#include <sanitizer/common_interface_defs.h>
13#include <stdio.h>
14#include <string.h>
15#include <stdlib.h>
16#include <sys/types.h>
17#include <sys/stat.h>
18#include <fcntl.h>
19#include <assert.h>
20
21volatile int *null = 0;
22
23int main(int argc, char **argv) {
24 if (argc == 2) {
25 if (!strcmp(s1: argv[1], s2: "stdout")) {
26 __sanitizer_set_report_fd(fd: reinterpret_cast<void*>(1));
27 } else {
28 int fd = open(file: argv[1], O_CREAT | O_WRONLY | O_TRUNC, S_IRWXU);
29 assert(fd > 0);
30 __sanitizer_set_report_fd(fd: reinterpret_cast<void*>(fd));
31 }
32 }
33 *null = 0;
34}
35
36// CHECK: ERROR: {{.*}} SEGV on unknown address
37

source code of compiler-rt/test/sanitizer_common/TestCases/Posix/sanitizer_set_report_fd_test.cpp