mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 08:26:14 +00:00
37 lines
726 B
C
37 lines
726 B
C
|
|
#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;
|
|
}
|