1.1 --- a/patches/glibc/2.7/240-glibc-2.7-alpha-ptr_mangle.patch Mon Jul 28 11:43:29 2008 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,94 +0,0 @@
1.4 ---- glibc-2.7.orig/sysdeps/unix/alpha/sysdep.h
1.5 -+++ glibc-2.7/sysdeps/unix/alpha/sysdep.h
1.6 -@@ -397,42 +397,4 @@
1.7 - _sc_ret = _sc_0, _sc_err = _sc_19; \
1.8 - }
1.9 -
1.10 --/* Pointer mangling support. Note that tls access is slow enough that
1.11 -- we don't deoptimize things by placing the pointer check value there. */
1.12 --
1.13 --#include <stdint.h>
1.14 --
1.15 --#if defined NOT_IN_libc && defined IS_IN_rtld
1.16 --# ifdef __ASSEMBLER__
1.17 --# define PTR_MANGLE(dst, src, tmp) \
1.18 -- ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \
1.19 -- ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \
1.20 -- xor src, tmp, dst
1.21 --# define PTR_MANGLE2(dst, src, tmp) \
1.22 -- xor src, tmp, dst
1.23 --# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp)
1.24 --# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp)
1.25 --# else
1.26 --extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
1.27 --# define PTR_MANGLE(var) \
1.28 -- (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
1.29 --# define PTR_DEMANGLE(var) PTR_MANGLE(var)
1.30 --# endif
1.31 --#elif defined PIC
1.32 --# ifdef __ASSEMBLER__
1.33 --# define PTR_MANGLE(dst, src, tmp) \
1.34 -- ldq tmp, __pointer_chk_guard; \
1.35 -- xor src, tmp, dst
1.36 --# define PTR_MANGLE2(dst, src, tmp) \
1.37 -- xor src, tmp, dst
1.38 --# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp)
1.39 --# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp)
1.40 --# else
1.41 --extern uintptr_t __pointer_chk_guard attribute_relro;
1.42 --# define PTR_MANGLE(var) \
1.43 -- (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
1.44 --# define PTR_DEMANGLE(var) PTR_MANGLE(var)
1.45 --# endif
1.46 --#endif
1.47 --
1.48 - #endif /* ASSEMBLER */
1.49 ---- glibc-2.7.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h
1.50 -+++ glibc-2.7/sysdeps/unix/sysv/linux/alpha/sysdep.h
1.51 -@@ -98,4 +98,46 @@
1.52 - INTERNAL_SYSCALL1(name, err_out, nr, args); \
1.53 - })
1.54 -
1.55 -+/* Pointer mangling support. Note that tls access is slow enough that
1.56 -+ we don't deoptimize things by placing the pointer check value there. */
1.57 -+
1.58 -+#if defined NOT_IN_libc && defined IS_IN_rtld
1.59 -+# ifdef __ASSEMBLER__
1.60 -+# define PTR_MANGLE(dst, src, tmp) \
1.61 -+ ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \
1.62 -+ ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \
1.63 -+ xor src, tmp, dst
1.64 -+# define PTR_MANGLE2(dst, src, tmp) \
1.65 -+ xor src, tmp, dst
1.66 -+# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp)
1.67 -+# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp)
1.68 -+# else
1.69 -+extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
1.70 -+# define PTR_MANGLE(var) \
1.71 -+ (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
1.72 -+# define PTR_DEMANGLE(var) PTR_MANGLE(var)
1.73 -+# endif
1.74 -+#elif defined PIC
1.75 -+# ifdef __ASSEMBLER__
1.76 -+# define PTR_MANGLE(dst, src, tmp) \
1.77 -+ ldq tmp, __pointer_chk_guard; \
1.78 -+ xor src, tmp, dst
1.79 -+# define PTR_MANGLE2(dst, src, tmp) \
1.80 -+ xor src, tmp, dst
1.81 -+# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp)
1.82 -+# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp)
1.83 -+# else
1.84 -+extern uintptr_t __pointer_chk_guard attribute_relro;
1.85 -+# define PTR_MANGLE(var) \
1.86 -+ (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
1.87 -+# define PTR_DEMANGLE(var) PTR_MANGLE(var)
1.88 -+# endif
1.89 -+#else
1.90 -+/* Pointer mangling is not yet supported for static libc on alpha. */
1.91 -+# ifndef __ASSEMBLER__
1.92 -+# define PTR_MANGLE(var) (void) (var)
1.93 -+# define PTR_DEMANGLE(var) (void) (var)
1.94 -+# endif
1.95 -+#endif
1.96 -+
1.97 - #endif /* _LINUX_ALPHA_SYSDEP_H */