Line 0
Link Here
|
|
|
1 |
--- src/frontend/resource.c.orig Thu Jun 30 23:38:21 2005 |
2 |
+++ src/frontend/resource.c Sat Dec 10 20:41:22 2005 |
3 |
@@ -424,6 +424,7 @@ |
4 |
fault(void) |
5 |
{ |
6 |
signal(SIGSEGV, (SIGNAL_FUNCTION) fault); /* SysV style */ |
7 |
+ signal(SIGBUS, (SIGNAL_FUNCTION) fault); /* SysV style */ |
8 |
LONGJMP(env, 1); |
9 |
} |
10 |
|
11 |
@@ -436,7 +437,8 @@ |
12 |
char *low, *high, *at; |
13 |
/* char *sbrk(int); */ |
14 |
long x; |
15 |
- RETSIGTYPE (*orig_signal)( ); |
16 |
+ RETSIGTYPE (*orig_sigsegv)( ); |
17 |
+ RETSIGTYPE (*orig_sigbus)( ); |
18 |
|
19 |
if (getenv("SPICE_NO_DATASEG_CHECK")) |
20 |
return 0; |
21 |
@@ -444,7 +446,8 @@ |
22 |
low = 0; |
23 |
high = (char *) ((unsigned long) sbrk(0) & ~((1 << LOG2_PAGESIZE) - 1)); |
24 |
|
25 |
- orig_signal = signal(SIGSEGV, (SIGNAL_FUNCTION) fault); |
26 |
+ orig_sigsegv = signal(SIGSEGV, (SIGNAL_FUNCTION) fault); |
27 |
+ orig_sigbus = signal(SIGBUS, (SIGNAL_FUNCTION) fault); |
28 |
|
29 |
do { |
30 |
|
31 |
@@ -472,7 +475,8 @@ |
32 |
|
33 |
} while (1); |
34 |
|
35 |
- (void) signal(SIGSEGV, (SIGNAL_FUNCTION) orig_signal); |
36 |
+ (void) signal(SIGSEGV, (SIGNAL_FUNCTION) orig_sigsegv); |
37 |
+ (void) signal(SIGBUS, (SIGNAL_FUNCTION) orig_sigbus); |
38 |
return (void *) high; |
39 |
|
40 |
#endif |