SOURCES: glibc-2.7-alpha_PTR_MANGLE_move-1.patch - updated, now it...

pluto pluto at pld-linux.org
Tue Feb 26 14:22:19 CET 2008


Author: pluto                        Date: Tue Feb 26 13:22:19 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated, now it works.

---- Files affected:
SOURCES:
   glibc-2.7-alpha_PTR_MANGLE_move-1.patch (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/glibc-2.7-alpha_PTR_MANGLE_move-1.patch
diff -u SOURCES/glibc-2.7-alpha_PTR_MANGLE_move-1.patch:1.1 SOURCES/glibc-2.7-alpha_PTR_MANGLE_move-1.patch:1.2
--- SOURCES/glibc-2.7-alpha_PTR_MANGLE_move-1.patch:1.1	Mon Feb 25 20:59:29 2008
+++ SOURCES/glibc-2.7-alpha_PTR_MANGLE_move-1.patch	Tue Feb 26 14:22:13 2008
@@ -1,6 +1,28 @@
-diff -Naur glibc-2.7.orig/sysdeps/unix/alpha/sysdep.h glibc-2.7/sysdeps/unix/alpha/sysdep.h
---- glibc-2.7.orig/sysdeps/unix/alpha/sysdep.h	2006-03-03 06:21:28.000000000 -0500
-+++ glibc-2.7/sysdeps/unix/alpha/sysdep.h	2007-10-27 23:14:36.000000000 -0400
+Additional Comment #5 From Pierre Habouzit  2007-11-02 08:2012
+
+Subject: Re:  glibc 2.7 compilation problem on alpha due to PTR_MANGLE and PTR_DEMANGLE
+On Sun, Oct 28, 2007 at 09:47:59PM +0000, jciccone at gmail dot com wrote:
+> 
+> ------- Additional Comments From jciccone at gmail dot com  2007-10-28 19:47 -------
+> Created an attachment (id=2062)
+>  --> (http://sourceware.org/bugzilla/attachment.cgi?id=2062&action=view)
+> patch that moves PTR_MANGLE for alpha
+
+> Also, in every architecture besides alpha, the #if defined NOT_IN_libc &&
+> defined IS_IN_rtld contition has #else. alpha has a #elif defined PIC. The
+> attached patch changes that #elif defined PIC to a #else.
+
+The thing is, in non PIC mode, rtld.o is not in the libc.a (or hasn't
+the symbol that the libc uses for PTR_MANGLE which is the same), so PIC
+is definitely special cased.
+
+Attached is a patch that fixes the issue for Debian, and let alpha
+build, at the expense of disabling MANGLING in the non PIC case, but
+googling showed that the issue is known, and that nobody really cares
+about it.
+
+--- glibc-2.7.orig/sysdeps/unix/alpha/sysdep.h
++++ glibc-2.7/sysdeps/unix/alpha/sysdep.h
 @@ -397,42 +397,4 @@
  	_sc_ret = _sc_0, _sc_err = _sc_19;			\
  }
@@ -44,44 +66,52 @@
 -#endif
 -
  #endif /* ASSEMBLER */
-diff -Naur glibc-2.7.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h glibc-2.7/sysdeps/unix/sysv/linux/alpha/sysdep.h
---- glibc-2.7.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h	2007-08-21 04:07:28.000000000 -0400
-+++ glibc-2.7/sysdeps/unix/sysv/linux/alpha/sysdep.h	2007-10-27 23:39:45.000000000 -0400
-@@ -98,4 +98,37 @@
+--- glibc-2.7.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h
++++ glibc-2.7/sysdeps/unix/sysv/linux/alpha/sysdep.h
+@@ -98,4 +98,46 @@
  	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_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)       \
++#  define PTR_MANGLE(var)	\
 +  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
 +#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
 +# endif
-+#else
++#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_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_MANGLE(var)	\
++	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
 +#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
 +# endif
++#else
++/* Pointer mangling is not yet supported for static libc on alpha.  */
++# ifndef __ASSEMBLER__
++#  define PTR_MANGLE(var)   (void) (var)
++#  define PTR_DEMANGLE(var) (void) (var)
++# endif
 +#endif
 +
  #endif /* _LINUX_ALPHA_SYSDEP_H */
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/glibc-2.7-alpha_PTR_MANGLE_move-1.patch?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list