#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
static void handler(int sig, siginfo_t *info, void *v)
{
printf("info: sig=%d code=%d addr=0x%lx\n",
info->si_signo, info->si_code, (unsigned long)info->si_addr);
exit(0);
}
int main()
{
struct sigaction sa;
int val;
sa.sa_sigaction = handler;
sigfillset(&sa.sa_mask);
sa.sa_flags = SA_SIGINFO;
sigaction(SIGSEGV, &sa, NULL);
asm volatile("mov %1, %%fs; mov %%fs:0, %0" : "=r" (val) : "r"(4));
printf("val=%d\n", val);
return 0;
}