summaryrefslogtreecommitdiff
path: root/patches/glibc/linuxthreads-2.3.2
diff options
context:
space:
mode:
Diffstat (limited to 'patches/glibc/linuxthreads-2.3.2')
-rw-r--r--patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch136
-rw-r--r--patches/glibc/linuxthreads-2.3.2/alpha_cfi2.patch118
-rw-r--r--patches/glibc/linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch26
-rw-r--r--patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch100
-rw-r--r--patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch30
-rw-r--r--patches/glibc/linuxthreads-2.3.2/sysdep-cancel-arm-1.2-1.6.patch53
6 files changed, 463 insertions, 0 deletions
diff --git a/patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch b/patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch
new file mode 100644
index 0000000..e9532c7
--- /dev/null
+++ b/patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch
@@ -0,0 +1,136 @@
+Retrieved with
+$ wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S.diff?r1=1.5&r2=1.6&cvsroot=glibc'
+$ wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h.diff?r1=1.3&r2=1.4&cvsroot=glibc'
+
+Might fix problem building with binutils-2.14.90.0.8/gcc-3.3.3 that was not
+present with binutils-2.13.90.0.18/gcc-3.3.2:
+
+../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S: Assembler messages:
+../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Warning: .ent
+directive without matching .end
+../linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S:63: Error: can't resolve
+`0' {.text section} - `L0^A' {.text section}
+make[2]: ***
+[/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/build-glibc/posix/vfork.o]
+Error 1
+make[2]: Leaving directory
+`/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/glibc-2.3.2/posix'
+make[1]: *** [posix/subdir_lib] Error 2
+make[1]: Leaving directory
+`/home/dkegel/wk/crosstool-0.26-pre3/build/alpha-unknown-linux-gnu/gcc-3.3-20040112-glibc-2.3.2/glibc-2.3.2'
+make: *** [all] Error 2
+
+See also alpha_cfi2.patch
+
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -r1.5 -r1.6
+--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/02/11 06:27:53 1.5
++++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003/06/06 05:51:03 1.6
+@@ -19,12 +19,13 @@
+
+ #include <sysdep-cancel.h>
+
+- .globl __vfork
+ .align 4
+- .ent __vfork,0
+-__LABEL(__vfork)
++ .globl __vfork
++ .type __vfork, @function
++ .usepv __vfork, std
++ cfi_startproc
++__vfork:
+ ldgp gp, 0(pv)
+- .prologue 1
+ PSEUDO_PROF
+
+ #ifdef SHARED
+@@ -46,18 +47,24 @@
+ fork and vfork object files. */
+ $do_fork:
+ subq sp, 16, sp
++ cfi_adjust_cfa_offset(16)
+ stq ra, 0(sp)
++ cfi_offset(ra, -16)
+ jsr ra, HIDDEN_JUMPTARGET (__fork)
+ ldgp gp, 0(ra)
+ ldq ra, 0(sp)
+ addq sp, 16, sp
++ cfi_restore(ra)
++ cfi_adjust_cfa_offset(-16)
+ ret
+
+ $syscall_error:
+ SYSCALL_ERROR_HANDLER
+ #endif
+
+-PSEUDO_END(__vfork)
++ cfi_endproc
++ .size __vfork, .-__vfork
++
+ libc_hidden_def (__vfork)
+
+ weak_alias (__vfork, vfork)
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/01/12 19:26:41 1.3
++++ libc/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003/06/06 05:51:03 1.4
+@@ -40,10 +40,11 @@
+ # define PSEUDO(name, syscall_name, args) \
+ .globl name; \
+ .align 4; \
+- .ent name, 0; \
++ .type name, @function; \
++ .usepv name, std; \
++ cfi_startproc; \
+ __LABEL(name) \
+ ldgp gp, 0(pv); \
+- .prologue 1; \
+ PSEUDO_PROF; \
+ PSEUDO_PREPARE_ARGS \
+ SINGLE_THREAD_P(t0); \
+@@ -55,7 +56,9 @@
+ .subsection 2; \
+ __LABEL($pseudo_cancel) \
+ subq sp, 64, sp; \
++ cfi_def_cfa_offset(64); \
+ stq ra, 0(sp); \
++ cfi_offset(ra, -64); \
+ SAVE_ARGS_##args; \
+ CENABLE; \
+ LOAD_ARGS_##args; \
+@@ -67,19 +70,27 @@
+ ldq ra, 0(sp); \
+ ldq v0, 8(sp); \
+ addq sp, 64, sp; \
++ cfi_remember_state; \
++ cfi_restore(ra); \
++ cfi_def_cfa_offset(0); \
+ ret; \
++ cfi_restore_state; \
+ __LABEL($multi_error) \
+ CDISABLE; \
+ ldq ra, 0(sp); \
+ ldq v0, 8(sp); \
+ addq sp, 64, sp; \
++ cfi_restore(ra); \
++ cfi_def_cfa_offset(0); \
+ __LABEL($syscall_error) \
+ SYSCALL_ERROR_HANDLER; \
+- END(name); \
+ .previous
+
+ # undef PSEUDO_END
+-# define PSEUDO_END(sym)
++# define PSEUDO_END(sym) \
++ .subsection 2; \
++ cfi_endproc; \
++ .size sym, .-sym
+
+ # define SAVE_ARGS_0 /* Nothing. */
+ # define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)
diff --git a/patches/glibc/linuxthreads-2.3.2/alpha_cfi2.patch b/patches/glibc/linuxthreads-2.3.2/alpha_cfi2.patch
new file mode 100644
index 0000000..45373f8
--- /dev/null
+++ b/patches/glibc/linuxthreads-2.3.2/alpha_cfi2.patch
@@ -0,0 +1,118 @@
+See http://sources.redhat.com/ml/libc-alpha/2004-05/msg00110.html
+
+Both his patches pulled into this file
+
+Should fix
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Assembler messages:
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_startproc'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_def_cfa_offset'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: missing ')'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: syntax error
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_remember_state'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_restore'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_def_cfa_offset'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_restore_state'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_restore'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_def_cfa_offset'
+../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:30: Error: unknown opcode `cfi_endproc'
+make[2]: *** [/usr/src/crosstool/crosstool-0.28-rc14/build/alpha-linux/gcc-3.4.0-glibc-2.3.2/build-glibc/signal/sigsuspend.o] Error 1
+
+when building with binutils-2.15.90.0.3 and gcc-3.4.0
+
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h.orig 2004-05-13 00:33:54.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2004-05-13 00:34:19.000000000 -0400
+@@ -42,7 +42,7 @@
+ .align 4; \
+ .type name, @function; \
+ .usepv name, std; \
+- cfi_startproc; \
++ .cfi_startproc; \
+ __LABEL(name) \
+ ldgp gp, 0(pv); \
+ PSEUDO_PROF; \
+@@ -56,9 +56,9 @@
+ .subsection 2; \
+ __LABEL($pseudo_cancel) \
+ subq sp, 64, sp; \
+- cfi_def_cfa_offset(64); \
++ .cfi_def_cfa_offset(64); \
+ stq ra, 0(sp); \
+- cfi_offset(ra, -64); \
++ .cfi_offset ra, -64; \
+ SAVE_ARGS_##args; \
+ CENABLE; \
+ LOAD_ARGS_##args; \
+@@ -70,18 +70,18 @@
+ ldq ra, 0(sp); \
+ ldq v0, 8(sp); \
+ addq sp, 64, sp; \
+- cfi_remember_state; \
+- cfi_restore(ra); \
+- cfi_def_cfa_offset(0); \
++ .cfi_remember_state; \
++ .cfi_restore(ra); \
++ .cfi_def_cfa_offset(0); \
+ ret; \
+- cfi_restore_state; \
++ .cfi_restore_state; \
+ __LABEL($multi_error) \
+ CDISABLE; \
+ ldq ra, 0(sp); \
+ ldq v0, 8(sp); \
+ addq sp, 64, sp; \
+- cfi_restore(ra); \
+- cfi_def_cfa_offset(0); \
++ .cfi_restore(ra); \
++ .cfi_def_cfa_offset(0); \
+ __LABEL($syscall_error) \
+ SYSCALL_ERROR_HANDLER; \
+ .previous
+@@ -89,7 +89,7 @@
+ # undef PSEUDO_END
+ # define PSEUDO_END(sym) \
+ .subsection 2; \
+- cfi_endproc; \
++ .cfi_endproc; \
+ .size sym, .-sym
+
+ # define SAVE_ARGS_0 /* Nothing. */
+
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S.orig 2004-05-13 01:47:46.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2004-05-13 01:48:17.000000000 -0400
+@@ -23,7 +23,7 @@
+ .globl __vfork
+ .type __vfork, @function
+ .usepv __vfork, std
+- cfi_startproc
++ .cfi_startproc
+ __vfork:
+ ldgp gp, 0(pv)
+ PSEUDO_PROF
+@@ -47,22 +47,22 @@
+ fork and vfork object files. */
+ $do_fork:
+ subq sp, 16, sp
+- cfi_adjust_cfa_offset(16)
++ .cfi_adjust_cfa_offset(16)
+ stq ra, 0(sp)
+- cfi_offset(ra, -16)
++ .cfi_offset ra, -16
+ jsr ra, HIDDEN_JUMPTARGET (__fork)
+ ldgp gp, 0(ra)
+ ldq ra, 0(sp)
+ addq sp, 16, sp
+- cfi_restore(ra)
+- cfi_adjust_cfa_offset(-16)
++ .cfi_restore(ra)
++ .cfi_adjust_cfa_offset(-16)
+ ret
+
+ $syscall_error:
+ SYSCALL_ERROR_HANDLER
+ #endif
+
+- cfi_endproc
++ .cfi_endproc
+ .size __vfork, .-__vfork
+
+ libc_hidden_def (__vfork)
diff --git a/patches/glibc/linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch b/patches/glibc/linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch
new file mode 100644
index 0000000..90ecc88
--- /dev/null
+++ b/patches/glibc/linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch
@@ -0,0 +1,26 @@
+From: "M.H.VanLeeuwen"
+Subject: crosstool, sparc64, linux 2.6.4, gcc 3.3.3, glibc 2.3.2 success
+Date: Mon, 15 Mar 2004 00:23:04 -0600
+To: crossgcc@sources.redhat.com
+Message-ID: <40554BC8.749A5EC3@megsinet.net>
+...
+
+backported from GLIBC CVS
+
+Fix this error:
+
+/cross/crosstool-0.27/build/sparc64-unknown-linux-gnu/gcc-3.3.3-glibc-2.3.2/build-glibc/linuxthreads/libpthread_pic.a(ptw-pause.os)(.text+0x2c): In function `pause':
+: undefined reference to `__sigprocmask'
+collect2: ld returned 1 exit status
+make[2]: *** [/cross/crosstool-0.27/build/sparc64-unknown-linux-gnu/gcc-3.3.3-glibc-2.3.2/build-glibc/linuxthreads/libpthread.so] Error 1
+
+
+--- /cross/sources/glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile Wed Dec 31 18:00:00 1969
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile Sat Mar 13 10:18:43 2004
+@@ -0,0 +1,5 @@
++# glibc makefile fragment for linuxthreads on sparc/sparc64.
++
++ifeq ($(subdir),linuxthreads)
++libpthread-routines += ptw-sigprocmask
++endif
+
diff --git a/patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch b/patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch
new file mode 100644
index 0000000..3c4e3a1
--- /dev/null
+++ b/patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch
@@ -0,0 +1,100 @@
+[ Revised; now also changes CFLAGS-pt-initfini.s as suggested by
+ http://sources.redhat.com/ml/crossgcc/2004-07/msg00169.html
+ to not crash when building a debug glibc on mips ]
+
+Fixes errors like
+
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.o(.text+0x0):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.S:20: multiple definition of `dummy'
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.o(.text+0x0):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.S:42: first defined here
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.o(.text+0x18):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.S:37: multiple definition of `_init'
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.o(.text+0x30):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.S:76: first defined here
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.o(.init+0x1c):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.S:86: multiple definition of `_fini'
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.o(.init+0x10):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.S:48: first defined here
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.o(.init+0x28):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crti.S:58: undefined reference to `i_am_not_a_leaf'
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.o(.init+0x4c):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.S:108: undefined reference to `i_am_not_a_leaf'
+mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.o(.init+0x50):build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/crtn.S:109: undefined reference to `i_am_not_a_leaf'
+collect2: ld returned 1 exit status
+make[2]: *** [build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/linuxthreads/libpthread.so] Error 1
+make[2]: Leaving directory `build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/linuxthreads'
+make[1]: *** [linuxthreads/others] Error 2
+make[1]: Leaving directory `build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2'
+make: *** [all] Error 2
+
+
+CVSROOT: /cvs/glibc
+Module name: libc
+Changes by: aj@sourceware.org 2003-12-02 07:37:29
+
+Modified files:
+ . : configure.in configure config.make.in
+ csu : Makefile
+ locale : Makefile
+ linuxthreads : Makefile
+ linuxthreads/sysdeps/unix/sysv/linux/x86_64: Makefile
+ nptl : Makefile
+ nptl/sysdeps/unix/sysv/linux/x86_64: Makefile
+
+Log message:
+ * config.make.in (fno-unit-at-a-time): Define.
+
+ * configure.in: Add test for -fno-unit-at-a-time.
+ Fix text for -fpie.
+
+ * csu/Makefile (CFLAGS-initfini.s): Add $(fno_unit_at_a_time).
+ * locale/Makefile (CFLAGS-loadlocale.c): Likewise.
+
+ For linuxthreads:
+ * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
+ * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
+ Likewise.
+
+ For nptl:
+ * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
+ * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
+ Likewise.
+
+linuxthreads change retrieved with
+wget -O foo.patch 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/Makefile.diff?r1=1.83&r2=1.84&cvsroot=glibc' \
+'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile.diff?r1=1.5&r2=1.6&cvsroot=glibc'
+
+and then rediffed against glibc-2.3.2
+And then extended to mips...
+
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/Makefile,v
+retrieving revision 1.83
+retrieving revision 1.84
+diff -u -r1.83 -r1.84
+--- libc/linuxthreads/Makefile 2003/10/02 18:48:48 1.83
++++ libc/linuxthreads/Makefile 2003/12/02 07:37:28 1.84
+@@ -101,7 +101,7 @@
+ extra-objs += $(crti-objs) $(crtn-objs)
+ omit-deps += crti crtn
+
+-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+ endif
+
+ librt-tests = ex10 ex11
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -r1.5 -r1.6
+--- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003/04/11 23:34:02 1.5
++++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003/12/02 07:37:28 1.6
+@@ -1,3 +1,4 @@
+ ifeq ($(subdir),linuxthreads)
+-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions -fno-asynchronous-unwind-tables
++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions \
++ -fno-asynchronous-unwind-tables $(fno-unit-at-a-time)
+ endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/Makefile.old 2004-05-30 18:24:41.000000000 -0700
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/Makefile 2004-05-30 18:28:03.000000000 -0700
+@@ -1,2 +1,6 @@
+ # pull in __syscall_error routine
+ libpthread-routines += sysdep
++
++ifeq ($(subdir),linuxthreads)
++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
++endif
diff --git a/patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch b/patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch
new file mode 100644
index 0000000..a382a0a
--- /dev/null
+++ b/patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch
@@ -0,0 +1,30 @@
+Goes with ../glibc-2.3.2/glibc-2.3.2-cygwin.patch
+
+If you apply the above patch, but forget this one, you get a cryptic error
+ .../bin/../x86_64-unknown-linux-gnu/sys-root/usr/lib64/: file not recognized: Is a directory
+when linking with -lpthread, because the generated libpthread.so
+is missing a filename
+
+by dank@kegel.com, 2004 Mar 30
+
+
+--- glibc-linuxthreads-2.3.2/linuxthreads/Makefile.old Tue Mar 30 10:33:12 2004
++++ glibc-linuxthreads-2.3.2/linuxthreads/Makefile Tue Mar 30 10:33:24 2004
+@@ -114,7 +114,7 @@
+ install: $(inst_libdir)/libpthread.so
+ $(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \
+ $(objpfx)libpthread.so$(libpthread.so-version) \
+- $(inst_libdir)/$(patsubst %,$(libtype.oS),\
++ $(inst_libdir)/$(patsubst %,$(libtype.oST),\
+ $(libprefix)pthread) \
+ $(+force)
+ (echo '/* GNU ld script';\
+@@ -122,7 +122,7 @@
+ echo ' the static library, so try that secondarily. */';\
+ cat $<; \
+ echo 'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \
+- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\
++ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)pthread)'\
+ ')' \
+ ) > $@.new
+ mv -f $@.new $@
diff --git a/patches/glibc/linuxthreads-2.3.2/sysdep-cancel-arm-1.2-1.6.patch b/patches/glibc/linuxthreads-2.3.2/sysdep-cancel-arm-1.2-1.6.patch
new file mode 100644
index 0000000..09ae007
--- /dev/null
+++ b/patches/glibc/linuxthreads-2.3.2/sysdep-cancel-arm-1.2-1.6.patch
@@ -0,0 +1,53 @@
+I haven't built glibc-2.3.2 for arm myself, but
+http://sources.redhat.com/ml/bug-glibc/2003-05/msg00076.html and
+http://www.linux.org.uk/pipermail/linux-arm/2003-November/006560.html
+give me the distinct impression that you need the latest sysdep-cancel.h from
+cvs.
+
+Retrieved with
+
+http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h.diff?cvsroot=glibc&r1=text&tr1=1.2&r2=text&tr2=1.6&f=u
+
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h,v
+retrieving revision 1.2
+retrieving revision 1.6
+diff -u -r1.2 -r1.6
+--- libc/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003/01/12 09:14:25 1.2
++++ libc/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003/06/06 17:31:40 1.6
+@@ -24,6 +24,17 @@
+
+ #if !defined NOT_IN_libc || defined IS_IN_libpthread
+
++/* We push lr onto the stack, so we have to use ldmib instead of ldmia
++ to find the saved arguments. */
++# ifdef PIC
++# undef DOARGS_5
++# undef DOARGS_6
++# undef DOARGS_7
++# define DOARGS_5 str r4, [sp, $-4]!; ldr r4, [sp, $8];
++# define DOARGS_6 mov ip, sp; stmfd sp!, {r4, r5}; ldmib ip, {r4, r5};
++# define DOARGS_7 mov ip, sp; stmfd sp!, {r4, r5, r6}; ldmib ip, {r4, r5, r6};
++# endif
++
+ # undef PSEUDO_RET
+ # define PSEUDO_RET \
+ ldrcc pc, [sp], $4; \
+@@ -34,7 +45,7 @@
+ # define PSEUDO(name, syscall_name, args) \
+ .section ".text"; \
+ PSEUDO_PROLOGUE; \
+- ENTRY (name) \
++ ENTRY (name); \
+ SINGLE_THREAD_P_INT; \
+ bne .Lpseudo_cancel; \
+ DO_CALL (syscall_name, args); \
+@@ -110,7 +121,7 @@
+ ldr reg, 2b; \
+ 3: \
+ add ip, pc, ip; \
+- ldr ip, [ip, lr]; \
++ ldr ip, [ip, reg]; \
+ teq ip, #0;
+ # define SINGLE_THREAD_P_INT \
+ str lr, [sp, $-4]!; \