File: badseg.c

package info (click to toggle)
valgrind 1%3A3.12.0~svn20160714-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 120,428 kB
  • ctags: 70,855
  • sloc: ansic: 674,645; exp: 26,134; xml: 21,574; asm: 7,570; cpp: 7,567; makefile: 7,380; sh: 6,188; perl: 5,855; haskell: 195
file content (28 lines) | stat: -rw-r--r-- 517 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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;
}