Thu Apr 20 22:23:58 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
authorRoland McGrath <roland@gnu.org>
Fri, 21 Apr 1995 02:24:35 +0000 (02:24 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 21 Apr 1995 02:24:35 +0000 (02:24 +0000)
* 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
sysdeps/mach/hurd/i386/trampoline.c

index e98233d..28ee163 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,13 @@
+Thu Apr 20 22:23:58 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * 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  <roland@churchy.gnu.ai.mit.edu>
 
index 5f3361b..3402181 100644 (file)
@@ -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;
 }