Home | History | Annotate | Download | only in x86
      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <signal.h>
      4 
      5 static void handler(int sig, siginfo_t *info, void *v)
      6 {
      7 	printf("info: sig=%d code=%d addr=0x%lx\n",
      8 	       info->si_signo, info->si_code, (unsigned long)info->si_addr);
      9 	exit(0);
     10 }
     11 
     12 int main()
     13 {
     14 	struct sigaction sa;
     15 	int val;
     16 
     17 	sa.sa_sigaction = handler;
     18 	sigfillset(&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