From 11d90def8c64fd858481a8ca3fbcf77f497f63b2 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 21 Apr 1995 02:24:35 +0000 Subject: 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. --- sysdeps/mach/hurd/i386/trampoline.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sysdeps/mach/hurd/i386') 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; } -- cgit v1.2.3