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