This is the mail archive of the libc-hacker@sourceware.org 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: [rfa] alpha sjlj vs pointer mangling


On Wed, Jan 11, 2006 at 04:25:07PM -0800, Ulrich Drepper wrote:
> I already added the previous patch plus the --as-needed fixup.  Please
> resent whatever patch is needed on top of the current CVS version.

Here's what's needed vs yesterday's cvs.  A couple of new things
crept in on the side.


r~


2006-01-13  Richard Henderson  <rth@redhat.com>

nptl/
	* sysdeps/alpha/tls.h (tcbhead_t): Rename member to __private.

	* sysdeps/alpha/__longjmp.S: Update copyright.
	* sysdeps/alpha/setjmp.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sysdep.h (PTR_MANGLE, PTR_MANGLE2,
	PTR_DEMANGLE, PTR_DEMANGLE2): Move ...
	* sysdeps/unix/alpha/sysdep.h: ... here.
	* sysdeps/unix/sysv/linux/alpha/fxstatat.c: Define __GI___fxstatat64.

Index: nptl/sysdeps/alpha/tls.h
===================================================================
RCS file: /cvs/glibc/libc/nptl/sysdeps/alpha/tls.h,v
retrieving revision 1.5
diff -u -p -d -r1.5 tls.h
--- nptl/sysdeps/alpha/tls.h	6 Jan 2005 22:40:24 -0000	1.5
+++ nptl/sysdeps/alpha/tls.h	13 Jan 2006 21:05:29 -0000
@@ -65,7 +65,7 @@ typedef union dtv
 typedef struct
 {
   dtv_t *dtv;
-  void *private;
+  void *__private;
 } tcbhead_t;
 
 /* This is the size of the initial TCB.  */
Index: sysdeps/alpha/__longjmp.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/alpha/__longjmp.S,v
retrieving revision 1.4
diff -u -p -d -r1.4 __longjmp.S
--- sysdeps/alpha/__longjmp.S	11 Jan 2006 22:14:19 -0000	1.4
+++ sysdeps/alpha/__longjmp.S	13 Jan 2006 21:05:30 -0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1994, 1997, 2006 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
Index: sysdeps/alpha/setjmp.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/alpha/setjmp.S,v
retrieving revision 1.20
diff -u -p -d -r1.20 setjmp.S
--- sysdeps/alpha/setjmp.S	11 Jan 2006 22:15:28 -0000	1.20
+++ sysdeps/alpha/setjmp.S	13 Jan 2006 21:05:30 -0000
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992, 1994, 1996, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1994, 1996, 1997, 2002, 2006
+   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
Index: sysdeps/unix/alpha/sysdep.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/alpha/sysdep.h,v
retrieving revision 1.27
diff -u -p -d -r1.27 sysdep.h
--- sysdeps/unix/alpha/sysdep.h	20 Sep 2005 05:35:42 -0000	1.27
+++ sysdeps/unix/alpha/sysdep.h	13 Jan 2006 21:05:32 -0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1996, 2000, 2003, 2004
+/* Copyright (C) 1992, 1995, 1996, 2000, 2003, 2004, 2006
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
@@ -397,4 +397,42 @@ __LABEL(name)						\
 	_sc_ret = _sc_0, _sc_err = _sc_19;			\
 }
 
+/* Pointer mangling support.  Note that tls access is slow enough that
+   we don't deoptimize things by placing the pointer check value there.  */
+
+#include <stdint.h>
+
+#if defined NOT_IN_libc && defined IS_IN_rtld
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(dst, src, tmp)				\
+	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
+	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
+	xor	src, tmp, dst
+#  define PTR_MANGLE2(dst, src, tmp)				\
+	xor	src, tmp, dst
+#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
+#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
+# else
+extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
+#  define PTR_MANGLE(var)	\
+	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
+#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
+# endif
+#elif defined PIC
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(dst, src, tmp)		\
+	ldq	tmp, __pointer_chk_guard;	\
+	xor	src, tmp, dst
+#  define PTR_MANGLE2(dst, src, tmp)		\
+	xor	src, tmp, dst
+#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
+#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
+# else
+extern uintptr_t __pointer_chk_guard attribute_relro;
+#  define PTR_MANGLE(var)	\
+	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
+#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
+# endif
+#endif
+
 #endif /* ASSEMBLER */
Index: sysdeps/unix/sysv/linux/alpha/fxstatat.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/fxstatat.c,v
retrieving revision 1.2
diff -u -p -d -r1.2 fxstatat.c
--- sysdeps/unix/sysv/linux/alpha/fxstatat.c	26 Nov 2005 00:52:45 -0000	1.2
+++ sysdeps/unix/sysv/linux/alpha/fxstatat.c	13 Jan 2006 21:05:32 -0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006 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
@@ -94,4 +94,5 @@ __fxstatat (int vers, int fd, const char
 
   return -1;
 }
-strong_alias (__fxstatat, __fxstatat64);
+strong_alias (__fxstatat, __fxstatat64)
+strong_alias (__fxstatat64, __GI___fxstatat64)
Index: sysdeps/unix/sysv/linux/alpha/sysdep.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h,v
retrieving revision 1.18
diff -u -p -d -r1.18 sysdep.h
--- sysdeps/unix/sysv/linux/alpha/sysdep.h	11 Jan 2006 22:16:27 -0000	1.18
+++ sysdeps/unix/sysv/linux/alpha/sysdep.h	13 Jan 2006 21:05:32 -0000
@@ -24,8 +24,6 @@
 #ifdef __ASSEMBLER__
 #include <asm/pal.h>
 #include <alpha/regdef.h>
-#else
-#include <stdint.h>
 #endif
 
 /* There is some commonality.  */
@@ -98,39 +96,4 @@
 	INTERNAL_SYSCALL1(name, err_out, nr, args);			\
 })
 
-/* Pointer mangling support.  Note that tls access is slow enough that
-   we don't deoptimize things by placing the pointer check value there.  */
-#if defined NOT_IN_libc && defined IS_IN_rtld
-# ifdef __ASSEMBLER__
-#  define PTR_MANGLE(dst, src, tmp)				\
-	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
-	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
-	xor	src, tmp, dst
-#  define PTR_MANGLE2(dst, src, tmp)				\
-	xor	src, tmp, dst
-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
-# else
-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
-#  define PTR_MANGLE(var)	\
-	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
-# endif
-#elif defined PIC
-# ifdef __ASSEMBLER__
-#  define PTR_MANGLE(dst, src, tmp)		\
-	ldq	tmp, __pointer_chk_guard;	\
-	xor	src, tmp, dst
-#  define PTR_MANGLE2(dst, src, tmp)		\
-	xor	src, tmp, dst
-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
-# else
-extern uintptr_t __pointer_chk_guard attribute_relro;
-#  define PTR_MANGLE(var)	\
-	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
-# endif
-#endif
-
 #endif /* _LINUX_ALPHA_SYSDEP_H */


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