From 11d90def8c64fd858481a8ca3fbcf77f497f63b2 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 21 Apr 1995 02:24:35 +0000 Subject: [PATCH] Thu Apr 20 22:23:58 1995 Roland McGrath * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Point the return address for sigreturn's frame at a "hlt" insn so it will definitely crash if sigreturn returns. HAVE_WEAK_SYMBOLS for doing weak_alias. --- ChangeLog | 8 +++++++- sysdeps/mach/hurd/i386/trampoline.c | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e98233d938..28ee163bf7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,13 @@ +Thu Apr 20 22:23:58 1995 Roland McGrath + + * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): + Point the return address for sigreturn's frame at a "hlt" insn so + it will definitely crash if sigreturn returns. + Wed Apr 19 18:40:11 1995 Brendan Kehoe (brendan@zen.org) * time/tzset.c (__tzname, __daylight, __timezone): Don't check - HAVE_WEAK_SYBMOLS for doing weak_alias. + HAVE_WEAK_SYMBOLS for doing weak_alias. Wed Apr 19 18:12:56 1995 Roland McGrath diff --git a/sysdeps/mach/hurd/i386/trampoline.c b/sysdeps/mach/hurd/i386/trampoline.c index 5f3361b97e..3402181481 100644 --- a/sysdeps/mach/hurd/i386/trampoline.c +++ b/sysdeps/mach/hurd/i386/trampoline.c @@ -44,7 +44,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, volatile int rpc_wait, struct machine_thread_all_state *state) { - __label__ trampoline, rpc_wait_trampoline; + __label__ trampoline, rpc_wait_trampoline, firewall; void *volatile sigsp; struct sigcontext *scp; struct @@ -143,6 +143,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, stackframe->sigcode = sigcode; stackframe->scp = stackframe->return_scp = scp = &stackframe->ctx; stackframe->sigreturn_addr = &__sigreturn; + stackframe->sigreturn_returns_here = &&firewall; /* Crash on return. */ /* Set up the sigcontext from the current state of the thread. */ @@ -255,6 +256,9 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, __sigreturn (SCP); this call never returns. */ "ret"); + firewall: + asm volatile ("hlt"); + /* NOTREACHED */ return NULL; }