From b01e7d4812e291e54a2f2bf03be6b3fec5694316 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 16 Jan 2013 23:24:16 +0100 Subject: [PATCH] eglibc: update to eglibc-2.17-22220 Signed-off-by: Stephan Raue --- .../initramfs/devel/eglibc-initramfs/install | 6 +- packages/toolchain/devel/eglibc/build | 6 +- packages/toolchain/devel/eglibc/install | 4 +- packages/toolchain/devel/eglibc/meta | 4 +- .../patches/eglibc-2.15-20165-RH730856.patch | 52 ------- .../patches/eglibc-2.15-20165-RH737223.patch | 12 -- .../patches/eglibc-2.15-20165-bad-fix.patch | 134 ------------------ .../eglibc-2.15-20165-libgcc_eh-1.patch | 64 --------- .../eglibc-2.15-20165-restore-rpc+nis.patch | 59 -------- ...=> eglibc-2.17-22220-select_fd_type.patch} | 0 .../{mkpkg_eglibc-2.15 => mkpkg_eglibc-2.17} | 34 ++--- 11 files changed, 31 insertions(+), 344 deletions(-) delete mode 100644 packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH730856.patch delete mode 100644 packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH737223.patch delete mode 100644 packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-bad-fix.patch delete mode 100644 packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-libgcc_eh-1.patch delete mode 100644 packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-restore-rpc+nis.patch rename packages/toolchain/devel/eglibc/patches/{eglibc-2.15-20165-select_fd_type.patch => eglibc-2.17-22220-select_fd_type.patch} (100%) rename tools/mkpkg/{mkpkg_eglibc-2.15 => mkpkg_eglibc-2.17} (61%) diff --git a/packages/initramfs/devel/eglibc-initramfs/install b/packages/initramfs/devel/eglibc-initramfs/install index 473f2da5d1..5af3b205b1 100755 --- a/packages/initramfs/devel/eglibc-initramfs/install +++ b/packages/initramfs/devel/eglibc-initramfs/install @@ -25,7 +25,11 @@ EGLIBC_DIR="$BUILD/eglibc-*" mkdir -p $INSTALL/lib - cp $EGLIBC_DIR/objdir-eglibc/elf/ld*.so.* $INSTALL/lib + cp -PR $EGLIBC_DIR/objdir-eglibc/elf/ld*.so* $INSTALL/lib cp $EGLIBC_DIR/objdir-eglibc/libc.so.6 $INSTALL/lib cp $EGLIBC_DIR/objdir-eglibc/math/libm.so.6 $INSTALL/lib cp $EGLIBC_DIR/objdir-eglibc/nptl/libpthread.so.0 $INSTALL/lib + +if [ "$TARGET_ARCH" = "arm" -a "$TARGET_FLOAT" = "hard" ]; then + ln -sf ld.so $INSTALL/lib/ld-linux.so.3 +fi diff --git a/packages/toolchain/devel/eglibc/build b/packages/toolchain/devel/eglibc/build index 7f9dbc6d77..1bb6880f9e 100755 --- a/packages/toolchain/devel/eglibc/build +++ b/packages/toolchain/devel/eglibc/build @@ -58,7 +58,8 @@ NSS_CONF_DIR=`ls -d $ROOT/$BUILD/eglibc*/nss` cd $PKG_BUILD -autoconf +aclocal --force --verbose +autoconf-2.68 --force --verbose mkdir -p objdir-$1 && cd objdir-$1 @@ -139,6 +140,9 @@ EOF --with-headers=$SYSROOT_PREFIX/usr/include \ --without-cvs \ --without-gd \ + --enable-obsolete-rpc \ + --disable-build-nscd \ +        --disable-nscd \ $DEBUG_CONFIG \ make diff --git a/packages/toolchain/devel/eglibc/install b/packages/toolchain/devel/eglibc/install index dd2855ba0f..1e53311a83 100755 --- a/packages/toolchain/devel/eglibc/install +++ b/packages/toolchain/devel/eglibc/install @@ -23,12 +23,12 @@ . config/options $1 mkdir -p $INSTALL/lib - cp $PKG_BUILD/objdir-$1/elf/ld*.so.* $INSTALL/lib + cp -P $PKG_BUILD/objdir-$1/elf/ld*.so* $INSTALL/lib cp $PKG_BUILD/objdir-$1/libc.so.6 $INSTALL/lib cp $PKG_BUILD/objdir-$1/math/libm.so.6 $INSTALL/lib if [ "$TARGET_ARCH" = "arm" -a "$TARGET_FLOAT" = "hard" ]; then - ln -sf ld-linux.so.3 $INSTALL/lib/ld-linux-armhf.so.3 + ln -sf ld.so $INSTALL/lib/ld-linux.so.3 fi mkdir -p $INSTALL/usr/lib diff --git a/packages/toolchain/devel/eglibc/meta b/packages/toolchain/devel/eglibc/meta index 721c1883ae..f7aadf2bb7 100644 --- a/packages/toolchain/devel/eglibc/meta +++ b/packages/toolchain/devel/eglibc/meta @@ -19,14 +19,14 @@ ################################################################################ PKG_NAME="eglibc" -PKG_VERSION="2.15-20165" +PKG_VERSION="2.17-22220" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.eglibc.org/" PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" PKG_DEPENDS="timezone-data" -PKG_BUILD_DEPENDS="ccache autotools linux-headers gcc-core" +PKG_BUILD_DEPENDS="ccache autotools autoconf-2.68 linux-headers gcc-core" PKG_PRIORITY="optional" PKG_SECTION="toolchain/devel" PKG_SHORTDESC="eglibc: The Embedded GNU C library" diff --git a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH730856.patch b/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH730856.patch deleted file mode 100644 index 14270ed791..0000000000 --- a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH730856.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff -rup a/resolv/res_query.c b/resolv/res_query.c ---- a/resolv/res_query.c 2012-02-16 22:51:17.451796009 -0700 -+++ b/resolv/res_query.c 2012-02-16 22:54:42.522623598 -0700 -@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp, - int *resplen2) - { - HEADER *hp = (HEADER *) answer; -+ HEADER *hp2; - int n, use_malloc = 0; - u_int oflags = statp->_flags; - -@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp, - /* __libc_res_nsend might have reallocated the buffer. */ - hp = (HEADER *) *answerp; - -- /* We simplify the following tests by assigning HP to HP2. It -- is easy to verify that this is the same as ignoring all -- tests of HP2. */ -- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp; -- -- if (n < (int) sizeof (HEADER) && answerp2 != NULL -- && *resplen2 > (int) sizeof (HEADER)) -+ /* We simplify the following tests by assigning HP to HP2 or -+ vice versa. It is easy to verify that this is the same as -+ ignoring all tests of HP or HP2. */ -+ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER)) - { -- /* Special case of partial answer. */ -- assert (hp != hp2); -- hp = hp2; -+ hp2 = hp; - } -- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) -- && n > (int) sizeof (HEADER)) -+ else - { -- /* Special case of partial answer. */ -- assert (hp != hp2); -- hp2 = hp; -+ hp2 = (HEADER *) *answerp2; -+ if (n < (int) sizeof (HEADER)) -+ { -+ hp = hp2; -+ } - } - -+ /* Make sure both hp and hp2 are defined */ -+ assert((hp != NULL) && (hp2 != NULL)); -+ - if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0) - && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) { - #ifdef DEBUG diff --git a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH737223.patch b/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH737223.patch deleted file mode 100644 index 6108cf88ca..0000000000 --- a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-RH737223.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur eglibc-2.15-17022/elf/rtld.c eglibc-2.15-17022.patch/elf/rtld.c ---- eglibc-2.15-17022/elf/rtld.c 2012-02-07 05:47:54.000000000 +0100 -+++ eglibc-2.15-17022.patch/elf/rtld.c 2012-02-10 04:52:55.462289159 +0100 -@@ -1398,7 +1398,7 @@ - char *copy = malloc (len); - if (copy == NULL) - _dl_fatal_printf ("out of memory\n"); -- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len); -+ l->l_libname->name = memcpy (copy, dsoname, len); - } - - /* Add the vDSO to the object list. */ diff --git a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-bad-fix.patch b/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-bad-fix.patch deleted file mode 100644 index f76512f9e0..0000000000 --- a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-bad-fix.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 675155e9084e060fd0e1e637b843f14e82898aa5 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Wed, 22 Sep 2010 12:06:30 +0200 -Subject: [PATCH] Fix memory leak on init/fini dependency list - -diff -Naur eglibc-2.14.1-15769/elf/dl-close.c eglibc-2.14.1-15769.patch/elf/dl-close.c ---- eglibc-2.14.1-15769/elf/dl-close.c 2011-11-10 17:59:49.000000000 +0100 -+++ eglibc-2.14.1-15769.patch/elf/dl-close.c 2011-11-11 13:11:54.317765891 +0100 -@@ -1,5 +1,5 @@ - /* Close a shared object opened by `_dl_open'. -- Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1996-2007, 2009, 2010 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 -@@ -119,17 +119,8 @@ - if (map->l_direct_opencount > 0 || map->l_type != lt_loaded - || dl_close_state != not_pending) - { -- if (map->l_direct_opencount == 0) -- { -- if (map->l_type == lt_loaded) -- dl_close_state = rerun; -- else if (map->l_type == lt_library) -- { -- struct link_map **oldp = map->l_initfini; -- map->l_initfini = map->l_orig_initfini; -- _dl_scope_free (oldp); -- } -- } -+ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded) -+ dl_close_state = rerun; - - /* There are still references to this object. Do nothing more. */ - if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_FILES, 0)) -diff -Naur eglibc-2.14.1-15769/elf/dl-deps.c eglibc-2.14.1-15769.patch/elf/dl-deps.c ---- eglibc-2.14.1-15769/elf/dl-deps.c 2011-11-10 17:59:49.000000000 +0100 -+++ eglibc-2.14.1-15769.patch/elf/dl-deps.c 2011-11-11 13:14:07.711207504 +0100 -@@ -478,6 +478,7 @@ - nneeded * sizeof needed[0]); - atomic_write_barrier (); - l->l_initfini = l_initfini; -+ l->l_free_initfini = 1; - } - - /* If we have no auxiliary objects just go on to the next map. */ -@@ -678,6 +679,7 @@ - l_initfini[nlist] = NULL; - atomic_write_barrier (); - map->l_initfini = l_initfini; -+ map->l_free_initfini = 1; - if (l_reldeps != NULL) - { - atomic_write_barrier (); -@@ -686,7 +688,7 @@ - _dl_scope_free (old_l_reldeps); - } - if (old_l_initfini != NULL) -- map->l_orig_initfini = old_l_initfini; -+ _dl_scope_free (old_l_initfini); - - if (errno_reason) - _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname, -diff -Naur eglibc-2.14.1-15769/elf/dl-libc.c eglibc-2.14.1-15769.patch/elf/dl-libc.c ---- eglibc-2.14.1-15769/elf/dl-libc.c 2011-11-10 17:59:49.000000000 +0100 -+++ eglibc-2.14.1-15769.patch/elf/dl-libc.c 2011-11-11 13:11:54.319765853 +0100 -@@ -265,13 +265,13 @@ - - for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns) - { -- /* Remove all additional names added to the objects. */ - for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next) - { - struct libname_list *lnp = l->l_libname->next; - - l->l_libname->next = NULL; - -+ /* Remove all additional names added to the objects. */ - while (lnp != NULL) - { - struct libname_list *old = lnp; -@@ -279,6 +279,10 @@ - if (! old->dont_free) - free (old); - } -+ -+ /* Free the initfini dependency list. */ -+ if (l->l_free_initfini) -+ free (l->l_initfini); - } - - if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0 -diff -Naur eglibc-2.14.1-15769/elf/rtld.c eglibc-2.14.1-15769.patch/elf/rtld.c ---- eglibc-2.14.1-15769/elf/rtld.c 2011-11-10 17:59:49.000000000 +0100 -+++ eglibc-2.14.1-15769.patch/elf/rtld.c 2011-11-11 13:11:54.320765834 +0100 -@@ -2264,6 +2264,7 @@ - lnp->dont_free = 1; - lnp = lnp->next; - } -+ l->l_free_initfini = 0; - - if (l != &GL(dl_rtld_map)) - _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, -diff -Naur eglibc-2.14.1-15769/include/link.h eglibc-2.14.1-15769.patch/include/link.h ---- eglibc-2.14.1-15769/include/link.h 2011-11-10 17:59:51.000000000 +0100 -+++ eglibc-2.14.1-15769.patch/include/link.h 2011-11-11 13:11:54.321765815 +0100 -@@ -1,6 +1,6 @@ - /* Data structure for communication from the run-time dynamic linker for - loaded ELF shared objects. -- Copyright (C) 1995-2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1995-2006, 2007, 2009, 2010 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 -@@ -192,6 +192,9 @@ - during LD_TRACE_PRELINKING=1 - contains any DT_SYMBOLIC - libraries. */ -+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be -+ freed, ie. not allocated with -+ the dummy malloc in ld.so. */ - - /* Collected information about own RPATH directories. */ - struct r_search_path_struct l_rpath_dirs; -@@ -240,9 +243,6 @@ - - /* List of object in order of the init and fini calls. */ - struct link_map **l_initfini; -- /* The init and fini list generated at startup, saved when the -- object is also loaded dynamically. */ -- struct link_map **l_orig_initfini; - - /* List of the dependencies introduced through symbol binding. */ - struct link_map_reldeps diff --git a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-libgcc_eh-1.patch b/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-libgcc_eh-1.patch deleted file mode 100644 index 44a074b010..0000000000 --- a/packages/toolchain/devel/eglibc/patches/eglibc-2.15-20165-libgcc_eh-1.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff -Naur glibc-2.11.orig/Makeconfig glibc-2.11/Makeconfig ---- glibc-2.11.orig/Makeconfig 2009-10-30 13:17:08.000000000 -0400 -+++ glibc-2.11/Makeconfig 2009-11-13 12:14:18.000000000 -0500 -@@ -538,12 +538,20 @@ - libunwind = -lunwind - endif - ifneq ($(have-as-needed),yes) -- libgcc_eh := -lgcc_eh $(libunwind) -+ ifneq ($(have-cc-with-libgcc_eh),yes) -+ libgcc_eh := $(libunwind) -+ else -+ libgcc_eh := -lgcc_eh $(libunwind) -+ endif - else - libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl,--no-as-needed - endif - gnulib := -lgcc $(libgcc_eh) --static-gnulib := -lgcc -lgcc_eh $(libunwind) -+ifneq ($(have-cc-with-libgcc_eh),yes) -+ static-gnulib := -lgcc $(libunwind) -+else -+ static-gnulib := -lgcc -lgcc_eh $(libunwind) -+endif - libc.so-gnulib := -lgcc - endif - ifeq ($(elf),yes) -diff -Naur glibc-2.11.orig/config.make.in glibc-2.11/config.make.in ---- glibc-2.11.orig/config.make.in 2009-10-30 13:17:08.000000000 -0400 -+++ glibc-2.11/config.make.in 2009-11-13 12:14:18.000000000 -0500 -@@ -64,6 +64,7 @@ - have-libaudit = @have_libaudit@ - have-libcap = @have_libcap@ - have-cc-with-libunwind = @libc_cv_cc_with_libunwind@ -+have-cc-with-libgcc_eh = @libc_cv_cc_with_libgcc_eh@ - fno-unit-at-a-time = @fno_unit_at_a_time@ - bind-now = @bindnow@ - have-hash-style = @libc_cv_hashstyle@ -diff -Naur glibc-2.11.orig/configure.in glibc-2.11/configure.in ---- glibc-2.11.orig/configure.in 2009-10-30 13:17:08.000000000 -0400 -+++ glibc-2.11/configure.in 2009-11-13 12:14:18.000000000 -0500 -@@ -1505,6 +1505,23 @@ - AC_DEFINE(HAVE_CC_WITH_LIBUNWIND) - fi - -+ AC_CACHE_CHECK(whether to link against libgcc_eh, -+ libc_cv_cc_with_libgcc_eh, [ -+ cat > conftest.c <&1 >/dev/null | grep -q " -lgcc_eh "; then -+ libc_cv_cc_with_libgcc_eh=yes -+ else -+ libc_cv_cc_with_libgcc_eh=no -+ fi -+ rm -f conftest*]) -+ AC_SUBST(libc_cv_cc_with_libgcc_eh) -+ if test $libc_cv_cc_with_libgcc_eh = yes; then -+ AC_DEFINE(HAVE_CC_WITH_LIBGCC_EH) -+ fi -+ - AC_CACHE_CHECK(for -z nodelete option, - libc_cv_z_nodelete, [dnl - cat > conftest.c </dev/null | grep Revision: | sed -e 's/.*\: //'` echo $SVN_REV cd .. echo "copying sources..." - rm -rf eglibc-2.15-$SVN_REV - cp -R eglibc-2.15-latest eglibc-2.15-$SVN_REV + rm -rf eglibc-2.17-$SVN_REV + cp -R eglibc-2.17-latest eglibc-2.17-$SVN_REV echo "cleaning sources..." - find eglibc-2.15-$SVN_REV -name .svn -exec rm -rf {} ";" + find eglibc-2.17-$SVN_REV -name .svn -exec rm -rf {} ";" echo "packing sources..." - tar cvJf eglibc-2.15-$SVN_REV.tar.xz eglibc-2.15-$SVN_REV + tar cvJf eglibc-2.17-$SVN_REV.tar.xz eglibc-2.17-$SVN_REV echo "remove temporary sourcedir..." - rm -rf eglibc-2.15-$SVN_REV + rm -rf eglibc-2.17-$SVN_REV # now localedef - svn co svn://svn.eglibc.org/branches/eglibc-2_15/localedef eglibc-localedef-2.15-latest + svn co svn://svn.eglibc.org/branches/eglibc-2_17/localedef eglibc-localedef-2.17-latest echo "getting version..." - cd eglibc-localedef-2.15-latest + cd eglibc-localedef-2.17-latest SVN_REV=`LANG=C svn info 2>/dev/null | grep Revision: | sed -e 's/.*\: //'` echo $SVN_REV cd .. echo "copying sources..." - rm -rf eglibc-localedef-2.15-$SVN_REV - cp -R eglibc-localedef-2.15-latest eglibc-localedef-2.15-$SVN_REV + rm -rf eglibc-localedef-2.17-$SVN_REV + cp -R eglibc-localedef-2.17-latest eglibc-localedef-2.17-$SVN_REV echo "cleaning sources..." - find eglibc-localedef-2.15-$SVN_REV -name .svn -exec rm -rf {} ";" + find eglibc-localedef-2.17-$SVN_REV -name .svn -exec rm -rf {} ";" echo "packing sources..." - tar cvJf eglibc-localedef-2.15-$SVN_REV.tar.xz eglibc-localedef-2.15-$SVN_REV + tar cvJf eglibc-localedef-2.17-$SVN_REV.tar.xz eglibc-localedef-2.17-$SVN_REV echo "remove temporary sourcedir..." - rm -rf eglibc-localedef-2.15-$SVN_REV + rm -rf eglibc-localedef-2.17-$SVN_REV