diff options
author | Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> | 2008-07-28 21:59:40 +0000 |
---|---|---|
committer | Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> | 2008-07-28 21:59:40 +0000 |
commit | 2263510b7a0a6dedef573dc25a63bfab9d58effb (patch) | |
tree | 9a2f68f2ddccd8a227a893d593533571865e0102 /patches/glibc/2.6/200-alpha-ptr_mangle.patch | |
parent | 6317df47791e1e35b78dc69a636445dbc22d5c21 (diff) | |
download | crosstool-ng-2263510b7a0a6dedef573dc25a63bfab9d58effb.tar.gz crosstool-ng-2263510b7a0a6dedef573dc25a63bfab9d58effb.tar.bz2 crosstool-ng-2263510b7a0a6dedef573dc25a63bfab9d58effb.zip |
New patches to make glibc 2.6 and 2.6.1 build for Alpha.
Forwarded by Ioannis E. VENETIS.
/trunk/patches/glibc/2.6.1/200-alpha-ptr_mangle.patch | 103 103 0 0 ++++++++
/trunk/patches/glibc/2.6.1/190-alpha-atfcts.patch | 11 11 0 0 +
/trunk/patches/glibc/2.6.1/180-gcc-4.3-sysinclude-path.patch | 50 50 0 0 ++++
/trunk/patches/glibc/2.6.1/210-lll_lock_t.patch | 237 237 0 0 ++++++++++++++++++
/trunk/patches/glibc/2.6/200-alpha-ptr_mangle.patch | 103 103 0 0 ++++++++
/trunk/patches/glibc/2.6/190-alpha-atfcts.patch | 11 11 0 0 +
/trunk/patches/glibc/2.6/180-gcc-4.3-sysinclude-path.patch | 50 50 0 0 ++++
/trunk/patches/glibc/2.6/210-lll_lock_t.patch | 237 237 0 0 ++++++++++++++++++
/trunk/patches/glibc/ports-2.6.1/120-lll_lock_t.patch | 156 156 0 0 ++++++++++++
9 files changed, 958 insertions(+)
Diffstat (limited to 'patches/glibc/2.6/200-alpha-ptr_mangle.patch')
-rw-r--r-- | patches/glibc/2.6/200-alpha-ptr_mangle.patch | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/patches/glibc/2.6/200-alpha-ptr_mangle.patch b/patches/glibc/2.6/200-alpha-ptr_mangle.patch new file mode 100644 index 00000000..7de4bacf --- /dev/null +++ b/patches/glibc/2.6/200-alpha-ptr_mangle.patch @@ -0,0 +1,103 @@ +--- glibc-2.6.orig/sysdeps/unix/alpha/sysdep.h ++++ glibc-2.6/sysdeps/unix/alpha/sysdep.h +@@ -397,42 +397,4 @@ + _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) = (__typeof (var)) ((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 */ +--- glibc-2.6.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h ++++ glibc-2.6/sysdeps/unix/sysv/linux/alpha/sysdep.h +@@ -29,6 +29,8 @@ + /* There is some commonality. */ + #include <sysdeps/unix/alpha/sysdep.h> + ++#include <tls.h> ++ + /* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h + of the kernel. But these symbols do not follow the SYS_* syntax +@@ -96,4 +96,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_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) = (__typeof (var)) ((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 ++#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 */ |