#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; }