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