summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2008-03-08 21:39:00 +0000
committerRoland McGrath <roland@gnu.org>2008-03-08 21:39:00 +0000
commitd2ea0b965981bb7e334d33f2e8b42a2a70886fc5 (patch)
tree257b58e0d051cc3b00adf5c334e0e1f5a198b995
parentb3278554af25d7431fdf03388278e22b51578fab (diff)
downloadglibc-d2ea0b965981bb7e334d33f2e8b42a2a70886fc5.tar.gz
glibc-d2ea0b965981bb7e334d33f2e8b42a2a70886fc5.tar.xz
glibc-d2ea0b965981bb7e334d33f2e8b42a2a70886fc5.zip
2008-03-08 Roland McGrath <roland@frob.com>
	* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
	Clear DF bit in thread state's eflags.
	Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
-rw-r--r--sysdeps/mach/hurd/i386/trampoline.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/i386/trampoline.c b/sysdeps/mach/hurd/i386/trampoline.c
index dddc6f3ef6..99d9308360 100644
--- a/sysdeps/mach/hurd/i386/trampoline.c
+++ b/sysdeps/mach/hurd/i386/trampoline.c
@@ -1,5 +1,5 @@
 /* Set thread_state for sighandler, and sigcontext to recover.  i386 version.
-   Copyright (C) 1994,1995,1996,1997,1998,1999,2005
+   Copyright (C) 1994,1995,1996,1997,1998,1999,2005,2008
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -21,6 +21,7 @@
 #include <hurd/signal.h>
 #include <hurd/userlink.h>
 #include <thread_state.h>
+#include <mach/machine/eflags.h>
 #include <assert.h>
 #include <errno.h>
 #include "hurdfault.h"
@@ -218,6 +219,9 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
   /* We pass the handler function to the trampoline code in %edx.  */
   state->basic.edx = (int) handler;
 
+  /* The x86 ABI says the DF bit is clear on entry to any function.  */
+  state->basic.efl &= ~EFL_DF;
+
   return scp;
 }