174989affSNico Weber // Test the handle_sigfpe option. 274989affSNico Weber // RUN: %clangxx %s -o %t 374989affSNico Weber // RUN: not %run %t 2>&1 | FileCheck --check-prefix=CHECK1 %s 474989affSNico Weber // RUN: %env_tool_opts=handle_sigfpe=0 not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s 574989affSNico Weber // RUN: %env_tool_opts=handle_sigfpe=1 not %run %t 2>&1 | FileCheck --check-prefix=CHECK1 %s 674989affSNico Weber 774989affSNico Weber // FIXME: seems to fail on ARM 874989affSNico Weber // REQUIRES: x86_64-target-arch 974989affSNico Weber #include <assert.h> 1074989affSNico Weber #include <stdio.h> 1174989affSNico Weber #include <sanitizer/asan_interface.h> 1274989affSNico Weber death()1374989affSNico Webervoid death() { 1474989affSNico Weber fprintf(stderr, "DEATH CALLBACK\n"); 1574989affSNico Weber } 1674989affSNico Weber main(int argc,char ** argv)1774989affSNico Weberint main(int argc, char **argv) { 1874989affSNico Weber __sanitizer_set_death_callback(death); 1974989affSNico Weber volatile int one = 1; 2074989affSNico Weber volatile int zero = 0; 2174989affSNico Weber volatile int sink; 2274989affSNico Weber sink = one / zero; 2374989affSNico Weber } 2474989affSNico Weber 2574989affSNico Weber // CHECK0-NOT: Sanitizer:DEADLYSIGNAL 2674989affSNico Weber // CHECK1: ERROR: {{.*}}Sanitizer: FPE 27bb7ad98aSNico Weber // CHECK1: {{#[0-9]+.* main .*fpe\.cpp}}:[[@LINE-5]] 2874989affSNico Weber // CHECK1: DEATH CALLBACK 29*ac3dce59SMax Moroz // CHECK0-NOT: {{.*}}Sanitizer: FPE 30