diff options
Diffstat (limited to 'patches/glibc/2.3.4')
18 files changed, 1587 insertions, 0 deletions
diff --git a/patches/glibc/2.3.4/arm-ctl_bus_isa.patch b/patches/glibc/2.3.4/arm-ctl_bus_isa.patch new file mode 100644 index 0000000..3422070 --- /dev/null +++ b/patches/glibc/2.3.4/arm-ctl_bus_isa.patch @@ -0,0 +1,51 @@ +Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. +Needed to build glibc with linux kernels 2.4.23 or higher on ARM, +Fixes following error: + +../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': +../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) +../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once +../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) +../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant +../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') +../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant +../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') +make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 + +cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html + +--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 +@@ -47,6 +47,12 @@ + #include <asm/page.h> + #include <sys/sysctl.h> + ++/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ ++#include <linux/version.h> ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) ++#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ ++#endif ++ + #define PATH_ARM_SYSTYPE "/etc/arm_systype" + #define PATH_CPUINFO "/proc/cpuinfo" + +@@ -80,7 +86,7 @@ + * Initialize I/O system. There are several ways to get the information + * we need. Each is tried in turn until one succeeds. + * +- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method ++ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method + * but not all kernels support it. + * + * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. +@@ -100,8 +106,8 @@ + { + char systype[256]; + int i, n; +- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; +- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; ++ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; ++ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; + size_t len = sizeof(io.base); + + if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff --git a/patches/glibc/2.3.4/bad/glibc-2.3.4-cygwin.patch b/patches/glibc/2.3.4/bad/glibc-2.3.4-cygwin.patch new file mode 100644 index 0000000..23ebc82 --- /dev/null +++ b/patches/glibc/2.3.4/bad/glibc-2.3.4-cygwin.patch @@ -0,0 +1,96 @@ +Fixes +elf/librtld.os: In function `process_envvars': : undefined reference to `__access' +... +when building glibc-2.3.3 on cygwin + +Idea from +http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch +Basically, make glibc use .oST as suffix for 'object static' +instead of .oS, since cygwin has trouble distinguishing .os from .oS +(Original patch had .on, but .oST is more mnemonic for 'object static') + +glibc-linuxthreads-2.3.3 also requires a patch, see +../glibc-linuxthreads-2.3.3/glibc-linuxthreads-2.3.3-cygwin.patch + +[ Rediffed against glibc-2.3.3 ] + + +diff -urN glibc-2.3.4-orig/Makeconfig glibc-2.3.4/Makeconfig +--- glibc-2.3.4-orig/Makeconfig 2004-12-15 19:51:47.000000000 +0100 ++++ glibc-2.3.4/Makeconfig 2005-03-13 18:54:58.000000000 +0100 +@@ -449,7 +449,7 @@ + # run the linked programs. + link-libc = -Wl,-rpath-link=$(rpath-link) \ + $(common-objpfx)libc.so$(libc.so-version) \ +- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) ++ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) + # This is how to find at build-time things that will be installed there. + rpath-dirs = math elf dlfcn nss nis rt resolv crypt + endif +@@ -667,7 +667,7 @@ + # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) + # to pass different flags for each flavor. + libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) +-all-object-suffixes := .o .os .op .og .ob .oS ++all-object-suffixes := .o .os .op .og .ob .oST + object-suffixes := + CPPFLAGS-.o = $(pic-default) + CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) +@@ -723,14 +723,14 @@ + + ifeq (yes,$(build-shared)) + # Build special library that contains the static-only routines for libc. +-object-suffixes-for-libc += .oS ++object-suffixes-for-libc += .oST + + # Must build the routines as PIC, though, because they can end up in (users') + # shared objects. We don't want to use CFLAGS-os because users may, for + # example, make that processor-specific. +-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) +-CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 +-libtype.oS = lib%_nonshared.a ++CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) ++CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 ++libtype.oST = lib%_nonshared.a + endif + + # The assembler can generate debug information too. +diff -urN glibc-2.3.4-orig/Makerules glibc-2.3.4/Makerules +--- glibc-2.3.4-orig/Makerules 2004-12-15 19:52:39.000000000 +0100 ++++ glibc-2.3.4/Makerules 2005-03-13 18:50:09.000000000 +0100 +@@ -416,7 +416,7 @@ + # Bounded pointer thunks are only built for *.ob + elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) + +-elide-routines.oS += $(filter-out $(static-only-routines),\ ++elide-routines.oST += $(filter-out $(static-only-routines),\ + $(routines) $(aux) $(sysdep_routines)) \ + $(elide-bp-thunks) + elide-routines.os += $(static-only-routines) $(elide-bp-thunks) +@@ -961,7 +961,7 @@ + install: $(inst_libdir)/libc.so + $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ + $(common-objpfx)libc.so$(libc.so-version) \ +- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ ++ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ + $(libprefix)$(libc-name)) \ + $(+force) + (echo '/* GNU ld script';\ +@@ -969,7 +969,7 @@ + echo ' the static library, so try that secondarily. */';\ + cat $<; \ + echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ +- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ ++ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ + ')' \ + ) > $@.new + mv -f $@.new $@ +diff -urN glibc-2.3.4-orig/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.4/sysdeps/sparc/sparc32/sparcv9/Makefile +--- glibc-2.3.4-orig/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200 ++++ glibc-2.3.4/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-03-13 18:50:09.000000000 +0100 +@@ -10,4 +10,4 @@ + ASFLAGS-.op += -Wa,-Av9a + ASFLAGS-.og += -Wa,-Av9a + ASFLAGS-.ob += -Wa,-Av9a +-ASFLAGS-.oS += -Wa,-Av9a ++ASFLAGS-.oST += -Wa,-Av9a diff --git a/patches/glibc/2.3.4/fix-pr398.patch b/patches/glibc/2.3.4/fix-pr398.patch new file mode 100644 index 0000000..d5d0309 --- /dev/null +++ b/patches/glibc/2.3.4/fix-pr398.patch @@ -0,0 +1,70 @@ +Fixes error + +dl-runtime.c:222: error: parse error before "CFI_STARTPROC" +make[2]: *** [crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/elf/dl-runtim +e.o] Error 1 +make[2]: Leaving directory `crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040 +822/elf' +make[1]: *** [elf/subdir_lib] Error 2 +make[1]: Leaving directory `crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040 +822' +make: *** [all] Error 2 + +----------------- + +See http://sources.redhat.com/bugzilla/show_bug.cgi?id=398 +http://sources.redhat.com/ml/libc-alpha/2004-07/msg00023.html + +----------------- + +CVSROOT: /cvs/glibc +Module name: libc +Branch: glibc-2_3-branch +Changes by: roland@sources.redhat.com 2006-02-23 22:36:51 + +Modified files: + sysdeps/s390/s390-64: dl-machine.h + sysdeps/s390/s390-32: dl-machine.h + +Log message: + 2004-07-10 GOTO Masanori <gotom@debian.or.jp> + + [BZ #398] + * sysdeps/s390/s390-32/dl-machine.h: Include <sysdep.h> for CFI + directive. + * sysdeps/s390/s390-64/dl-machine.h: Likewise. + +Patches: +http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/s390/s390-64/dl-machine.h.diff?cvsroot=glibc&only_with_tag=glibc-2_3-branch&r1=1.19.4.1&r2=1.19.4.2 +http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/s390/s390-32/dl-machine.h.diff?cvsroot=glibc&only_with_tag=glibc-2_3-branch&r1=1.20.4.1&r2=1.20.4.2 + +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/s390/s390-64/dl-machine.h,v +retrieving revision 1.19.4.1 +retrieving revision 1.19.4.2 +diff -u -r1.19.4.1 -r1.19.4.2 +--- libc/sysdeps/s390/s390-64/dl-machine.h 2005/10/17 04:57:27 1.19.4.1 ++++ libc/sysdeps/s390/s390-64/dl-machine.h 2006/02/23 22:36:51 1.19.4.2 +@@ -27,6 +27,7 @@ + #include <sys/param.h> + #include <string.h> + #include <link.h> ++#include <sysdep.h> + + /* This is an older, now obsolete value. */ + #define EM_S390_OLD 0xA390 +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/s390/s390-32/dl-machine.h,v +retrieving revision 1.20.4.1 +retrieving revision 1.20.4.2 +diff -u -r1.20.4.1 -r1.20.4.2 +--- libc/sysdeps/s390/s390-32/dl-machine.h 2005/10/17 04:57:27 1.20.4.1 ++++ libc/sysdeps/s390/s390-32/dl-machine.h 2006/02/23 22:36:51 1.20.4.2 +@@ -27,6 +27,7 @@ + #include <sys/param.h> + #include <string.h> + #include <link.h> ++#include <sysdep.h> + + /* This is an older, now obsolete value. */ + #define EM_S390_OLD 0xA390 diff --git a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-arm.patch b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-arm.patch new file mode 100644 index 0000000..f3ad0c6 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-arm.patch @@ -0,0 +1,117 @@ +Fixes +In file included from dynamic-link.h:22, + from dl-reloc.c:265: +../sysdeps/arm/dl-machine.h: In function '_dl_relocate_object': +../sysdeps/arm/dl-machine.h:371: error: invalid storage class for function 'fix_bad_pc24' +../sysdeps/arm/dl-machine.h:406: error: invalid storage class for function 'elf_machine_rel' +../sysdeps/arm/dl-machine.h:532: error: invalid storage class for function 'elf_machine_rela' +../sysdeps/arm/dl-machine.h:612: error: invalid storage class for function 'elf_machine_rel_relative' +../sysdeps/arm/dl-machine.h:621: error: invalid storage class for function 'elf_machine_rela_relative' +../sysdeps/arm/dl-machine.h:630: error: invalid storage class for function 'elf_machine_lazy_rel' +make[2]: Leaving directory `/home/dank/queue/jobdir.k8/crosstool-dev/build/arm-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/glibc-2.3.3/elf' + +when building glibc-2.3.[34] with gcc-4.0 + +Like +http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.51&r2=1.52&cvsroot=glibc +but works with older compilers, and fixes fix_bad_pc24. + + +--- glibc-2.3.4/sysdeps/arm/dl-machine.h.old Sun Mar 20 17:54:37 2005 ++++ glibc-2.3.4/sysdeps/arm/dl-machine.h Sun Mar 20 17:57:32 2005 +@@ -359,7 +359,14 @@ + # endif + + /* Deal with an out-of-range PC24 reloc. */ +-static Elf32_Addr ++#if __GNUC__ >= 4 ++ auto inline Elf32_Addr ++#else ++ static inline Elf32_Addr ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value) + { + static void *fix_page; +@@ -392,7 +399,14 @@ + /* Perform the relocation specified by RELOC and SYM (which is fully resolved). + MAP is the object containing the reloc. */ + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, + const Elf32_Sym *sym, const struct r_found_version *version, + void *const reloc_addr_arg) +@@ -517,7 +531,14 @@ + } + + # ifndef RTLD_BOOTSTRAP +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, + const Elf32_Sym *sym, const struct r_found_version *version, + void *const reloc_addr_arg) +@@ -597,7 +618,14 @@ + } + # endif + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, + void *const reloc_addr_arg) + { +@@ -606,7 +634,14 @@ + } + + # ifndef RTLD_BOOTSTRAP +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + void *const reloc_addr_arg) + { +@@ -615,7 +650,14 @@ + } + # endif + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_lazy_rel (struct link_map *map, + Elf32_Addr l_addr, const Elf32_Rel *reloc) + { diff --git a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-elf.patch b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-elf.patch new file mode 100644 index 0000000..3bbe6ea --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-elf.patch @@ -0,0 +1,61 @@ +From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html +Fixes + rtld.c: In function '_dl_start': + dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined + dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined +when compiling glibc-2.3.4 with gcc-4.0 + +But see also +http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html +and +http://sources.redhat.com/ml/libc-hacker/2005-03/msg00008.html +which seem to propose less radical fixes? + +Aha. See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=721 + +--- glibc-2.3-20050307/elf/dynamic-link.h.old 2005-03-12 18:12:37.000000000 -0800 ++++ glibc-2.3-20050307/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800 +@@ -19,43 +19,6 @@ + + #include <elf.h> + #include <assert.h> +- +-#ifdef RESOLVE +-/* We pass reloc_addr as a pointer to void, as opposed to a pointer to +- ElfW(Addr), because not all architectures can assume that the +- relocated address is properly aligned, whereas the compiler is +- entitled to assume that a pointer to a type is properly aligned for +- the type. Even if we cast the pointer back to some other type with +- less strict alignment requirements, the compiler might still +- remember that the pointer was originally more aligned, thereby +- optimizing away alignment tests or using word instructions for +- copying memory, breaking the very code written to handle the +- unaligned cases. */ +-auto void __attribute__((always_inline)) +-elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, +- const ElfW(Sym) *sym, const struct r_found_version *version, +- void *const reloc_addr); +-auto void __attribute__((always_inline)) +-elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, +- const ElfW(Sym) *sym, const struct r_found_version *version, +- void *const reloc_addr); +-auto void __attribute__((always_inline)) +-elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, +- void *const reloc_addr); +-auto void __attribute__((always_inline)) +-elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, +- void *const reloc_addr); +-# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL +-auto void __attribute__((always_inline)) +-elf_machine_lazy_rel (struct link_map *map, +- ElfW(Addr) l_addr, const ElfW(Rel) *reloc); +-# else +-auto void __attribute__((always_inline)) +-elf_machine_lazy_rel (struct link_map *map, +- ElfW(Addr) l_addr, const ElfW(Rela) *reloc); +-# endif +-#endif +- + #include <dl-machine.h> + + #ifndef VERSYMIDX diff --git a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch new file mode 100644 index 0000000..42be8a3 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch @@ -0,0 +1,44 @@ +See http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html +and http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html + +Fixes + In file included from jis0208.c:23: + jis0208.h:32: error: array type has incomplete element type +when building glibc with gcc-4.0 +The bug has been present since at least glibc-2.2.5. +This patch applies cleanly to glibc-2.3.4 + +--- /home/dank/downloads/glibc-2.3-20050307/iconvdata/jis0208.h 2003-06-11 14:40:42.000000000 -0700 ++++ glibc-2.3-20050307/iconvdata/jis0208.h 2005-03-13 20:55:01.784054760 -0800 +@@ -24,15 +24,6 @@ + #include <gconv.h> + #include <stdint.h> + +-/* Conversion table. */ +-extern const uint16_t __jis0208_to_ucs[]; +- +-extern const char __jisx0208_from_ucs4_lat1[256][2]; +-extern const char __jisx0208_from_ucs4_greek[0xc1][2]; +-extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; +-extern const char __jisx0208_from_ucs_tab[][2]; +- +- + /* Struct for table with indeces in UCS mapping table. */ + struct jisx0208_ucs_idx + { +@@ -42,6 +33,15 @@ + }; + + ++/* Conversion table. */ ++extern const uint16_t __jis0208_to_ucs[]; ++ ++extern const char __jisx0208_from_ucs4_lat1[256][2]; ++extern const char __jisx0208_from_ucs4_greek[0xc1][2]; ++extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; ++extern const char __jisx0208_from_ucs_tab[][2]; ++ ++ + static inline uint32_t + __attribute ((always_inline)) + jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) diff --git a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch new file mode 100644 index 0000000..d5d8293 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch @@ -0,0 +1,62 @@ +First discussed here: +http://gcc.gnu.org/ml/gcc/2005-01/msg00509.html + +Revision 1.12, Wed Mar 2 20:11:38 2005 UTC by roland +Branch: MAIN +CVS Tags: fedora-glibc-20050303T1335, HEAD +Changes since 1.11: +3 -8 lines +Diff to previous 1.11 (colored) + +2005-02-21 Alan Modra <amodra@bigpond.net.au> + + * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't + use __uint128_t. + +http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h?cvsroot=glibc +http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h.diff?r1=1.11&r2=1.12&cvsroot=glibc + +Fixes + +In file included from ../linuxthreads_db/proc_service.h:20, + from ../linuxthreads_db/thread_dbP.h:7, + from ../linuxthreads/descr.h:44, + from ../linuxthreads/internals.h:30, + from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, + from ../sysdeps/generic/ldsodefs.h:38, + from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, + from <stdin>:2: +../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: error: syntax error before 'elf_vrreg_t' +../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' +../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: data definition has no type or storage class +../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: syntax error before 'elf_vrregset_t' +../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' +../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: data definition has no type or storage class +make[2]: make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/csu' + + +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h,v +retrieving revision 1.11 +retrieving revision 1.12 +diff -u -r1.11 -r1.12 +--- libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2003/12/17 23:09:34 1.11 ++++ libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2005/03/02 20:11:38 1.12 +@@ -46,15 +46,10 @@ + typedef double elf_fpreg_t; + typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +-/* gcc 3.1 and newer support __uint128_t. */ +-#if !__GNUC_PREREQ(3,1) +-typedef struct { +- unsigned long u[4]; +-} __attribute((aligned(16))) __uint128_t; +-#endif +- + /* Altivec registers */ +-typedef __uint128_t elf_vrreg_t; ++typedef struct { ++ unsigned int u[4]; ++} __attribute__ ((aligned (16))) elf_vrreg_t; + typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; + #endif + diff --git a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch new file mode 100644 index 0000000..949a203 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch @@ -0,0 +1,42 @@ +Fixes + +../sysdeps/powerpc/powerpc32/dl-machine.h: In function '_dl_relocate_object': +../sysdeps/powerpc/powerpc32/dl-machine.h:461: error: invalid storage class for function 'elf_machine_rela_relative' +../sysdeps/powerpc/powerpc32/dl-machine.h:469: error: invalid storage class for function 'elf_machine_lazy_rel' +make[2]: *** [/home/dank/queue/jobdir.dual2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/build-glibc/elf/dl-reloc.o] Error 1 + +diff -ur glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h +--- glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h Wed Jul 30 23:33:52 2003 ++++ glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h Thu Mar 17 13:19:16 2005 +@@ -455,7 +455,14 @@ + } + } + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + void *const reloc_addr_arg) + { +@@ -463,7 +470,14 @@ + *reloc_addr = l_addr + reloc->r_addend; + } + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_lazy_rel (struct link_map *map, + Elf32_Addr l_addr, const Elf32_Rela *reloc) + { diff --git a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch new file mode 100644 index 0000000..6844a9c --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch @@ -0,0 +1,60 @@ +Fixes: + +In file included from dynamic-link.h:22, + from dl-reloc.c:269: +../sysdeps/powerpc/powerpc64/dl-machine.h: In function '_dl_relocate_object': +../sysdeps/powerpc/powerpc64/dl-machine.h:573: error: invalid storage class for function 'elf_machine_rela_relative' +../sysdeps/powerpc/powerpc64/dl-machine.h:607: error: invalid storage class for function 'elf_machine_rela' +../sysdeps/powerpc/powerpc64/dl-machine.h:889: error: invalid storage class for function 'elf_machine_lazy_rel' +make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/elf' + +--- glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h.old Thu Mar 17 13:35:23 2005 ++++ glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h Thu Mar 17 13:37:12 2005 +@@ -567,7 +567,14 @@ + const Elf64_Sym *refsym) + attribute_hidden; + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, + void *const reloc_addr_arg) + { +@@ -598,7 +605,14 @@ + + /* Perform the relocation specified by RELOC and SYM (which is fully + resolved). MAP is the object containing the reloc. */ +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_rela (struct link_map *map, + const Elf64_Rela *reloc, + const Elf64_Sym *sym, +@@ -883,7 +897,14 @@ + MODIFIED_CODE_NOQUEUE (reloc_addr); + } + +-static inline void ++#if __GNUC__ >= 4 ++ auto inline void ++#else ++ static inline void ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + elf_machine_lazy_rel (struct link_map *map, + Elf64_Addr l_addr, const Elf64_Rela *reloc) + { diff --git a/patches/glibc/2.3.4/glibc-2.3.4-cygwin.patch b/patches/glibc/2.3.4/glibc-2.3.4-cygwin.patch new file mode 100644 index 0000000..ac72f53 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-cygwin.patch @@ -0,0 +1,166 @@ +Fixes +elf/librtld.os: In function `process_envvars': : undefined reference to `__access' +... +when building glibc-2.3.4 on cygwin + +Idea from +http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch +Basically, make glibc use .oST as suffix for 'object static' +instead of .oS, since cygwin has trouble distinguishing .os from .oS +(Original patch had .on, but .oST is more mnemonic for 'object static') + +glibc-linuxthreads-2.3.4 also requires a patch, see +../glibc-linuxthreads-2.3.4/glibc-linuxthreads-2.3.4-cygwin.patch + +[ Ported to glibc-2.3.4 by steve@digidescorp.com ] + +--- glibc-2.3.4/Makeconfig.orig 2004-12-15 12:51:47.000000000 -0600 ++++ glibc-2.3.4/Makeconfig 2005-06-29 00:31:27.000000000 -0500 +@@ -449,7 +449,7 @@ + # run the linked programs. + link-libc = -Wl,-rpath-link=$(rpath-link) \ + $(common-objpfx)libc.so$(libc.so-version) \ +- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) ++ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) + # This is how to find at build-time things that will be installed there. + rpath-dirs = math elf dlfcn nss nis rt resolv crypt + endif +@@ -667,7 +667,7 @@ + # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) + # to pass different flags for each flavor. + libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) +-all-object-suffixes := .o .os .op .og .ob .oS ++all-object-suffixes := .o .os .op .og .ob .oST + object-suffixes := + CPPFLAGS-.o = $(pic-default) + CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) +@@ -723,14 +723,14 @@ + + ifeq (yes,$(build-shared)) + # Build special library that contains the static-only routines for libc. +-object-suffixes-for-libc += .oS ++object-suffixes-for-libc += .oST + + # Must build the routines as PIC, though, because they can end up in (users') + # shared objects. We don't want to use CFLAGS-os because users may, for + # example, make that processor-specific. +-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) +-CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 +-libtype.oS = lib%_nonshared.a ++CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) ++CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 ++libtype.oST = lib%_nonshared.a + endif + + # The assembler can generate debug information too. +--- glibc-2.3.4/Makerules.orig 2005-06-28 20:57:52.562500000 -0500 ++++ glibc-2.3.4/Makerules 2005-06-29 00:27:21.328125000 -0500 +@@ -416,7 +416,7 @@ + # Bounded pointer thunks are only built for *.ob + elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) + +-elide-routines.oS += $(filter-out $(static-only-routines),\ ++elide-routines.oST += $(filter-out $(static-only-routines),\ + $(routines) $(aux) $(sysdep_routines)) \ + $(elide-bp-thunks) + elide-routines.os += $(static-only-routines) $(elide-bp-thunks) +@@ -968,7 +968,7 @@ + install: $(inst_libdir)/libc.so + $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ + $(common-objpfx)libc.so$(libc.so-version) \ +- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ ++ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ + $(libprefix)$(libc-name)) \ + $(+force) + (echo '/* GNU ld script';\ +@@ -976,7 +976,7 @@ + echo ' the static library, so try that secondarily. */';\ + cat $<; \ + echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ +- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ ++ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ + ')' \ + ) > $@.new + mv -f $@.new $@ +diff -aur glibc-2.3.5/extra-lib.mk glibc-2.3.5-cygwin/extra-lib.mk +--- glibc-2.3.5/extra-lib.mk 2004-12-02 23:54:47.000000000 +0100 ++++ glibc-2.3.5-cygwin/extra-lib.mk 2005-05-11 08:27:28.156250000 +0200 +@@ -13,7 +13,7 @@ + + ifneq (,$($(lib)-static-only-routines)) + ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version))) +-object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS) ++object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oST) + endif + endif + +@@ -29,7 +29,7 @@ + + # Add each flavor of library to the lists of things to build and install. + install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o))) +-extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\ ++extra-objs += $(foreach o,$(filter-out .os .oST,$(object-suffixes-$(lib))),\ + $(patsubst %,%$o,$(filter-out \ + $($(lib)-shared-only-routines),\ + $(all-$(lib)-routines)))) +@@ -57,7 +57,7 @@ + + + # Use o-iterator.mk to generate a rule for each flavor of library. +-ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib)))) ++ifneq (,$(filter-out .os .oST,$(object-suffixes-$(lib)))) + define o-iterator-doit + $(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \ + $(patsubst %,$(objpfx)%$o,\ +@@ -65,7 +65,7 @@ + $(all-$(lib)-routines))); \ + $$(build-extra-lib) + endef +-object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib))) ++object-suffixes-left = $(filter-out .os .oST,$(object-suffixes-$(lib))) + include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left)) + endif + +@@ -77,9 +77,9 @@ + $(build-extra-lib) + endif + +-ifneq (,$(filter .oS,$(object-suffixes-$(lib)))) +-$(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \ +- $(patsubst %,$(objpfx)%.oS,\ ++ifneq (,$(filter .oST,$(object-suffixes-$(lib)))) ++$(objpfx)$(patsubst %,$(libtype.oST),$(lib:lib%=%)): \ ++ $(patsubst %,$(objpfx)%.oST,\ + $(filter $($(lib)-static-only-routines),\ + $(all-$(lib)-routines))) + $(build-extra-lib) +diff -aur glibc-2.3.5/nptl/Makefile glibc-2.3.5-cygwin/nptl/Makefile +--- glibc-2.3.5/nptl/Makefile 2005-02-16 09:45:56.000000000 +0100 ++++ glibc-2.3.5-cygwin/nptl/Makefile 2005-05-11 08:26:01.812500000 +0200 +@@ -360,7 +360,7 @@ + + $(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';\ +@@ -368,7 +368,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 -aur glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile +--- glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200 ++++ glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-05-11 08:26:25.937500000 +0200 +@@ -10,4 +10,4 @@ + ASFLAGS-.op += -Wa,-Av9a + ASFLAGS-.og += -Wa,-Av9a + ASFLAGS-.ob += -Wa,-Av9a +-ASFLAGS-.oS += -Wa,-Av9a ++ASFLAGS-.oST += -Wa,-Av9a diff --git a/patches/glibc/2.3.4/glibc-2.3.4-memcmp.patch b/patches/glibc/2.3.4/glibc-2.3.4-memcmp.patch new file mode 100644 index 0000000..c01faf8 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.4-memcmp.patch @@ -0,0 +1,46 @@ +Fixes + ../sysdeps/i386/i686/memcmp.S: Assembler messages: + ../sysdeps/i386/i686/memcmp.S:390: Error: can't resolve `.rodata' {.rodata section} - `memcmp' {.text section} +when building on macosx. + +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/i686/memcmp.S?cvsroot=glibc +Revision 1.4, Thu Apr 28 18:19:25 2005 UTC by drepper +Branch: MAIN +CVS Tags: fedora-glibc-20050503T0852 +Changes since 1.3: +2 -2 lines +Diff to previous 1.3 (colored) + +Move misplaced END. + +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/i686/memcmp.S.diff?r1=1.3&r2=1.4&cvsroot=glibc + +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/i386/i686/memcmp.S,v +retrieving revision 1.3 +retrieving revision 1.4 +diff -u -r1.3 -r1.4 +--- libc/sysdeps/i386/i686/memcmp.S 2004/04/01 23:28:37 1.3 ++++ libc/sysdeps/i386/i686/memcmp.S 2005/04/28 18:19:25 1.4 +@@ -1,5 +1,5 @@ + /* Compare two memory blocks for differences in the first COUNT bytes. +- Copyright (C) 2004 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -350,6 +350,7 @@ + sbbl $-1, %eax + popl %esi + RETURN ++END (BP_SYM (memcmp)) + + .section .rodata + ALIGN (2) +@@ -387,7 +388,6 @@ + .long L(30bytes) - . + 0x78 + .long L(31bytes) - . + 0x7c + +-END (BP_SYM (memcmp)) + + #undef bcmp + weak_alias (BP_SYM (memcmp), BP_SYM (bcmp)) diff --git a/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-string.patch b/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-string.patch new file mode 100644 index 0000000..7e2fdc8 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-string.patch @@ -0,0 +1,83 @@ + +Fixes? the following error when building with gcc-4.0.0: + +../string/strcoll.c:39: error: '__EI_strcoll' aliased to undefined symbol '__GI_strcoll' +make[2]: *** [/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcscoll.os] Error 1 +make[2]: Leaving directory `/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4/wcsmbs' + + +Thu Mar 17 21:06:24 2005 UTC (3 weeks, 5 days ago) by roland +Branch: MAIN +CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD + +2005-03-16 Richard Henderson <rth@redhat.com> + + * include/wchar.h (__wcscoll): Remove. + * wcsmbs/wcscoll.c: Define wcscoll directly instead of via __wcscoll. + * string/strcoll.c: Don't issue libc_hidden_def STRCOLL redefined. + +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/string/strcoll.c.diff?r1=1.33&r2=1.34&cvsroot=glibc +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/wchar.h.diff?r1=1.26&r2=1.27&cvsroot=glibc +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/wcsmbs/wcscoll.c.diff?r1=1.13&r2=1.14&cvsroot=glibc + +=================================================================== +RCS file: /cvs/glibc/libc/string/strcoll.c,v +retrieving revision 1.33 +retrieving revision 1.34 +diff -u -r1.33 -r1.34 +--- libc/string/strcoll.c 2004/03/14 20:51:30 1.33 ++++ libc/string/strcoll.c 2005/03/17 21:06:24 1.34 +@@ -23,6 +23,7 @@ + # define STRING_TYPE char + # define STRCOLL strcoll + # define STRCOLL_L __strcoll_l ++# define USE_HIDDEN_DEF + #endif + + #include "../locale/localeinfo.h" +@@ -35,6 +36,7 @@ + { + return STRCOLL_L (s1, s2, _NL_CURRENT_LOCALE); + } +-#if !defined WIDE_CHAR_VERSION +-libc_hidden_def (strcoll) ++ ++#ifdef USE_HIDDEN_DEF ++libc_hidden_def (STRCOLL) + #endif +=================================================================== +RCS file: /cvs/glibc/libc/include/wchar.h,v +retrieving revision 1.26 +retrieving revision 1.27 +diff -u -r1.26 -r1.27 +--- libc/include/wchar.h 2004/03/14 20:45:10 1.26 ++++ libc/include/wchar.h 2005/03/17 21:06:24 1.27 +@@ -56,7 +56,6 @@ + extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, + size_t __n) + __attribute_pure__; +-extern int __wcscoll (__const wchar_t *__s1, __const wchar_t *__s2); + extern size_t __wcslen (__const wchar_t *__s) __attribute_pure__; + extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen) + __attribute_pure__; +=================================================================== +RCS file: /cvs/glibc/libc/wcsmbs/wcscoll.c,v +retrieving revision 1.13 +retrieving revision 1.14 +diff -u -r1.13 -r1.14 +--- libc/wcsmbs/wcscoll.c 2004/03/14 21:05:48 1.13 ++++ libc/wcsmbs/wcscoll.c 2005/03/17 21:06:24 1.14 +@@ -22,12 +22,11 @@ + + #define STRING_TYPE wchar_t + #define USTRING_TYPE wint_t +-#define STRCOLL __wcscoll ++#define STRCOLL wcscoll + #define STRCOLL_L __wcscoll_l + + #include "../string/strcoll.c" + + #ifndef USE_IN_EXTENDED_LOCALE_MODEL +-weak_alias (__wcscoll, wcscoll) + libc_hidden_weak (wcscoll) + #endif diff --git a/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-symbols.patch b/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-symbols.patch new file mode 100644 index 0000000..ace71e2 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-symbols.patch @@ -0,0 +1,126 @@ +If I'm really lucky, this fixes the following error building with gcc-4.0.0: + +../sysdeps/ieee754/dbl-64/s_isinf.c:29: error: 'isinf' aliased to undefined symbol '__isinf' +make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/math/s_isinf.os] Error 1 +make[1]: *** [math/subdir_lib] Error 2 +make: *** [lib] Error 2 + +--- + + +Revision 1.71, Thu Mar 17 21:06:27 2005 UTC (3 weeks, 5 days ago) by roland +Branch: MAIN +CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD +Changes since 1.70: +11 -66 lines +Diff to previous 1.70 (colored) + +2005-03-16 Richard Henderson <rth@redhat.com> + + * include/libc-symbols.h (__hidden_proto): Remove bogus declaration + of internal. + (__hidden_def1, __hidden_dot_def1): Remove. + (__hidden_def2, __hidden_def3): Remove. + (__hidden_ver1): New. + (hidden_ver, hidden_def, hidden_weak): Use it. + (hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data + version of the macro. + +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/libc-symbols.h.diff?r1=1.70&r2=1.71&cvsroot=glibc + +=================================================================== +RCS file: /cvs/glibc/libc/include/libc-symbols.h,v +retrieving revision 1.70 +retrieving revision 1.71 +diff -u -r1.70 -r1.71 +--- libc/include/libc-symbols.h 2005/02/11 00:29:46 1.70 ++++ libc/include/libc-symbols.h 2005/03/17 21:06:27 1.71 +@@ -583,78 +583,23 @@ + # define hidden_proto(name, attrs...) \ + __hidden_proto (name, __GI_##name, ##attrs) + # define __hidden_proto(name, internal, attrs...) \ +- extern __typeof (name) internal; \ + extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ + __hidden_proto_hiddenattr (attrs); + # define __hidden_asmname(name) \ + __hidden_asmname1 (__USER_LABEL_PREFIX__, name) + # define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) + # define __hidden_asmname2(prefix, name) #prefix name +-# ifdef HAVE_ASM_SET_DIRECTIVE +-# define __hidden_def1(original, alias) \ +- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ +- .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) +-# ifdef HAVE_ASM_GLOBAL_DOT_NAME +-# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ +- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ +- .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) +-# else +-# define __hidden_dot_def1(original, alias) +-# endif +-# else +-# define __hidden_def1(original, alias) \ +- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ +- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) +-# ifdef HAVE_ASM_GLOBAL_DOT_NAME +-# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ +- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ +- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) +-# else +-# define __hidden_dot_def1(original, alias) +-# endif +-# endif +-# define __hidden_def2(...) #__VA_ARGS__ +-# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) +-# define hidden_def(name) \ +- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \ +- __hidden_dot_def1 (__GI_##name, name))); +-# define hidden_data_def(name) \ +- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); +-# define hidden_ver(local, name) \ +- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \ +- __hidden_dot_def1 (local, __GI_##name))); +-# define hidden_data_ver(local, name) \ +- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name))); +-# ifdef HAVE_WEAK_SYMBOLS +-# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE +-# define __hidden_weak1(original, alias) \ +- .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) +-# ifdef HAVE_ASM_GLOBAL_DOT_NAME +-# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ +- .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) +-# else +-# define __hidden_dot_weak1(original, alias) +-# endif +-# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ +-# define __hidden_weak1(original, alias) \ +- .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ +- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) +-# ifdef HAVE_ASM_GLOBAL_DOT_NAME +-# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ +- .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ +- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) +-# else +-# define __hidden_dot_weak1(original, alias) +-# endif +-# endif +-# define hidden_weak(name) \ +- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \ +- __hidden_dot_weak1 (__GI_##name, name))); +-# define hidden_data_weak(name) \ +- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); +-# else +-# define hidden_weak(name) hidden_def (name) +-# endif ++# define __hidden_ver1(local, internal, name) \ ++ extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ ++ extern __typeof (name) __EI_##name \ ++ __attribute__((alias (__hidden_asmname (#local)))) ++# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); ++# define hidden_data_ver(local, name) hidden_ver(local, name) ++# define hidden_def(name) __hidden_ver1(__GI_##name, name, name); ++# define hidden_data_def(name) hidden_def(name) ++# define hidden_weak(name) \ ++ __hidden_ver1(__GI_##name, name, name) __attribute__((weak)); ++# define hidden_data_weak(name) hidden_weak(name) + # else + /* For assembly, we need to do the opposite of what we do in C: + in assembly gcc __REDIRECT stuff is not in place, so functions diff --git a/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-wcstol_l.patch b/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-wcstol_l.patch new file mode 100644 index 0000000..5637ce6 --- /dev/null +++ b/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-wcstol_l.patch @@ -0,0 +1,57 @@ +Fixes +../sysdeps/wordsize-64/wcstol_l.c:11: error: '____wcstoll_l_internal' aliased to undefined symbol '____wcstol_l_internal' +../sysdeps/wordsize-64/wcstol_l.c:12: error: '__wcstoll_l' aliased to undefined symbol '__wcstol_l' +../sysdeps/wordsize-64/wcstol_l.c:13: error: 'wcstoll_l' aliased to undefined symbol '__wcstol_l' +make[2]: *** [/home/dkegel/queue/jobdir.produser_cpsm10/crosstool-0.32/build/x86_64-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcstoul_l.o] Error 1 + +https://www.redhat.com/archives/fedora-cvs-commits/2005-March/msg00408.html +%changelog ++* Fri Mar 25 2005 Jakub Jelinek <jakub redhat com> 2.3.4-18 ++- fix build on 64-bit arches with new GCC + +Revision 1.4.2.1, Fri Mar 25 11:59:01 2005 UTC (3 weeks, 4 days ago) by jakub +Branch: fedora-branch +CVS Tags: fedora-glibc-2_3_4-18 +Changes since 1.4: +2 -0 lines +Diff to previous 1.4 (colored) + + * sysdeps/wordsize-64/strtol_l.c: Don't add aliases if UNSIGNED. + * sysdeps/wordsize-64/wcstol_l.c: Likewise. + + +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/wordsize-64/strtol_l.c.diff?r1=1.4&r2=1.4.2.1&cvsroot=glibc +http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/wordsize-64/wcstol_l.c.diff?r1=1.4&r2=1.4.2.1&cvsroot=glibc + +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/strtol_l.c,v +retrieving revision 1.4 +retrieving revision 1.4.2.1 +diff -u -r1.4 -r1.4.2.1 +--- libc/sysdeps/wordsize-64/strtol_l.c 2003/03/03 09:45:12 1.4 ++++ libc/sysdeps/wordsize-64/strtol_l.c 2005/03/25 11:59:01 1.4.2.1 +@@ -8,7 +8,9 @@ + #undef ____strtoll_l_internal + #undef __strtoll_l + #undef strtoll_l ++#if !UNSIGNED + strong_alias (____strtol_l_internal, ____strtoll_l_internal) + libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal) + weak_alias (__strtol_l, __strtoll_l) + weak_alias (__strtol_l, strtoll_l) ++#endif +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/wcstol_l.c,v +retrieving revision 1.4 +retrieving revision 1.4.2.1 +diff -u -r1.4 -r1.4.2.1 +--- libc/sysdeps/wordsize-64/wcstol_l.c 2002/08/08 11:44:51 1.4 ++++ libc/sysdeps/wordsize-64/wcstol_l.c 2005/03/25 11:59:01 1.4.2.1 +@@ -8,6 +8,8 @@ + #undef ____wcstoll_l_internal + #undef __wcstoll_l + #undef wcstoll_l ++#if !UNSIGNED + strong_alias (____wcstol_l_internal, ____wcstoll_l_internal) + weak_alias (__wcstol_l, __wcstoll_l) + weak_alias (__wcstol_l, wcstoll_l) ++#endif diff --git a/patches/glibc/2.3.4/glibc-configure-apple-as.patch b/patches/glibc/2.3.4/glibc-configure-apple-as.patch new file mode 100644 index 0000000..604c36d --- /dev/null +++ b/patches/glibc/2.3.4/glibc-configure-apple-as.patch @@ -0,0 +1,23 @@ +http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch +http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html + +The following makes it possible to configure glibc-2.3.2 on Mac OS X, +where the assembler but doesn't understand the --version flag. + +Fixes the symptom +checking whether ld is GNU ld... no +checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as +checking version of /usr/libexec/gcc/darwin/ppc/as... +<PAUSES HERE AND JUST SITS THERE DOING NOTHING> + +--- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003 ++++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004 +@@ -3789,7 +3789,7 @@ + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $AS" >&5 + echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 +- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` ++ ac_prog_version=`$AS -v </dev/null 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.1[3-9]*) diff --git a/patches/glibc/2.3.4/glibc-fp-byteorder.patch b/patches/glibc/2.3.4/glibc-fp-byteorder.patch new file mode 100644 index 0000000..f20432e --- /dev/null +++ b/patches/glibc/2.3.4/glibc-fp-byteorder.patch @@ -0,0 +1,203 @@ +Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html +Author: addsub@eyou.com +Target: ARM + +Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c +and makes printf("%f", 1.0) work. + +Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html : + It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point + is broken' on my big-endian hardfloat FPA ARM platform. ... + It's definitely needed for hardfloat. So I'd think it's needed for + big-endian systems in any case, and for VFP on little-endian systems + too. Someone would have to verify that though. + +Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html + I just had a look at glibc-20040830, and [this patch] is still needed and useful + for this version. glibc-20040830 out-of-the-box still contains the + following wrong assumptions: + - sysdeps/arm/bits/endian.h: float word order is big endian (which it is + not on vfp systems) + - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they + are not on big endian systems, neither on vfp systems) + - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order + (which they are not on big endian systems) + [This patch] seems the right solution for all of these issues. + +Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html : + It's even needed for glibc CVS, AFAICS. + The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h + (currently at version 1.4) is only needed for proper VFP operation. + But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk + that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed + for proper operation of *any* FP model on big endian ARM. + +See also discussion in followups to +http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html) + +Message-ID: <276985760.37584@eyou.com> +Received: from unknown (HELO eyou.com) (172.16.2.2) + by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800 +Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800 +Date: 17 Feb 2004 10:42:38 +0800 +Message-ID: <20040217104238.8237.qmail@eyou.com> +From: "add" <addsub@eyou.com> +To: dank@kegel.com +Reply-To: "add" <addsub@eyou.com> +Subject: Re: problem while building arm vfp softfloat gcc ` + +Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat +toolchain can printf("%f\n",1.0). So you may have a try of this + + +diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h +--- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400 ++++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500 +@@ -9,4 +9,9 @@ + #else + #define __BYTE_ORDER __LITTLE_ENDIAN + #endif ++ ++#ifdef __VFP_FP__ ++#define __FLOAT_WORD_ORDER __BYTE_ORDER ++#else + #define __FLOAT_WORD_ORDER __BIG_ENDIAN ++#endif +diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h +--- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400 ++++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500 +@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ + #define BITS_PER_SHORTINT 16 + #define BITS_PER_CHAR 8 + +-#define IEEE_DOUBLE_BIG_ENDIAN 0 +-#define IEEE_DOUBLE_MIXED_ENDIAN 1 ++#if defined(__ARMEB__) ++# define IEEE_DOUBLE_MIXED_ENDIAN 0 ++# define IEEE_DOUBLE_BIG_ENDIAN 1 ++#elif defined(__VFP_FP__) ++# define IEEE_DOUBLE_MIXED_ENDIAN 0 ++# define IEEE_DOUBLE_BIG_ENDIAN 0 ++#else ++# define IEEE_DOUBLE_BIG_ENDIAN 0 ++# define IEEE_DOUBLE_MIXED_ENDIAN 1 ++#endif +diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h +--- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400 ++++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500 +@@ -1,115 +0,0 @@ +-/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#ifndef _IEEE754_H +- +-#define _IEEE754_H 1 +-#include <features.h> +- +-#include <endian.h> +- +-__BEGIN_DECLS +- +-union ieee754_float +- { +- float f; +- +- /* This is the IEEE 754 single-precision format. */ +- struct +- { +- unsigned int mantissa:23; +- unsigned int exponent:8; +- unsigned int negative:1; +- } ieee; +- +- /* This format makes it easier to see if a NaN is a signalling NaN. */ +- struct +- { +- unsigned int mantissa:22; +- unsigned int quiet_nan:1; +- unsigned int exponent:8; +- unsigned int negative:1; +- } ieee_nan; +- }; +- +-#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ +- +- +-union ieee754_double +- { +- double d; +- +- /* This is the IEEE 754 double-precision format. */ +- struct +- { +- unsigned int mantissa0:20; +- unsigned int exponent:11; +- unsigned int negative:1; +- unsigned int mantissa1:32; +- } ieee; +- +- /* This format makes it easier to see if a NaN is a signalling NaN. */ +- struct +- { +- unsigned int mantissa0:19; +- unsigned int quiet_nan:1; +- unsigned int exponent:11; +- unsigned int negative:1; +- unsigned int mantissa1:32; +- } ieee_nan; +- }; +- +-#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ +- +- +-/* The following two structures are correct for `new' floating point systems but +- wrong for the old FPPC. The only solution seems to be to avoid their use on +- old hardware. */ +- +-union ieee854_long_double +- { +- long double d; +- +- /* This is the IEEE 854 double-extended-precision format. */ +- struct +- { +- unsigned int exponent:15; +- unsigned int empty:16; +- unsigned int negative:1; +- unsigned int mantissa1:32; +- unsigned int mantissa0:32; +- } ieee; +- +- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ +- struct +- { +- unsigned int exponent:15; +- unsigned int empty:16; +- unsigned int negative:1; +- unsigned int mantissa1:32; +- unsigned int mantissa0:30; +- unsigned int quiet_nan:1; +- unsigned int one:1; +- } ieee_nan; +- }; +- +-#define IEEE854_LONG_DOUBLE_BIAS 0x3fff +- +-__END_DECLS +- +-#endif /* ieee754.h */ diff --git a/patches/glibc/2.3.4/make-install-lib-all.patch b/patches/glibc/2.3.4/make-install-lib-all.patch new file mode 100644 index 0000000..3845722 --- /dev/null +++ b/patches/glibc/2.3.4/make-install-lib-all.patch @@ -0,0 +1,24 @@ +From http://svn.exactcode.de/t2/trunk/package/base/glibc32/make-install-lib-all.patch +Rule to install all needed libraries, not just the ones installed by install-lib, +yet not install programs. +Needed because we can't use the main install target, as we can't build programs before +we have the final gcc installed; linking fails because libeh.a is not present, +and glibc insists on linking programs with that library. + +diff -Naur glibc-2.3.4.orig/Makerules glibc-2.3.4/Makerules +--- glibc-2.3.4.orig/Makerules 2004-12-15 20:52:39.000000000 +0200 ++++ glibc-2.3.4/Makerules 2005-02-19 15:16:31.415125176 +0200 +@@ -844,6 +844,13 @@ + installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\ + $(inst_libdir)/$(patsubst %,$(libtype$o),\ + $(libprefix)$(libc-name))) ++ ++install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \ ++ $(inst_slibdir)/libc-$(version).so \ ++ $(inst_libdir)/libc.so \ ++ $(inst_libdir)/libc.a \ ++ install-lib ++ + install: $(installed-libcs) + $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) + $(make-target-directory) diff --git a/patches/glibc/2.3.4/pr758.patch b/patches/glibc/2.3.4/pr758.patch new file mode 100644 index 0000000..d1142a2 --- /dev/null +++ b/patches/glibc/2.3.4/pr758.patch @@ -0,0 +1,256 @@ +See http://sources.redhat.com/bugzilla/show_bug.cgi?id=758 + +Submitted By: Jim Gifford (patches at jg555 dot com) +Date: 2005-02-23 +Initial Package Version: 2.3.4 +Origin: Richard Sandiford +Upstream Status: Unknown +Description: Fixes Syscall.h generation + +diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/Makefile glibc-2.3.4/sysdeps/unix/sysv/linux/mips/Makefile +--- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/Makefile 2004-11-24 04:38:15 +0000 ++++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/Makefile 2005-02-23 18:21:54 +0000 +@@ -9,11 +9,73 @@ + + no_syscall_list_h = 1 + +-# Generate the list of SYS_* macros for the system calls (__NR_* macros). +-# We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if +-# it exists, but also define SYS_<abi>_<syscall> for all ABIs. ++# A callable macro that expands to a shell command. Preprocess file $(1) ++# using ABI option $(2) and see which macros it defines. Print FOO for each ++# macro of the form __NR$(3)_FOO, filtering out ABI-specific __NR macros ++# that have a prefix other than $(3). ++mips_list_syscalls = $(filter-out -m%,$(CC)) -E -x c $(+includes) \ ++ $(sysincludes) -D_LIBC -dM -mabi=$(2) $(1) | \ ++ sed -n 's@^\#define __NR$(3)_\([^ ]*\) .*@\1@p' | \ ++ sed -e '/^[ON]32_/d' -e '/^N64_/d' -e '/^64_/d' | \ ++ LC_ALL=C sort ++ ++# Generate a list of SYS_* macros from the linux __NR macros. ++# ++# Before version 2.6, linux had separate 32-bit and 64-bit MIPS ports, ++# each with its own set of headers. The ports were merged for 2.6 and ++# this merged port defines the syscalls in a slightly different way. ++# There are therefore three sets of headers that we need to consider: ++# ++# (1) Headers from the separate 32-bit MIPS port. They just define ++# a single list of __NR macros. ++# ++# (2) Headers from the separate 64-bit MIPS port. They unconditionally ++# define syscalls for all three ABIs, with o32 syscalls prefixed ++# by __NR_O32, n32 syscalls prefixed by __NR_N32 and n64 syscalls ++# prefixed by plain __NR. ++# ++# (3) Headers from the combined port. They use the _MIPS_SIM macro to ++# define the right set of syscalls for the current ABI. The syscalls ++# themselves have no special ABI prefix, but the headers also define: ++# ++# __NR_O32_Linux{,_syscalls} ++# __NR_N32_Linux{,_syscalls} ++# __NR_64_Linux{,_syscalls} ++# ++# In case (1) we just want a simple list of SYS_* macros. In cases (2) ++# and (3) we want a file that will work for all three ABIs, regardless ++# of which ABI we are currently using. We also want the file to work ++# if the user later moves from (2) to (3). Thus the file we create ++# for (2) and (3) has the form: ++# ++# #if _MIPS_SIM == _MIPS_SIM_NABI32 ++# # ifdef __NR_N32_open ++# # define SYS_n32syscall1 __NR_N32_n32syscall1 ++# # ... ++# # else ++# # define SYS_n32syscall1 __NR_n32syscall1 ++# # ... ++# # endif ++# #elif _MIPS_SIM == _MIPS_SIM_ABI64 ++# # define SYS_n64syscall1 __NR_n64syscall1 ++# # ... ++# #else ++# # ifdef __NR_O32_open ++# # define SYS_o32syscall1 __NR_O32_o32syscall1 ++# # ... ++# # else ++# # define SYS_o32syscall1 __NR_o32syscall1 ++# # ... ++# # endif ++# #endif ++# ++# Here, __NR_N32_open and __NR_O32_open are used to detect case (2) ++# over case (3). The n64 SYS_* macros can always use the normal ++# ABI-less names. + $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h + $(make-target-directory) ++ $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC $< -MD -MP \ ++ -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' > /dev/null + { \ + echo '/* Generated at libc build time from kernel syscall list. */';\ + echo ''; \ +@@ -22,28 +84,38 @@ + echo '#endif'; \ + echo ''; \ + echo '#include <sgidefs.h>'; \ +- rm -f $(@:.d=.h).newt; \ +- $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \ +- -x c $(+includes) $(sysincludes) $< -D_LIBC -dM | \ +- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \ +- > $(@:.d=.h).newt; \ +- if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \ ++ rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \ ++ $(call mips_list_syscalls,$<,n32,_N32) > $(@:.d=.h).newn32; \ ++ if test -s $(@:.d=.h).newn32; then \ ++ if grep open $(@:.d=.h).newn32 > /dev/null; then \ ++ $(call mips_list_syscalls,$<,32,_O32) > $(@:.d=.h).new32; \ ++ $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \ ++ else \ ++ $(call mips_list_syscalls,$<,32,) > $(@:.d=.h).new32; \ ++ $(call mips_list_syscalls,$<,n32,) > $(@:.d=.h).newn32; \ ++ $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \ ++ fi; \ + echo '#if _MIPS_SIM == _ABIN32'; \ +- sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt | \ +- LC_ALL=C sort; \ ++ echo '# ifdef __NR_N32_open'; \ ++ sed 's@\(.*\)@# define SYS_\1 __NR_N32_\1@' < $(@:.d=.h).newn32; \ ++ echo '# else'; \ ++ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).newn32; \ ++ echo '# endif'; \ + echo '#elif _MIPS_SIM == _ABI64'; \ +- sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt | \ +- LC_ALL=C sort; \ ++ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new64; \ + echo '#else'; \ +- sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt | \ +- LC_ALL=C sort; \ ++ echo '# ifdef __NR_O32_open'; \ ++ sed 's@\(.*\)@# define SYS_\1 __NR_O32_\1@' < $(@:.d=.h).new32; \ ++ echo '# else'; \ ++ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new32; \ ++ echo '# endif'; \ + echo '#endif'; \ +- sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt | \ +- LC_ALL=C sort +1.8; \ + else \ +- cat $(@:.d=.h).newt; \ ++ $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC -dM $< | \ ++ sed -n 's@^\#define __NR_\([^ ]*\) .*@\#define SYS_\1 __NR_\1@p' | \ ++ LC_ALL=C sort; \ + fi; \ +- rm $(@:.d=.h).newt; \ ++ rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \ + } > $(@:.d=.h).new + mv -f $(@:.d=.h).new $(@:.d=.h) + ifneq (,$(objpfx)) +diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure +--- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure 2004-11-24 04:42:45 +0000 ++++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure 2005-02-23 18:10:11 +0000 +@@ -18,7 +18,7 @@ + { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5 + echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;} + echo '#include <asm/unistd.h>' > asm-unistd.h +- else ++ elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then + # The point of this preprocessing is to turn __NR_<syscall> into + # __NR_N64_<syscall>, as well as to define __NR_<syscall> to + # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined +@@ -68,6 +68,8 @@ + { + print; + }' ++ else ++ echo '#include <asm/unistd.h>' > asm-unistd.h + fi ;; + mips*) + rm -f asm-unistd.h +diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure.in glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure.in +--- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure.in 2004-11-24 04:38:31 +0000 ++++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure.in 2005-02-23 18:10:11 +0000 +@@ -18,7 +18,7 @@ + if test ! -f "$asm_unistd_h"; then + AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed]) + echo '#include <asm/unistd.h>' > asm-unistd.h +- else ++ elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then + # The point of this preprocessing is to turn __NR_<syscall> into + # __NR_N64_<syscall>, as well as to define __NR_<syscall> to + # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined +@@ -68,6 +68,8 @@ + { + print; + }' ++ else ++ echo '#include <asm/unistd.h>' > asm-unistd.h + fi ;; + mips*) + rm -f asm-unistd.h +diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h +--- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2003-03-29 08:15:29 +0000 ++++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2005-02-23 18:10:11 +0000 +@@ -1,36 +0,0 @@ +-/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H +-#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1 +- +-/* There is some commonality. */ +-#include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.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 +- so we have to redefine the `SYS_ify' macro here. */ +-#undef SYS_ify +-#ifdef __STDC__ +-# define SYS_ify(syscall_name) __NR_O32_##syscall_name +-#else +-# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name +-#endif +- +-#endif /* linux/mips/mips32/kern64/sysdep.h */ +diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h +--- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2004-10-18 05:16:07 +0000 ++++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2005-02-23 18:10:11 +0000 +@@ -28,9 +28,9 @@ + so we have to redefine the `SYS_ify' macro here. */ + #undef SYS_ify + #ifdef __STDC__ +-# define SYS_ify(syscall_name) __NR_N32_##syscall_name ++# define SYS_ify(syscall_name) __NR_##syscall_name + #else +-# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name ++# define SYS_ify(syscall_name) __NR_/**/syscall_name + #endif + + #ifdef __ASSEMBLER__ +diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h +--- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2004-10-18 05:16:08 +0000 ++++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2005-02-23 18:10:11 +0000 +@@ -28,9 +28,9 @@ + so we have to redefine the `SYS_ify' macro here. */ + #undef SYS_ify + #ifdef __STDC__ +-# define SYS_ify(syscall_name) __NR_N64_##syscall_name ++# define SYS_ify(syscall_name) __NR_##syscall_name + #else +-# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name ++# define SYS_ify(syscall_name) __NR_/**/syscall_name + #endif + + #ifdef __ASSEMBLER__ |