#include "tests/malloc.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <signal.h> void maybe_fault ( int delta ) { char* x = memalign16(32); memset(x, 0, 32); __asm__ __volatile__( "pabsb (%0),%%xmm7" : /*out*/ : /*in*/ "r"(x+delta) : /*trash*/"xmm7" ); free(x); } void handler ( int signo ) { assert(signo == SIGSEGV); fprintf(stderr, "three\n"); exit(0); } int main ( void ) { signal(SIGSEGV, handler); fprintf(stderr, "you should see: \"one\\ntwo\\nthree\\n\"\n"); fprintf(stderr, "one\n"); maybe_fault(0); fprintf(stderr, "two\n"); maybe_fault(5); fprintf(stderr, "test failed! you shouldn't see this\n"); return 0; }