28 lines · cpp
1// Test the handle_sigill option.2 3// RUN: %clangxx %s -o %t -O14// RUN: not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s5// RUN: %env_tool_opts=handle_sigill=0 not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s6// RUN: %env_tool_opts=handle_sigill=1 not %run %t 2>&1 | FileCheck --check-prefix=CHECK1 %s7 8// FIXME: seems to fail on ARM9// REQUIRES: x86_64-target-arch10#include <assert.h>11#include <stdio.h>12#include <sanitizer/asan_interface.h>13 14void death() {15 fprintf(stderr, "DEATH CALLBACK\n");16}17 18int main(int argc, char **argv) {19 __sanitizer_set_death_callback(death);20 __builtin_trap();21}22 23// CHECK0-NOT: Sanitizer:DEADLYSIGNAL24// CHECK1: ERROR: {{.*}}Sanitizer: ILL25// CHECK1: {{#[0-9]+.* main .*ill\.cpp:[0-9]+}}26// CHECK1: DEATH CALLBACK27// CHECK0-NOT: Sanitizer28