diff --git a/package/base/glibc/config-400.in b/package/base/glibc/config-400.in index 79176e5ae..87cf8afaa 100644 --- a/package/base/glibc/config-400.in +++ b/package/base/glibc/config-400.in @@ -43,6 +43,8 @@ then pkgfork glibc glibc22 pkgremove glibc else + bool 'Use old-style linuxthreads instead of NPTL' \ + ROCKCFG_PKG_GLIBC23_LINUXTHREADS 0 pkgfork glibc glibc23 pkgremove glibc fi diff --git a/package/base/glibc/glibc.conf b/package/base/glibc/glibc.conf index 5bd67943e..bc1725d73 100644 --- a/package/base/glibc/glibc.conf +++ b/package/base/glibc/glibc.conf @@ -41,6 +41,8 @@ case "$xpkg" in ;; esac +pkg_glibc_linuxthreads=1 +[ "$ROCKCFG_PKG_GLIBC23_LINUXTHREADS" = "0" ] && pkg_glibc_linuxthreads=0 #--------------------------------- if [ $pkg_glibc_version = 22 ]; then @@ -137,13 +139,21 @@ glibc_custmain() { # Let's use an 'objdir' directory for building glibc mkdir -p objdir; cd objdir + # NPTL doesn't work with plain i386 CPUs + if [ $pkg_glibc_linuxthreads = 1 ]; then + temp_arch_target="$arch_target" + else + temp_arch_target="${arch_target/i386/i486}" + fi + # Disable glibc internal debuging but build debuging and profile # code so we can use this glibc to debug other programs. + create_config_cache >> config.cache CFLAGS="$CFLAGS -g -DNDEBUG=1" ../configure --prefix=$root/$prefix \ --with-gnu-binutils --enable-add-ons"$ADDONS" $G_PROFILE \ --with-headers=$root/$prefix/include --with-gd=/$prefix \ --with-gd-lib=/$prefix/lib --with-gd-include=/$prefix/include \ - --without-tls --build=${arch_build} --host=${arch_target} + --cache-file=config.cache --build=${arch_build} --host=${temp_arch_target} eval $MAKE prefix=/usr slibdir=/lib sysconfdir=/etc all if [ -z "$pkg_glibc_cross" ] @@ -164,18 +174,20 @@ glibc_custmain() { eval $MAKE localedata/install-locales cp ../localedata/SUPPORTED $root/usr/share/i18n/ mkdir -p $root/usr/share/man/man3 - if [ -f /usr/bin/perl ] ; then + if [ -f /usr/bin/perl -a $pkg_glibc_linuxthreads = 1 ] ; then eval $MAKE -C ../linuxthreads/man \ MANDIR=$root/usr/share/man/man3 all install fi # copy linuxthreads and crypt documentation # - cp ../linuxthreads/ChangeLog $docdir/ChangeLog.threads - cp ../linuxthreads/Changes $docdir/Changes.threads - cp ../linuxthreads/README $docdir/README.threads - cp ../linuxthreads/FAQ.html $docdir/FAQ-threads.html - cp -r ../linuxthreads/Examples $docdir/examples.threads + if [ $pkg_glibc_linuxthreads = 1 ]; then + cp ../linuxthreads/ChangeLog $docdir/ChangeLog.threads + cp ../linuxthreads/Changes $docdir/Changes.threads + cp ../linuxthreads/README $docdir/README.threads + cp ../linuxthreads/FAQ.html $docdir/FAQ-threads.html + cp -r ../linuxthreads/Examples $docdir/examples.threads + fi cp ../crypt/README.ufc-crypt $docdir/README.crypt # NSCD Init script and config @@ -231,7 +243,7 @@ fi glibc_prepatch() { - if [ -f $archdir/*linuxthreads*.tar.bz2 ]; then + if [ $pkg_glibc_linuxthreads = 1 -a -f $archdir/*linuxthreads*.tar.bz2 ]; then tar $taropt $archdir/*linuxthreads*.tar.bz2 fi } @@ -295,6 +307,10 @@ glibc_stage0() { patchfiles="`ls $confdir/glibc$pkg_glibc_version/*.patch \ $confdir/glibc$pkg_glibc_version/*.patch.$arch 2>/dev/null | tr '\n' ' '` $patchfiles" +if [ $pkg_glibc_linuxthreads = 1 ]; then + patchfiles="`ls $confdir/glibc$pkg_glibc_version/*.patch-linuxthreads | tr '\n' ' '` $patchfiles" +fi + if [ $stagelevel -le 1 ]; then patchfiles="`ls $patchfiles $confdir/glibc$pkg_glibc_version/*.patch.cross \ $confdir/glibc$pkg_glibc_version/*.patch.cross.$arch 2>/dev/null | tr '\n' ' '`" @@ -305,9 +321,12 @@ if [ $pkg_glibc_version = 22 ] ; then # auto-detect for the old glibc ADDONS="" else - # prevent the utilisation of nptl (...) - and enable it later - # if a 2.5/6 kernel is used - ADDONS="=linuxthreads" + # new glibc is using NPTL per default, set to linuxthreads if needed + if [ $pkg_glibc_linuxthreads = 1 ]; then + ADDONS="=linuxthreads" + else + ADDONS="" + fi fi diff --git a/package/base/glibc/glibc.desc b/package/base/glibc/glibc.desc index e0c33aed5..19c913d49 100644 --- a/package/base/glibc/glibc.desc +++ b/package/base/glibc/glibc.desc @@ -50,9 +50,9 @@ #endif #if xpkg == glibc23.* -[V] 2.3.5 -[D] 741938744 glibc-2.3.5.tar.bz2 ftp://ftp.gnu.org/gnu/glibc/ -[D] 3398805477 glibc-linuxthreads-2.3.5.tar.bz2 ftp://ftp.gnu.org/gnu/glibc/ +[V] 2.3.6 +[D] 3555313491 glibc-2.3.6.tar.bz2 ftp://ftp.gnu.org/gnu/glibc/ +[D] 2449696200 glibc-linuxthreads-2.3.6.tar.bz2 ftp://ftp.gnu.org/gnu/glibc/ #endif [CD] cp $cachedir/glibc2[23].cache $confdir/$pkg.cache diff --git a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-arm.patch b/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-arm.patch deleted file mode 100644 index 75cd29231..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-arm.patch +++ /dev/null @@ -1,110 +0,0 @@ -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' - ---- 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/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-elf.patch b/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-elf.patch deleted file mode 100644 index 1c005ed75..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-elf.patch +++ /dev/null @@ -1,54 +0,0 @@ -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 - ---- 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 - #include -- --#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 - - #ifndef VERSYMIDX - diff --git a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch b/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch deleted file mode 100644 index af7caacf3..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch +++ /dev/null @@ -1,42 +0,0 @@ -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 - #include - --/* 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/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch b/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch deleted file mode 100644 index 4c975f6da..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch +++ /dev/null @@ -1,48 +0,0 @@ -2005-02-21 Alan Modra - - * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't - use __uint128_t. - -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 :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 - -=================================================================== -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/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch b/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch deleted file mode 100644 index 1fb9d301c..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch +++ /dev/null @@ -1,41 +0,0 @@ -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' - -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/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch b/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch deleted file mode 100644 index c7c528939..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch +++ /dev/null @@ -1,60 +0,0 @@ -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' - ---- 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/package/base/glibc/glibc23/glibc-2.3.5-allow-gcc4-string.patch b/package/base/glibc/glibc23/glibc-2.3.5-allow-gcc4-string.patch deleted file mode 100644 index 645bd3527..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.5-allow-gcc4-string.patch +++ /dev/null @@ -1,71 +0,0 @@ -? 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' - - -taken from Dan Kegel's glibc patches - -=================================================================== -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/package/base/glibc/glibc23/glibc-2.3.5-allow-gcc4-symbols.patch b/package/base/glibc/glibc23/glibc-2.3.5-allow-gcc4-symbols.patch deleted file mode 100644 index f5377414d..000000000 --- a/package/base/glibc/glibc23/glibc-2.3.5-allow-gcc4-symbols.patch +++ /dev/null @@ -1,105 +0,0 @@ -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 - -patch taken from Dan Kegel's glibc patches -=================================================================== -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/package/base/glibc/glibc23/initfini-ccwrapper.patch b/package/base/glibc/glibc23/initfini-ccwrapper.patch index 8e8fdd972..bbb60a1c8 100644 --- a/package/base/glibc/glibc23/initfini-ccwrapper.patch +++ b/package/base/glibc/glibc23/initfini-ccwrapper.patch @@ -29,12 +29,14 @@ stored in CFLAGS-initfini.s and CFLAGS-pt-initfini.s. + CMD_WRAPPER_BYPASS=1 $(compile.c) -O -S $(CFLAGS-initfini.s) -finhibit-size-directive \ $(patsubst -f%,-fno-%,$(exceptions)) -o $@ ---- ./linuxthreads/Makefile.orig 2002-01-21 05:21:14.000000000 +0200 -+++ ./linuxthreads/Makefile 2002-06-23 12:25:10.000000000 +0300 -@@ -105,5 +105,5 @@ +--- ./nptl/Makefile.orig 2005-12-07 17:07:04.000000000 +0100 ++++ ./nptl/Makefile 2005-12-07 17:07:25.000000000 +0100 +@@ -516,7 +516,7 @@ + vpath pt-initfini.c $(full_config_sysdirs) $(objpfx)pt-initfini.s: pt-initfini.c - $(compile.c) -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \ + CMD_WRAPPER_BYPASS=1 $(compile.c) -O -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \ - $(patsubst -f%,-fno-%,$(exceptions)) -o $@ + $(patsubst -f%,-fno-%,$(exceptions)) -o $@ + $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0 diff --git a/package/base/glibc/glibc23/glibc-2.3.1-timezone.patch b/package/base/glibc/glibc23/initfini-ccwrapper.patch-linuxthreads similarity index 57% rename from package/base/glibc/glibc23/glibc-2.3.1-timezone.patch rename to package/base/glibc/glibc23/initfini-ccwrapper.patch-linuxthreads index af963b43b..1ea3f8f81 100644 --- a/package/base/glibc/glibc23/glibc-2.3.1-timezone.patch +++ b/package/base/glibc/glibc23/initfini-ccwrapper.patch-linuxthreads @@ -5,7 +5,7 @@ # the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by # the ./scripts/Create-CopyPatch script. Do not edit this copyright text! # -# ROCK Linux: rock-src/package/base/glibc/glibc23/glibc-2.3.1-timezone.patch +# ROCK Linux: rock-src/package/base/glibc/glibc23/initfini-ccwrapper.patch # ROCK Linux is Copyright (C) 1998 - 2005 Clifford Wolf # # This patch file is dual-licensed. It is available under the license the @@ -17,14 +17,15 @@ # # --- ROCK-COPYRIGHT-NOTE-END --- ---- ./timezone/solar87.orig 2002-12-16 22:50:28.000000000 +0100 -+++ ./timezone/solar87 2002-12-16 22:46:40.000000000 +0100 -@@ -382,7 +382,7 @@ +Make sure that the ROCK Linux CC Wrapper is not removing the CFLAGS +stored in CFLAGS-initfini.s and CFLAGS-pt-initfini.s. + +--- ./linuxthreads/Makefile.orig 2002-01-21 05:21:14.000000000 +0200 ++++ ./linuxthreads/Makefile 2002-06-23 12:25:10.000000000 +0300 +@@ -105,5 +105,5 @@ + + $(objpfx)pt-initfini.s: pt-initfini.c +- $(compile.c) -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \ ++ CMD_WRAPPER_BYPASS=1 $(compile.c) -O -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \ + $(patsubst -f%,-fno-%,$(exceptions)) -o $@ - # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] - Zone Asia/Riyadh87 3:07:04 - ?? 1987 -- 3:07:04 sol87 ?? 1988 -+# 3:07:04 sol87 ?? 1988 - 3:07:04 - ?? - # For backward compatibility... - Link Asia/Riyadh87 Mideast/Riyadh87