badseg.c revision 9b6b74abf0036e75709725036cef2a4f18042ae4
1#include <stdio.h> 2#include <stdlib.h> 3#include <signal.h> 4 5static void handler(int sig, siginfo_t *info, void *v) 6{ 7 printf("info: sig=%d code=%d addr=%p\n", 8 info->si_signo, info->si_code, info->si_addr); 9 exit(0); 10} 11 12int main() 13{ 14 struct sigaction sa; 15 int val; 16 17 sa.sa_sigaction = handler; 18 sigemptyset(&sa.sa_mask); 19 sa.sa_flags = SA_SIGINFO; 20 21 sigaction(SIGSEGV, &sa, NULL); 22 23 asm volatile("mov %1, %%fs; mov %%fs:0, %0" : "=r" (val) : "r"(4)); 24 25 printf("val=%d\n", val); 26 27 return 0; 28} 29