i386-signal.h (RESTORE): New.
2003-07-08 Andrew Haley <aph@redhat.com> * include/i386-signal.h (RESTORE): New. (INIT_SEGV): Set restorer. (INIT_FPE): Likewise. From-SVN: r69957
This commit is contained in:
parent
48b3222dcc
commit
cf68fdb19b
@ -1,3 +1,9 @@
|
||||
2003-07-08 Andrew Haley <aph@redhat.com>
|
||||
|
||||
* include/i386-signal.h (RESTORE): New.
|
||||
(INIT_SEGV): Set restorer.
|
||||
(INIT_FPE): Likewise.
|
||||
|
||||
2003-07-29 Thomas Fitzsimmons <fitzsim@redhat.com>
|
||||
|
||||
* gnu/java/awt/peer/gtk/GtkButtonPeer.java: Call getName rather
|
||||
|
@ -108,26 +108,44 @@ struct old_i386_kernel_sigaction {
|
||||
void (*sa_restorer) (void);
|
||||
};
|
||||
|
||||
#define RESTORE(name, syscall) RESTORE2 (name, syscall)
|
||||
# define RESTORE2(name, syscall) \
|
||||
asm \
|
||||
( \
|
||||
".text\n" \
|
||||
".byte 0 # Yes, this really is necessary\n" \
|
||||
" .align 8\n" \
|
||||
"__" #name ":\n" \
|
||||
" popl %eax\n" \
|
||||
" movl $" #syscall ", %eax\n" \
|
||||
" int $0x80" \
|
||||
);
|
||||
|
||||
RESTORE (restore, __NR_sigreturn)
|
||||
static void restore (void) asm ("__restore");
|
||||
|
||||
#define INIT_SEGV \
|
||||
do \
|
||||
{ \
|
||||
struct old_i386_kernel_sigaction kact; \
|
||||
kact.k_sa_handler = catch_segv; \
|
||||
kact.k_sa_mask = 0; \
|
||||
kact.k_sa_flags = 0; \
|
||||
kact.k_sa_flags = 0x4000000; \
|
||||
kact.sa_restorer = restore; \
|
||||
syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define INIT_FPE \
|
||||
do \
|
||||
{ \
|
||||
struct old_i386_kernel_sigaction kact; \
|
||||
kact.k_sa_handler = catch_fpe; \
|
||||
kact.k_sa_mask = 0; \
|
||||
kact.k_sa_flags = 0; \
|
||||
syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
|
||||
} \
|
||||
#define INIT_FPE \
|
||||
do \
|
||||
{ \
|
||||
struct old_i386_kernel_sigaction kact; \
|
||||
kact.k_sa_handler = catch_fpe; \
|
||||
kact.k_sa_mask = 0; \
|
||||
kact.k_sa_flags = 0x4000000; \
|
||||
kact.sa_restorer = restore; \
|
||||
syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* You might wonder why we use syscall(SYS_sigaction) in INIT_FPE
|
||||
@ -144,10 +162,7 @@ while (0)
|
||||
|
||||
* Also, there is at the present time no unwind info in the
|
||||
* linuxthreads library's signal handlers and so we can't unwind
|
||||
* through them anyway.
|
||||
|
||||
* Finally, the code that glibc uses to return from a signal handler
|
||||
* is subject to change. */
|
||||
* through them anyway. */
|
||||
|
||||
#endif /* JAVA_SIGNAL_H */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user