patches/glibc/ports-2.10.1/450-alpha-ptr-mangling.patch
author Arnaud Lacombe <lacombar@gmail.com>
Thu Aug 05 17:59:51 2010 +0200 (2010-08-05)
changeset 2069 366bd2b22675
permissions -rw-r--r--
complibs/mpc: fix MPC 0.8.1 build with MPFR 3.0.0

This is the change introduced by revision 734 of MPC repository.

Author: Paul Zimmermann <Paul.Zimmermann@loria.fr>
Revision log: [acos.c] fixed problem with GMP_RNDA (should be MPFR_RNDA, and code was wrong)

Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
yann@1625
     1
http://bugs.gentoo.org/201910
yann@1625
     2
yann@1625
     3
For every arch, PTR_MANGLE and PTR_DEMANGLE defines are in
yann@1625
     4
sysdeps/unix/sysv/linux/<arch>/sysdep.h. But for alpha this is not true. The
yann@1625
     5
defines are in sysdeps/unix/alpha/sysdep.h and unix/sysv/linux/alpha/sysdep.h
yann@1625
     6
includes the first.
yann@1625
     7
yann@1625
     8
This is a patch that fixes the issue and let alpha build, at the expense of
yann@1625
     9
disabling MANGLING in the non PIC case, but googling showed that the issue is
yann@1625
    10
known, and that nobody really cares about it. 
yann@1625
    11
yann@1625
    12
Info from: http://sourceware.org/bugzilla/show_bug.cgi?id=5216
yann@1625
    13
yann@1625
    14
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/alpha/sysdep.h glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/alpha/sysdep.h
yann@1625
    15
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/alpha/sysdep.h	2009-05-16 10:36:20.000000000 +0200
yann@1625
    16
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/alpha/sysdep.h	2009-11-13 00:50:55.000000000 +0100
yann@1625
    17
@@ -397,42 +397,4 @@
yann@1625
    18
 	_sc_ret = _sc_0, _sc_err = _sc_19;			\
yann@1625
    19
 }
yann@1625
    20
 
yann@1625
    21
-/* Pointer mangling support.  Note that tls access is slow enough that
yann@1625
    22
-   we don't deoptimize things by placing the pointer check value there.  */
yann@1625
    23
-
yann@1625
    24
-#include <stdint.h>
yann@1625
    25
-
yann@1625
    26
-#if defined NOT_IN_libc && defined IS_IN_rtld
yann@1625
    27
-# ifdef __ASSEMBLER__
yann@1625
    28
-#  define PTR_MANGLE(dst, src, tmp)				\
yann@1625
    29
-	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
yann@1625
    30
-	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
yann@1625
    31
-	xor	src, tmp, dst
yann@1625
    32
-#  define PTR_MANGLE2(dst, src, tmp)				\
yann@1625
    33
-	xor	src, tmp, dst
yann@1625
    34
-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
yann@1625
    35
-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
yann@1625
    36
-# else
yann@1625
    37
-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
yann@1625
    38
-#  define PTR_MANGLE(var)	\
yann@1625
    39
-  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
yann@1625
    40
-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
yann@1625
    41
-# endif
yann@1625
    42
-#elif defined PIC
yann@1625
    43
-# ifdef __ASSEMBLER__
yann@1625
    44
-#  define PTR_MANGLE(dst, src, tmp)		\
yann@1625
    45
-	ldq	tmp, __pointer_chk_guard;	\
yann@1625
    46
-	xor	src, tmp, dst
yann@1625
    47
-#  define PTR_MANGLE2(dst, src, tmp)		\
yann@1625
    48
-	xor	src, tmp, dst
yann@1625
    49
-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
yann@1625
    50
-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
yann@1625
    51
-# else
yann@1625
    52
-extern uintptr_t __pointer_chk_guard attribute_relro;
yann@1625
    53
-#  define PTR_MANGLE(var)	\
yann@1625
    54
-	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
yann@1625
    55
-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
yann@1625
    56
-# endif
yann@1625
    57
-#endif
yann@1625
    58
-
yann@1625
    59
 #endif /* ASSEMBLER */
yann@1625
    60
diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/sysdep.h glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/sysdep.h
yann@1625
    61
--- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/sysdep.h	2009-05-16 10:36:20.000000000 +0200
yann@1625
    62
+++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/unix/sysv/linux/alpha/sysdep.h	2009-11-13 00:50:55.000000000 +0100
yann@1625
    63
@@ -98,4 +98,46 @@
yann@1625
    64
 	INTERNAL_SYSCALL1(name, err_out, nr, args);			\
yann@1625
    65
 })
yann@1625
    66
 
yann@1625
    67
+/* Pointer mangling support.  Note that tls access is slow enough that
yann@1625
    68
+   we don't deoptimize things by placing the pointer check value there.  */
yann@1625
    69
+
yann@1625
    70
+#if defined NOT_IN_libc && defined IS_IN_rtld
yann@1625
    71
+# ifdef __ASSEMBLER__
yann@1625
    72
+#  define PTR_MANGLE(dst, src, tmp)                            \
yann@1625
    73
+       ldah    tmp, __pointer_chk_guard_local($29) !gprelhigh; \
yann@1625
    74
+       ldq     tmp, __pointer_chk_guard_local(tmp) !gprellow;  \
yann@1625
    75
+       xor     src, tmp, dst
yann@1625
    76
+#  define PTR_MANGLE2(dst, src, tmp)                           \
yann@1625
    77
+       xor     src, tmp, dst
yann@1625
    78
+#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
yann@1625
    79
+#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
yann@1625
    80
+# else
yann@1625
    81
+extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
yann@1625
    82
+#  define PTR_MANGLE(var)      \
yann@1625
    83
+  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
yann@1625
    84
+#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
yann@1625
    85
+# endif
yann@1625
    86
+#elif defined PIC
yann@1625
    87
+# ifdef __ASSEMBLER__
yann@1625
    88
+#  define PTR_MANGLE(dst, src, tmp)            \
yann@1625
    89
+       ldq     tmp, __pointer_chk_guard;       \
yann@1625
    90
+       xor     src, tmp, dst
yann@1625
    91
+#  define PTR_MANGLE2(dst, src, tmp)           \
yann@1625
    92
+       xor     src, tmp, dst
yann@1625
    93
+#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
yann@1625
    94
+#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
yann@1625
    95
+# else
yann@1625
    96
+extern uintptr_t __pointer_chk_guard attribute_relro;
yann@1625
    97
+#  define PTR_MANGLE(var)      \
yann@1625
    98
+       (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
yann@1625
    99
+#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
yann@1625
   100
+# endif
yann@1625
   101
+#else
yann@1625
   102
+/* Pointer mangling is not yet supported for static libc on alpha.  */
yann@1625
   103
+# ifndef __ASSEMBLER__
yann@1625
   104
+#  define PTR_MANGLE(var)   (void) (var)
yann@1625
   105
+#  define PTR_DEMANGLE(var) (void) (var)
yann@1625
   106
+# endif
yann@1625
   107
+#endif
yann@1625
   108
+
yann@1625
   109
 #endif /* _LINUX_ALPHA_SYSDEP_H */
yann@1625
   110
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/alpha/sysdep.h glibc-2.10.1/ports/sysdeps/unix/alpha/sysdep.h
yann@1625
   111
diff -durN glibc-2.10.1.orig/ports/sysdeps/unix/sysv/linux/alpha/sysdep.h glibc-2.10.1/ports/sysdeps/unix/sysv/linux/alpha/sysdep.h