[PATCH] Fix x86-64 sigcontextinfo.h
Jakub Jelinek
jakub@redhat.com
Tue Sep 9 10:51:00 GMT 2003
Hi!
This patch matches what the kernel does, passed make check (linuxthreads,
NPTL and NPTL with linuxthreads ld.so) and libSegFault.so works.
linuxthreads __pthread_sighandler doesn't have to copy 936 bytes around,
just passes the pointer which was given to it.
2003-09-09 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): Add
siginfo_t * argument before, change into struct ucontext *.
(SIGCONTEXT_EXTRA_ARGS): Define to _si,.
(GET_PC, GET_FRAME, GET_STACK): Adjust for ctx being a pointer
instead of structure.
* sysdeps/unix/sysv/linux/x86_64/register-dump.h (REGISTER_DUMP):
Likewise.
--- libc/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h.jj 2003-09-09 05:17:06.000000000 -0400
+++ libc/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h 2003-09-09 05:48:38.000000000 -0400
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2003 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
@@ -16,11 +16,11 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#define SIGCONTEXT struct ucontext
-#define SIGCONTEXT_EXTRA_ARGS
-#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])
+#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define SIGCONTEXT_EXTRA_ARGS _si,
+#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])
#define CALL_SIGHANDLER(handler, signo, ctx) \
(handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
--- libc/sysdeps/unix/sysv/linux/x86_64/register-dump.h.jj 2003-09-09 05:17:06.000000000 -0400
+++ libc/sysdeps/unix/sysv/linux/x86_64/register-dump.h 2003-09-09 05:53:43.000000000 -0400
@@ -343,4 +343,4 @@ register_dump (int fd, struct ucontext *
}
-#define REGISTER_DUMP register_dump (fd, &ctx)
+#define REGISTER_DUMP register_dump (fd, ctx)
Jakub
More information about the Libc-hacker
mailing list