[kaffe] CVS kaffe (gb): Use ucontext_t rather than sigcontext for x86_64 signal handlers.
Kaffe CVS
cvs-commits at kaffe.org
Thu Jul 8 06:55:25 PDT 2004
PatchSet 4910
Date: 2004/07/08 13:48:14
Author: gb
Branch: HEAD
Tag: (none)
Log:
Use ucontext_t rather than sigcontext for x86_64 signal handlers.
Members:
ChangeLog:1.2476->1.2477
config/x86_64/linux/md.h:1.2->1.3
config/x86_64/linux/sigcontextinfo.h:1.2->1.3
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2476 kaffe/ChangeLog:1.2477
--- kaffe/ChangeLog:1.2476 Thu Jul 8 10:41:39 2004
+++ kaffe/ChangeLog Thu Jul 8 13:48:14 2004
@@ -1,5 +1,13 @@
2004-07-08 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
+ * config/x86_64//linux/md.h (SIGNAL_ARGS, SIGNAL_CONTEXT_POINTER):
+ Kernel sends an (ucontext_t *) to the signal handler.
+ * config/x86_64/linux/sigcontextinfo.h
+ (REG_RIP, REG_RBP, REG_RSP): Define.
+ (GET_PC, GET_FRAME, GET_STACK): Use uc_mcontext.gregs[].
+
+2004-07-08 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
+
* kaffe/kaffevm/systems/unix-jthreads/signal.c
(detectStackBoundaries): Fix initialization of guessPointer on
64-bit platforms.
Index: kaffe/config/x86_64/linux/md.h
diff -u kaffe/config/x86_64/linux/md.h:1.2 kaffe/config/x86_64/linux/md.h:1.3
--- kaffe/config/x86_64/linux/md.h:1.2 Mon Jun 7 19:14:25 2004
+++ kaffe/config/x86_64/linux/md.h Thu Jul 8 13:48:16 2004
@@ -28,8 +28,8 @@
#include "sigcontextinfo.h"
-#define SIGNAL_ARGS(sig, scp) int sig, siginfo_t *sip, struct sigcontext *scp
-#define SIGNAL_CONTEXT_POINTER(scp) struct sigcontext *scp
+#define SIGNAL_ARGS(sig, scp) int sig, siginfo_t *sip, ucontext_t *scp
+#define SIGNAL_CONTEXT_POINTER(scp) ucontext_t *scp
#define GET_SIGNAL_CONTEXT_POINTER(sc) (sc)
#define SIGNAL_PC(scp) (GET_PC((*scp)))
#define STACK_POINTER(scp) (GET_STACK((*scp)))
Index: kaffe/config/x86_64/linux/sigcontextinfo.h
diff -u kaffe/config/x86_64/linux/sigcontextinfo.h:1.2 kaffe/config/x86_64/linux/sigcontextinfo.h:1.3
--- kaffe/config/x86_64/linux/sigcontextinfo.h:1.2 Tue Jul 6 20:48:34 2004
+++ kaffe/config/x86_64/linux/sigcontextinfo.h Thu Jul 8 13:48:16 2004
@@ -16,6 +16,22 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#define GET_PC(ctx) ((void *) (ctx).rip)
-#define GET_FRAME(ctx) ((void *) (ctx).rbp)
-#define GET_STACK(ctx) ((void *) (ctx).rsp)
+#include <sys/ucontext.h>
+#include <stddef.h>
+
+/* Indices are defined if _GNU_SOURCE is set prior to include <sys/ucontext.h> */
+#define REG_INDEX(NAME) (offsetof(struct sigcontext, NAME) / sizeof(greg_t))
+
+#ifndef REG_RIP
+#define REG_RIP REG_INDEX(rip) /* 16 */
+#endif
+#ifndef REG_RBP
+#define REG_RBP REG_INDEX(rbp) /* 10 */
+#endif
+#ifndef REG_RSP
+#define REG_RSP REG_INDEX(rsp) /* 15 */
+#endif
+
+#define GET_PC(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RIP])
+#define GET_FRAME(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RBP])
+#define GET_STACK(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RSP])
More information about the kaffe
mailing list