This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix x86-64 sigcontextinfo.h


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]