mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-31 08:25:32 +00:00
Add two new patches to glibc-2.7 to make it build for Alpha.
Patches propagated to me from the net by Ioannis E. VENETIS. /trunk/patches/glibc/2.7/230-glibc-2.7-alpha-atfcts.patch | 12 12 0 0 ++ /trunk/patches/glibc/2.7/240-glibc-2.7-alpha-ptr_mangle.patch | 94 94 0 0 +++++++++++++++++ 2 files changed, 106 insertions(+)
This commit is contained in:
parent
c3817897cb
commit
1910e80fd2
12
patches/glibc/2.7/230-glibc-2.7-alpha-atfcts.patch
Normal file
12
patches/glibc/2.7/230-glibc-2.7-alpha-atfcts.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- glibc-2.7/sysdeps/unix/sysv/linux/kernel-features.h 2007-08-14 06:21:09.000000000 +0300
|
||||
+++ glibc-2.7/sysdeps/unix/sysv/linux/kernel-features.h.new 2008-07-23 07:05:20.000000000 +0300
|
||||
@@ -449,8 +449,7 @@
|
||||
and on Alpha just after 2.6.22-rc1. */
|
||||
#if __LINUX_KERNEL_VERSION >= 0x020611 \
|
||||
&& ((!defined __sh__ && !defined __alpha__) \
|
||||
- || (__LINUX_KERNEL_VERSION >= 0x020613 && defined __sh__) \
|
||||
- || (__LINUX_KERNEL_VERSION >= 0x020617 && defined __alpha__))
|
||||
+ || (__LINUX_KERNEL_VERSION >= 0x020613 && defined __sh__))
|
||||
# define __ASSUME_ATFCTS 1
|
||||
#endif
|
||||
|
94
patches/glibc/2.7/240-glibc-2.7-alpha-ptr_mangle.patch
Normal file
94
patches/glibc/2.7/240-glibc-2.7-alpha-ptr_mangle.patch
Normal file
@ -0,0 +1,94 @@
|
||||
--- 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; \
|
||||
}
|
||||
|
||||
-/* 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.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_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 */
|
Loading…
x
Reference in New Issue
Block a user