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]

Re: [PATCH] Fix x86-64 sigcontextinfo.h


Jakub Jelinek <jakub@redhat.com> writes:

> 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.

And does not copy more data than was passed to it - the kernel might
pass less than those bytes around.

> 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)

Thanks!  This looks correct to me!
Andreas
-- 
 Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
  SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
   GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126

Attachment: pgp00000.pgp
Description: PGP signature


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