Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 16 Mar 2001 23:53:03 +0000 (23:53 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 16 Mar 2001 23:53:03 +0000 (23:53 +0000)
2001-02-26  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/generic/sigcontextinfo.h (CALL_SIGHANDLER): Define.
* sysdeps/mach/hurd/i386/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/s390/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/sh/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h: Likewise.

14 files changed:
ChangeLog
linuxthreads/signals.c
sysdeps/generic/sigcontextinfo.h
sysdeps/mach/hurd/i386/sigcontextinfo.h
sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h
sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
sysdeps/unix/sysv/linux/i386/sigcontextinfo.h
sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h
sysdeps/unix/sysv/linux/mips/sigcontextinfo.h
sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h
sysdeps/unix/sysv/linux/s390/sigcontextinfo.h
sysdeps/unix/sysv/linux/sh/sigcontextinfo.h
sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h
sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h

index db34351..76e0263 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2001-02-26  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/generic/sigcontextinfo.h (CALL_SIGHANDLER): Define.
+       * sysdeps/mach/hurd/i386/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/i386/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/sh/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h: Likewise.
+
 2001-03-16  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/ieee754/ldbl-96/s_erfl.c: New file.
index 9824b2f..714e346 100644 (file)
@@ -94,7 +94,7 @@ static void pthread_sighandler(int signo, SIGCONTEXT ctx)
   in_sighandler = THREAD_GETMEM(self, p_in_sighandler);
   if (in_sighandler == NULL)
     THREAD_SETMEM(self, p_in_sighandler, CURRENT_STACK_FRAME);
-  sighandler[signo].old(signo, SIGCONTEXT_EXTRA_ARGS ctx);
+  CALL_SIGHANDLER(sighandler[signo].old, signo, ctx);
   if (in_sighandler == NULL)
     THREAD_SETMEM(self, p_in_sighandler, NULL);
 }
index a33aadf..8a6c93a 100644 (file)
@@ -23,3 +23,5 @@
 #define GET_PC(ctx)    ((void *) 0)
 #define GET_FRAME(ctx) ((void *) 0)
 #define GET_STACK(ctx) ((void *) 0)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 008be70..68a36bf 100644 (file)
@@ -21,3 +21,5 @@
 #define GET_PC(ctx)    ((void *) (ctx).sc_eip)
 #define GET_FRAME(ctx) ((void *) (ctx).sc_ebp)
 #define GET_STACK(ctx) ((void *) (ctx).sc_uesp)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 19c35a4..4613bd5 100644 (file)
@@ -21,3 +21,5 @@
 #define GET_PC(ctx)    ((void *) (ctx).sc_pc)
 #define GET_FRAME(ctx) ((void *) (ctx).sc_regs[15])
 #define GET_STACK(ctx) ((void *) (ctx).sc_regs[30])
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 1aaca1e..cc8f2f7 100644 (file)
@@ -31,3 +31,5 @@
                         ctx.v20.reg.ARM_sp : ctx.v21.arm_sp))
 #define ADVANCE_STACK_FRAME(frm)       \
                        ((struct layout *)frm - 1)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 42c18b2..d4ee73c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
 #define GET_PC(ctx)    ((void *) ctx.eip)
 #define GET_FRAME(ctx) ((void *) ctx.ebp)
 #define GET_STACK(ctx) ((void *) ctx.esp_at_signal)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+do {                                                                         \
+  int __tmp1, __tmp2, __tmp3, __tmp4;                                        \
+  __asm __volatile ("movl\t%%esp, %%edi\n\t"                                 \
+                   "andl\t$-16, %%esp\n\t"                                   \
+                   "subl\t%8, %%esp\n\t"                                     \
+                   "movl\t%%edi, %c8-4(%%esp)\n\t"                           \
+                   "movl\t%1, 0(%%esp)\n\t"                                  \
+                   "leal\t4(%%esp), %%edi\n\t"                               \
+                   "cld\n\t"                                                 \
+                   "rep\tmovsl\n\t"                                          \
+                   "call\t*%0\n\t"                                           \
+                   "cld\n\t"                                                 \
+                   "movl\t%9, %%ecx\n\t"                                     \
+                   "subl\t%%edi, %%esi\n\t"                                  \
+                   "leal\t4(%%esp,%%esi,1), %%edi\n\t"                       \
+                   "leal\t4(%%esp), %%esi\n\t"                               \
+                   "rep\tmovsl\n\t"                                          \
+                   "movl\t%c8-4(%%esp), %%esp\n\t"                           \
+                   : "=a" (__tmp1), "=d" (__tmp2), "=S" (__tmp3),            \
+                     "=c" (__tmp4)                                           \
+                   : "0" (handler), "1" (signo), "2" (&ctx),                 \
+                     "3" (sizeof (struct sigcontext) / 4),                   \
+                     "n" ((sizeof (struct sigcontext) + 19) & ~15),          \
+                     "i" (sizeof (struct sigcontext) / 4)                    \
+                   : "cc", "edi");                                           \
+} while (0)
index 86bf934..b7e6f37 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>, 1998.
 
@@ -22,3 +22,5 @@
 #define GET_PC(ctx)    ((void *) (ctx)->sc_pc)
 #define GET_FRAME(ctx) ((void *) __builtin_frame_address (1))
 #define GET_STACK(ctx) ((void *) (ctx)->sc_usp)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 1b67ce3..36d57dc 100644 (file)
@@ -23,3 +23,5 @@
 #define GET_PC(ctx)    ((void *) ctx->sc_pc)
 #define GET_FRAME(ctx) ((void *) ctx->sc_regs[30])
 #define GET_STACK(ctx) ((void *) ctx->sc_regs[29])
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 644a0c2..5a077e4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -23,3 +23,5 @@
 #define GET_PC(ctx)    ((void *)((ctx)->regs->nip))
 #define GET_FRAME(ctx) (*(void **)((ctx)->regs->gpr[1]))
 #define GET_STACK(ctx) ((void *)((ctx)->regs->gpr[1]))
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index ccd5a41..47985b4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -24,3 +24,5 @@
 #define GET_PC(ctx)    ((void *)((ctx)->sregs->regs.psw.addr))
 #define GET_FRAME(ctx) (*(void **)((ctx)->sregs->regs.gprs[11]))
 #define GET_STACK(ctx) ((void *)((ctx)->sregs->regs.gprs[15]))
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index f35322f..6a97cda 100644 (file)
@@ -23,3 +23,5 @@
 #define GET_PC(ctx)    ((void *) ctx.sc_pc)
 #define GET_FRAME(ctx) ((void *) ctx.sc_regs[14])
 #define GET_STACK(ctx) ((void *) ctx.sc_regs[15])
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 9c6b924..0ce30b6 100644 (file)
@@ -25,3 +25,5 @@
 
 #define GET_STACK(__ctx)       ((void *) (__ctx)->si_regs.u_regs[14])
 #define GET_FRAME(__ctx)       ADVANCE_STACK_FRAME (GET_STACK(__ctx))
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
index 2bb563c..f645c4e 100644 (file)
@@ -28,3 +28,5 @@
                                           + STACK_BIAS))+14))
 #define GET_STACK(__ctx)       ((void *) ((__ctx)->sigc_regs.u_regs[14]))
 #define GET_FRAME(__ctx)       ADVANCE_STACK_FRAME (GET_STACK (__ctx))
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))