xref: /llvm-project/compiler-rt/test/sanitizer_common/TestCases/Linux/assert.cpp (revision 74989aff5351beaeb03f46fc2fe57752d57f848b)
1*74989affSNico Weber // Test the handle_abort option.
2*74989affSNico Weber 
3*74989affSNico Weber // RUN: %clangxx %s -o %t
4*74989affSNico Weber // RUN:                              not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s
5*74989affSNico Weber // RUN: %env_tool_opts=handle_abort=0 not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s
6*74989affSNico Weber // RUN: %env_tool_opts=handle_abort=1 not         %run %t 2>&1 | FileCheck --check-prefix=CHECK1 %s
7*74989affSNico Weber 
8*74989affSNico Weber #include <assert.h>
9*74989affSNico Weber #include <stdio.h>
10*74989affSNico Weber #include <sanitizer/asan_interface.h>
11*74989affSNico Weber 
death()12*74989affSNico Weber void death() {
13*74989affSNico Weber   fprintf(stderr, "DEATH CALLBACK\n");
14*74989affSNico Weber }
15*74989affSNico Weber 
main(int argc,char ** argv)16*74989affSNico Weber int main(int argc, char **argv) {
17*74989affSNico Weber   __sanitizer_set_death_callback(death);
18*74989affSNico Weber   assert(argc == 100);
19*74989affSNico Weber }
20*74989affSNico Weber 
21*74989affSNico Weber // CHECK0-NOT: Sanitizer:DEADLYSIGNAL
22*74989affSNico Weber // CHECK1: ERROR: {{.*}}Sanitizer: ABRT
23*74989affSNico Weber // CHECK1: {{ #0 }}
24*74989affSNico Weber // CHECK1: DEATH CALLBACK
25*74989affSNico Weber // CHECK0-NOT: Sanitizer
26