summaryrefslogtreecommitdiff
path: root/patches/glibc
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-10-22 20:50:10 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-10-22 20:50:10 (GMT)
commitc15b9fb7ea698d49665b4a04b18e6f785b895a14 (patch)
tree3537a4cf88fedb6aa3355b929fdfacf8059971a9 /patches/glibc
parent9d4c07f32f11187d471f05cd2165e6adbd4240a0 (diff)
Make Super-H finally compile a complete (C-only) toolchain:
- new, un-tested patches - an sh4 sample to work on, and to try to reproduce later. /trunk/patches/glibc/2.7/250-sh-chop-linux-version.patch | 49 49 0 0 ++ /trunk/patches/glibc/2.7/240-sh-lowlevellock-asm.patch | 56 56 0 0 +++ /trunk/patches/glibc/2.7/270-sh-fix-procfs.patch | 11 11 0 0 + /trunk/patches/glibc/2.7/280-sh-fix-kernel-heders-location.patch | 23 23 0 0 + /trunk/patches/glibc/2.7/260-sh-syscall-error-path.patch | 26 26 0 0 + /trunk/samples/sh4-unknown-linux-gnu/crosstool.config | 311 311 0 0 ++++++++++++++ /trunk/samples/sh4-unknown-linux-gnu/reported.by | 3 3 0 0 + 7 files changed, 479 insertions(+)
Diffstat (limited to 'patches/glibc')
-rw-r--r--patches/glibc/2.7/240-sh-lowlevellock-asm.patch56
-rw-r--r--patches/glibc/2.7/250-sh-chop-linux-version.patch49
-rw-r--r--patches/glibc/2.7/260-sh-syscall-error-path.patch26
-rw-r--r--patches/glibc/2.7/270-sh-fix-procfs.patch11
-rw-r--r--patches/glibc/2.7/280-sh-fix-kernel-heders-location.patch23
5 files changed, 165 insertions, 0 deletions
diff --git a/patches/glibc/2.7/240-sh-lowlevellock-asm.patch b/patches/glibc/2.7/240-sh-lowlevellock-asm.patch
new file mode 100644
index 0000000..dec0390
--- /dev/null
+++ b/patches/glibc/2.7/240-sh-lowlevellock-asm.patch
@@ -0,0 +1,56 @@
+--- glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S.orig 2007-08-03 16:44:15.000000000 +0100
++++ glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S 2008-08-19 21:08:19.000000000 +0100
+@@ -76,7 +76,7 @@
+ add tmp2, tmp ; \
+ mov.l @tmp, tmp2 ; \
+ bra 98f ; \
+- mov #FUTEX_PRIVATE_FLAG, tmp
++ mov #FUTEX_PRIVATE_FLAG, tmp ; \
+ 99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
+ 98: extu.b tmp, tmp ; \
+ xor tmp, reg ; \
+@@ -88,7 +88,7 @@
+ add tmp2, tmp ; \
+ mov.l @tmp, tmp2 ; \
+ bra 98f ; \
+- mov #FUTEX_PRIVATE_FLAG, tmp
++ mov #FUTEX_PRIVATE_FLAG, tmp ; \
+ 99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
+ 98: extu.b tmp, tmp ; \
+ xor tmp, reg ; \
+@@ -96,13 +96,13 @@
+ mov #FUTEX_WAIT, tmp ; \
+ or tmp, reg
+ # endif
+-# define LOAD_FUTEX_WAKE(reg,tmp) \
++# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
+ stc gbr, tmp ; \
+ mov.w 99f, tmp2 ; \
+ add tmp2, tmp ; \
+ mov.l @tmp, tmp2 ; \
+ bra 98f ; \
+- mov #FUTEX_PRIVATE_FLAG, tmp
++ mov #FUTEX_PRIVATE_FLAG, tmp ; \
+ 99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
+ 98: extu.b tmp, tmp ; \
+ xor tmp, reg ; \
+--- glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S.orig 2007-08-03 16:44:57.000000000 +0100
++++ glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S 2008-08-19 21:08:22.000000000 +0100
+@@ -42,7 +42,7 @@
+ add tmp2, tmp ; \
+ mov.l @tmp, tmp2 ; \
+ bra 98f ; \
+- mov #FUTEX_PRIVATE_FLAG, tmp
++ mov #FUTEX_PRIVATE_FLAG, tmp ; \
+ 99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
+ 98: extu.b tmp, tmp ; \
+ xor tmp, reg ; \
+@@ -54,7 +54,7 @@
+ add tmp2, tmp ; \
+ mov.l @tmp, tmp2 ; \
+ bra 98f ; \
+- mov #FUTEX_PRIVATE_FLAG, tmp
++ mov #FUTEX_PRIVATE_FLAG, tmp ; \
+ 99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
+ 98: extu.b tmp, tmp ; \
+ xor tmp, reg ; \
diff --git a/patches/glibc/2.7/250-sh-chop-linux-version.patch b/patches/glibc/2.7/250-sh-chop-linux-version.patch
new file mode 100644
index 0000000..7d0062b
--- /dev/null
+++ b/patches/glibc/2.7/250-sh-chop-linux-version.patch
@@ -0,0 +1,49 @@
+--- glibc-2.7/sysdeps/unix/sysv/linux/dl-osinfo.h.orig 2007-09-15 23:54:08.000000000 +0100
++++ glibc-2.7/sysdeps/unix/sysv/linux/dl-osinfo.h 2008-08-20 09:26:26.000000000 +0100
+@@ -83,6 +83,10 @@
+ int parts;
+ char *cp;
+ struct utsname uts;
++ int dotsfound = 0;
++ int versionindex = 0;
++ char *choppoint;
++
+
+ /* Try the uname system call. */
+ if (__uname (&uts))
+@@ -102,8 +106,34 @@
+ else
+ buf = uts.release;
+
++ /* We are only interested in the first three kernel numbers, so */
++ /* chop off anything past that: */
++
++ choppoint = buf;
++ while (1)
++ {
++ versionindex++;
++ if (versionindex == 63) break;
++ if (*choppoint == '.') dotsfound++;
++ choppoint++;
++ if (dotsfound == 2)
++ {
++ if (*choppoint == '0' || *choppoint == '1'
++ || *choppoint == '2' || *choppoint == '3'
++ || *choppoint == '4' || *choppoint == '5'
++ || *choppoint == '6' || *choppoint == '7'
++ || *choppoint == '8' || *choppoint == '9')
++ continue;
++ else
++ {
++ *choppoint = 0;
++ break;
++ }
++ }
++ }
++
+ /* Now convert it into a number. The string consists of at most
+- three parts. */
++ three parts. Now it does, anyway. ;-) */
+ version = 0;
+ parts = 0;
+ cp = buf;
diff --git a/patches/glibc/2.7/260-sh-syscall-error-path.patch b/patches/glibc/2.7/260-sh-syscall-error-path.patch
new file mode 100644
index 0000000..e293bbf
--- /dev/null
+++ b/patches/glibc/2.7/260-sh-syscall-error-path.patch
@@ -0,0 +1,26 @@
+--- glibc-2.7/sysdeps/unix/sysv/linux/sh/sysdep.S.orig 2005-12-30 22:16:43.000000000 +0000
++++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sysdep.S 2008-08-19 22:33:14.000000000 +0100
+@@ -32,3 +32,13 @@
+
+ #define __syscall_error __syscall_error_1
+ #include <sysdeps/unix/sh/sysdep.S>
++
++ .data
++ .align 3
++ .globl ___fpscr_values
++ .type ___fpscr_values, @object
++ .size ___fpscr_values, 8
++___fpscr_values:
++ .long 0
++ .long 0x80000
++weak_alias (___fpscr_values, __fpscr_values)
+--- glibc-2.7/sysdeps/unix/sysv/linux/sh/Versions.orig 2003-09-01 05:05:09.000000000 +0100
++++ glibc-2.7/sysdeps/unix/sysv/linux/sh/Versions 2008-08-19 22:33:14.000000000 +0100
+@@ -2,6 +2,7 @@
+ GLIBC_2.2 {
+ # functions used in other libraries
+ __xstat64; __fxstat64; __lxstat64;
++ __fpscr_values;
+
+ # a*
+ alphasort64;
diff --git a/patches/glibc/2.7/270-sh-fix-procfs.patch b/patches/glibc/2.7/270-sh-fix-procfs.patch
new file mode 100644
index 0000000..f45ab5e
--- /dev/null
+++ b/patches/glibc/2.7/270-sh-fix-procfs.patch
@@ -0,0 +1,11 @@
+--- a/sysdeps/unix/sysv/linux/sh/sys/procfs.h
++++ b/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+@@ -29,7 +29,6 @@
+ #include <sys/types.h>
+ #include <sys/ucontext.h>
+ #include <sys/user.h>
+-#include <asm/elf.h>
+
+ __BEGIN_DECLS
+
+
diff --git a/patches/glibc/2.7/280-sh-fix-kernel-heders-location.patch b/patches/glibc/2.7/280-sh-fix-kernel-heders-location.patch
new file mode 100644
index 0000000..0c5caa5
--- /dev/null
+++ b/patches/glibc/2.7/280-sh-fix-kernel-heders-location.patch
@@ -0,0 +1,23 @@
+diff -durN glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+--- glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h 2008-10-22 21:23:32.000000000 +0200
++++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/procfs.h 2008-10-22 21:41:54.000000000 +0200
+@@ -29,6 +29,7 @@
+ #include <sys/types.h>
+ #include <sys/ucontext.h>
+ #include <sys/user.h>
++#include <asm/ptrace.h>
+
+ __BEGIN_DECLS
+
+diff -durN glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/user.h glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/user.h
+--- glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/user.h 2008-10-22 21:23:32.000000000 +0200
++++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/user.h 2008-10-22 21:33:34.000000000 +0200
+@@ -21,8 +21,6 @@
+
+ #include <features.h>
+
+-#include <asm/user.h>
+-
+ #undef start_thread
+
+ #endif /* sys/user.h */