diff options
Diffstat (limited to 'multilib-testing/lib32-glibc')
34 files changed, 0 insertions, 4697 deletions
diff --git a/multilib-testing/lib32-glibc/PKGBUILD b/multilib-testing/lib32-glibc/PKGBUILD deleted file mode 100644 index 2f586aeb6..000000000 --- a/multilib-testing/lib32-glibc/PKGBUILD +++ /dev/null @@ -1,144 +0,0 @@ -# $Id: PKGBUILD 75727 2012-08-29 17:49:29Z heftig $ -# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> -# Contributor: Jan de Groot <jgc@archlinux.org> -# Contributor: Allan McRae <allan@archlinux.org> - -# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc -# NOTE: valgrind requires rebuilt with each major glibc version - -_pkgbasename=glibc -pkgname=lib32-$_pkgbasename -pkgver=2.16.0 -pkgrel=4 -pkgdesc="GNU C Library for multilib" -arch=('x86_64') -url="http://www.gnu.org/software/libc" -license=('GPL' 'LGPL') -makedepends=('gcc-multilib>=4.7') -options=('!strip' '!emptydirs') -source=(http://ftp.gnu.org/gnu/libc/${_pkgbasename}-${pkgver}.tar.xz{,.sig} - glibc-2.15-fix-res_query-assert.patch - glibc-2.15-revert-c5a0802a.patch - glibc-2.16-rpcgen-cpp-path.patch - glibc-2.16-strncasecmp-segfault.patch - glibc-2.16-strtod-overflow.patch - lib32-glibc.conf) -md5sums=('80b181b02ab249524ec92822c0174cf7' - '2a1221a15575820751c325ef4d2fbb90' - '31f415b41197d85d3bbee3d1eecd06a3' - '0a0383d50d63f1c02919fe9943b82014' - 'ea6a43915474e8276e9361eed6a01280' - 'f042d37cc8ca3459023431809039bc88' - '61d322f7681a85d3293ada5c3ccc2c7e' - '6e052f1cb693d5d3203f50f9d4e8c33b') - -build() { - cd ${srcdir}/${_pkgbasename}-${pkgver} - - # fix res_query assertion - # http://sourceware.org/bugzilla/show_bug.cgi?id=13013 - patch -p1 -i ${srcdir}/glibc-2.15-fix-res_query-assert.patch - - # revert commit c5a0802a - causes various hangs - # https://bugzilla.redhat.com/show_bug.cgi?id=552960 - patch -p1 -i ${srcdir}/glibc-2.15-revert-c5a0802a.patch - - # prevent need for /lib/cpp symlink - # http://sourceware.org/git/?p=glibc.git;a=commit;h=bf9b740a - patch -p1 -i ${srcdir}/glibc-2.16-rpcgen-cpp-path.patch - - # strncasecmp segfault on i686 - # http://sourceware.org/git/?p=glibc.git;a=commit;h=6db8f737 - patch -p1 -i ${srcdir}/glibc-2.16-strncasecmp-segfault.patch - - # strtod integer/buffer overflow - # http://sourceware.org/git/?p=glibc.git;a=commit;h=da1f4319 - patch -p1 -i ${srcdir}/glibc-2.16-strtod-overflow.patch - - # ldconfig does not need to look in /usr/lib64 or /usr/libx32 on Arch Linux - sed -i "s#add_system_dir#do_not_add_system_dir#" sysdeps/unix/sysv/linux/x86_64/dl-cache.h - - cd ${srcdir} - mkdir glibc-build - cd glibc-build - - #if [[ ${CARCH} = "i686" ]]; then - # Hack to fix NPTL issues with Xen, only required on 32bit platforms - # TODO: make separate glibc-xen package for i686 - export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs" - #fi - - export CC="gcc -m32" - export CXX="g++ -m32" - echo "slibdir=/usr/lib32" >> configparms - - # remove hardening options from CFLAGS for building libraries - CFLAGS=${CFLAGS/-fstack-protector/} - CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/} - - ${srcdir}/${_pkgbasename}-${pkgver}/configure --prefix=/usr \ - --libdir=/usr/lib32 --libexecdir=/usr/lib32 \ - --with-headers=/usr/include \ - --enable-add-ons=nptl,libidn \ - --enable-obsolete-rpc \ - --enable-kernel=2.6.32 \ - --enable-bind-now --disable-profile \ - --enable-stackguard-randomization \ - --enable-multi-arch i686-unknown-linux-gnu - - # build libraries with hardening disabled - echo "build-programs=no" >> configparms - make - - # re-enable hardening for programs - sed -i "/build-programs=/s#no#yes#" configparms - echo "CC += -fstack-protector -D_FORTIFY_SOURCE=2" >> configparms - echo "CXX += -fstack-protector -D_FORTIFY_SOURCE=2" >> configparms - make - - # remove harding in preparation to run test-suite - sed -i '2,4d' configparms -} - -check() { - cd ${srcdir}/glibc-build - make -k check -} - -package() { - cd ${srcdir}/glibc-build - make install_root=${pkgdir} install - - rm -rf ${pkgdir}/{etc,sbin,usr/{bin,sbin,share},var} - - # We need one 32 bit specific header file - find ${pkgdir}/usr/include -type f -not -name stubs-32.h -delete - - # Do not strip the following files for improved debugging support - # ("improved" as in not breaking gdb and valgrind...): - # ld-${pkgver}.so - # libc-${pkgver}.so - # libpthread-${pkgver}.so - # libthread_db-1.0.so - - cd $pkgdir - strip $STRIP_BINARIES usr/lib32/getconf/* - - strip $STRIP_STATIC usr/lib32/*.a - - strip $STRIP_SHARED usr/lib32/{libanl,libBrokenLocale,libcidn,libcrypt}-*.so \ - usr/lib32/libnss_{compat,db,dns,files,hesiod,nis,nisplus}-*.so \ - usr/lib32/{libdl,libm,libnsl,libresolv,librt,libutil}-*.so \ - usr/lib32/{libmemusage,libpcprofile,libSegFault}.so \ - usr/lib32/{pt_chown,{audit,gconv}/*.so} - - # Dynamic linker - mkdir ${pkgdir}/usr/lib - ln -s ../lib32/ld-linux.so.2 ${pkgdir}/usr/lib/ - - # Add lib32 paths to the default library search path - install -Dm644 "$srcdir/lib32-glibc.conf" "$pkgdir/etc/ld.so.conf.d/lib32-glibc.conf" - - # Symlink /usr/lib32/locale to /usr/lib/locale - ln -s ../lib/locale "$pkgdir/usr/lib32/locale" -} diff --git a/multilib-testing/lib32-glibc/glibc-2.14-libdl-crash.patch b/multilib-testing/lib32-glibc/glibc-2.14-libdl-crash.patch deleted file mode 100644 index 6c9d2718e..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.14-libdl-crash.patch +++ /dev/null @@ -1,132 +0,0 @@ -diff --git a/elf/dl-close.c b/elf/dl-close.c -index 73b2a2f..9bd91e3 100644 ---- a/elf/dl-close.c -+++ b/elf/dl-close.c -@@ -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 @@ _dl_close_worker (struct link_map *map) - 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 --git a/elf/dl-deps.c b/elf/dl-deps.c -index 9e30594..3890d00 100644 ---- a/elf/dl-deps.c -+++ b/elf/dl-deps.c -@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *map, - 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. */ -@@ -681,6 +682,7 @@ Filters not supported with LD_TRACE_PRELINKING")); - l_initfini[nlist] = NULL; - atomic_write_barrier (); - map->l_initfini = l_initfini; -+ map->l_free_initfini = 1; - if (l_reldeps != NULL) - { - atomic_write_barrier (); -@@ -689,5 +691,5 @@ Filters not supported with LD_TRACE_PRELINKING")); - _dl_scope_free (old_l_reldeps); - } - if (old_l_initfini != NULL) -- map->l_orig_initfini = old_l_initfini; -+ _dl_scope_free (old_l_initfini); - -diff --git a/elf/dl-libc.c b/elf/dl-libc.c -index 7be9483..a13fce3 100644 ---- a/elf/dl-libc.c -+++ b/elf/dl-libc.c -@@ -265,13 +265,13 @@ libc_freeres_fn (free_mem) - - 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 @@ libc_freeres_fn (free_mem) - 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 --git a/elf/rtld.c b/elf/rtld.c -index 4a9109e..617e30e 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2251,6 +2251,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - 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 --git a/include/link.h b/include/link.h -index e877104..051b99a 100644 ---- a/include/link.h -+++ b/include/link.h -@@ -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 @@ struct link_map - 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 @@ struct link_map - - /* 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/multilib-testing/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch b/multilib-testing/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch deleted file mode 100644 index e2beea881..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/include/libc-symbols.h b/include/libc-symbols.h -index 67e1ca2..5e7cca5 100644 ---- a/include/libc-symbols.h -+++ b/include/libc-symbols.h -@@ -635,7 +635,7 @@ for linking") - # define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) - # define libc_hidden_def(name) hidden_def (name) - # define libc_hidden_weak(name) hidden_weak (name) --# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version) -+# define libc_hidden_nolink(name, version) hidden_def (name) - # define libc_hidden_ver(local, name) hidden_ver (local, name) - # define libc_hidden_data_def(name) hidden_data_def (name) - # define libc_hidden_data_weak(name) hidden_data_weak (name) -diff --git a/sunrpc/Makefile b/sunrpc/Makefile -index 5134ce9..40c73d1 100644 ---- a/sunrpc/Makefile -+++ b/sunrpc/Makefile -@@ -53,7 +53,7 @@ headers-in-tirpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \ - des_crypt.h) - headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \ - $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h --headers = rpc/netdb.h -+headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc) - install-others = $(inst_sysconfdir)/rpc - generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \ - $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen diff --git a/multilib-testing/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch b/multilib-testing/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch deleted file mode 100644 index eb0fd822d..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch +++ /dev/null @@ -1,28 +0,0 @@ -From bdd816a366c4e5bba5de7157d948e0c0737fb4fb Mon Sep 17 00:00:00 2001 -From: Andreas Schwab <schwab@redhat.com> -Date: Tue, 17 May 2011 17:42:30 +0200 -Subject: [PATCH] Reinstall NIS RPC headers - ---- - nis/Makefile | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/nis/Makefile b/nis/Makefile -index b5c9609..d2934d9 100644 ---- a/nis/Makefile -+++ b/nis/Makefile -@@ -23,9 +23,9 @@ subdir := nis - - aux := nis_hash - -+headers := $(wildcard rpcsvc/*.[hx]) - distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \ -- nisplus-parser.h nis_xdr.h nss \ -- $(wildcard rpcsvc/*.[hx]) -+ nisplus-parser.h nis_xdr.h nss - - # These are the databases available for the nis (and perhaps later nisplus) - # service. This must be a superset of the services in nss. --- -1.7.5.4 - diff --git a/multilib-testing/lib32-glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch b/multilib-testing/lib32-glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch deleted file mode 100644 index 6f0a0398f..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/resolv/res_query.c b/resolv/res_query.c -index 947c651..abccd4a 100644 ---- a/resolv/res_query.c -+++ b/resolv/res_query.c -@@ -556,12 +556,16 @@ __libc_res_nquerydomain(res_state statp, - * copy without '.' if present. - */ - n = strlen(name); -- if (n >= MAXDNAME) { -+ -+ /* Decrement N prior to checking it against MAXDNAME -+ so that we detect a wrap to SIZE_MAX and return -+ a reasonable error. */ -+ n--; -+ if (n >= MAXDNAME - 1) { - RES_SET_H_ERRNO(statp, NO_RECOVERY); - return (-1); - } -- n--; -- if (n >= 0 && name[n] == '.') { -+ if (name[n] == '.') { - strncpy(nbuf, name, n); - nbuf[n] = '\0'; - } else diff --git a/multilib-testing/lib32-glibc/glibc-2.15-arena.patch b/multilib-testing/lib32-glibc/glibc-2.15-arena.patch deleted file mode 100644 index 46f52e98d..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-arena.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/malloc/arena.c b/malloc/arena.c -index d3cf4b9..b1c9469 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size) - { - if (mp_.arena_max != 0) - narenas_limit = mp_.arena_max; -- else -+ else if (narenas > mp_.arena_test) - { - int n = __get_nprocs (); - -@@ -842,7 +842,14 @@ arena_get2(mstate a_tsd, size_t size) - } - repeat:; - size_t n = narenas; -- if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) -+ /* NB: the following depends on the fact that (size_t)0 - 1 is a -+ very large number and that the underflow is OK. If arena_max -+ is set the value of arena_test is irrelevant. If arena_test -+ is set but narenas is not yet larger or equal to arena_test -+ narenas_limit is 0. There is no possibility for narenas to -+ be too big for the test to always fail since there is not -+ enough address space to create that many arenas. */ -+ if (__builtin_expect (n <= narenas_limit - 1, 0)) - { - if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n)) - goto repeat; diff --git a/multilib-testing/lib32-glibc/glibc-2.15-avx.patch b/multilib-testing/lib32-glibc/glibc-2.15-avx.patch deleted file mode 100644 index 5439da8d0..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-avx.patch +++ /dev/null @@ -1,196 +0,0 @@ -diff --git a/sysdeps/x86_64/fpu/multiarch/e_atan2.c b/sysdeps/x86_64/fpu/multiarch/e_atan2.c -index 6867c6e..3a615fc 100644 ---- a/sysdeps/x86_64/fpu/multiarch/e_atan2.c -+++ b/sysdeps/x86_64/fpu/multiarch/e_atan2.c -@@ -14,7 +14,7 @@ extern double __ieee754_atan2_fma4 (double, double); - - libm_ifunc (__ieee754_atan2, - HAS_FMA4 ? __ieee754_atan2_fma4 -- : (HAS_AVX ? __ieee754_atan2_avx : __ieee754_atan2_sse2)); -+ : (HAS_YMM_USABLE ? __ieee754_atan2_avx : __ieee754_atan2_sse2)); - strong_alias (__ieee754_atan2, __atan2_finite) - - # define __ieee754_atan2 __ieee754_atan2_sse2 -diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c -index 3c65028..7b2320a 100644 ---- a/sysdeps/x86_64/fpu/multiarch/e_exp.c -+++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c -@@ -14,7 +14,7 @@ extern double __ieee754_exp_fma4 (double); - - libm_ifunc (__ieee754_exp, - HAS_FMA4 ? __ieee754_exp_fma4 -- : (HAS_AVX ? __ieee754_exp_avx : __ieee754_exp_sse2)); -+ : (HAS_YMM_USABLE ? __ieee754_exp_avx : __ieee754_exp_sse2)); - strong_alias (__ieee754_exp, __exp_finite) - - # define __ieee754_exp __ieee754_exp_sse2 -diff --git a/sysdeps/x86_64/fpu/multiarch/e_log.c b/sysdeps/x86_64/fpu/multiarch/e_log.c -index 3b468d0..ab277d6 100644 ---- a/sysdeps/x86_64/fpu/multiarch/e_log.c -+++ b/sysdeps/x86_64/fpu/multiarch/e_log.c -@@ -14,7 +14,7 @@ extern double __ieee754_log_fma4 (double); - - libm_ifunc (__ieee754_log, - HAS_FMA4 ? __ieee754_log_fma4 -- : (HAS_AVX ? __ieee754_log_avx -+ : (HAS_YMM_USABLE ? __ieee754_log_avx - : __ieee754_log_sse2)); - strong_alias (__ieee754_log, __log_finite) - -diff --git a/sysdeps/x86_64/fpu/multiarch/s_atan.c b/sysdeps/x86_64/fpu/multiarch/s_atan.c -index 3160201..78c7e09 100644 ---- a/sysdeps/x86_64/fpu/multiarch/s_atan.c -+++ b/sysdeps/x86_64/fpu/multiarch/s_atan.c -@@ -12,7 +12,8 @@ extern double __atan_fma4 (double); - # define __atan_fma4 ((void *) 0) - # endif - --libm_ifunc (atan, HAS_FMA4 ? __atan_fma4 : HAS_AVX ? __atan_avx : __atan_sse2); -+libm_ifunc (atan, (HAS_FMA4 ? __atan_fma4 : -+ HAS_YMM_USABLE ? __atan_avx : __atan_sse2)); - - # define atan __atan_sse2 - #endif -diff --git a/sysdeps/x86_64/fpu/multiarch/s_sin.c b/sysdeps/x86_64/fpu/multiarch/s_sin.c -index 1ba9dbc..417acd0 100644 ---- a/sysdeps/x86_64/fpu/multiarch/s_sin.c -+++ b/sysdeps/x86_64/fpu/multiarch/s_sin.c -@@ -17,10 +17,12 @@ extern double __sin_fma4 (double); - # define __sin_fma4 ((void *) 0) - # endif - --libm_ifunc (__cos, HAS_FMA4 ? __cos_fma4 : HAS_AVX ? __cos_avx : __cos_sse2); -+libm_ifunc (__cos, (HAS_FMA4 ? __cos_fma4 : -+ HAS_YMM_USABLE ? __cos_avx : __cos_sse2)); - weak_alias (__cos, cos) - --libm_ifunc (__sin, HAS_FMA4 ? __sin_fma4 : HAS_AVX ? __sin_avx : __sin_sse2); -+libm_ifunc (__sin, (HAS_FMA4 ? __sin_fma4 : -+ HAS_YMM_USABLE ? __sin_avx : __sin_sse2)); - weak_alias (__sin, sin) - - # define __cos __cos_sse2 -diff --git a/sysdeps/x86_64/fpu/multiarch/s_tan.c b/sysdeps/x86_64/fpu/multiarch/s_tan.c -index 8f6601e..3047155 100644 ---- a/sysdeps/x86_64/fpu/multiarch/s_tan.c -+++ b/sysdeps/x86_64/fpu/multiarch/s_tan.c -@@ -12,7 +12,8 @@ extern double __tan_fma4 (double); - # define __tan_fma4 ((void *) 0) - # endif - --libm_ifunc (tan, HAS_FMA4 ? __tan_fma4 : HAS_AVX ? __tan_avx : __tan_sse2); -+libm_ifunc (tan, (HAS_FMA4 ? __tan_fma4 : -+ HAS_YMM_USABLE ? __tan_avx : __tan_sse2)); - - # define tan __tan_sse2 - #endif -diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c -index 65b0ee9..76d146c 100644 ---- a/sysdeps/x86_64/multiarch/init-arch.c -+++ b/sysdeps/x86_64/multiarch/init-arch.c -@@ -1,6 +1,6 @@ - /* Initialize CPU feature data. - This file is part of the GNU C Library. -- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>. - - The GNU C Library is free software; you can redistribute it and/or -@@ -144,6 +144,18 @@ __init_cpu_features (void) - else - kind = arch_kind_other; - -+ if (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_AVX) -+ { -+ /* Reset the AVX bit in case OSXSAVE is disabled. */ -+ if ((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_OSXSAVE) != 0 -+ && ({ unsigned int xcrlow; -+ unsigned int xcrhigh; -+ asm ("xgetbv" -+ : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0)); -+ (xcrlow & 6) == 6; })) -+ __cpu_features.feature[index_YMM_Usable] |= bit_YMM_Usable; -+ } -+ - __cpu_features.family = family; - __cpu_features.model = model; - atomic_write_barrier (); -diff --git a/sysdeps/x86_64/multiarch/init-arch.h b/sysdeps/x86_64/multiarch/init-arch.h -index 2a1df39..2dc75ab 100644 ---- a/sysdeps/x86_64/multiarch/init-arch.h -+++ b/sysdeps/x86_64/multiarch/init-arch.h -@@ -1,5 +1,5 @@ - /* This file is part of the GNU C Library. -- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public -@@ -22,11 +22,13 @@ - #define bit_Prefer_SSE_for_memop (1 << 3) - #define bit_Fast_Unaligned_Load (1 << 4) - #define bit_Prefer_PMINUB_for_stringop (1 << 5) -+#define bit_YMM_Usable (1 << 6) - - #define bit_SSE2 (1 << 26) - #define bit_SSSE3 (1 << 9) - #define bit_SSE4_1 (1 << 19) - #define bit_SSE4_2 (1 << 20) -+#define bit_OSXSAVE (1 << 27) - #define bit_AVX (1 << 28) - #define bit_POPCOUNT (1 << 23) - #define bit_FMA (1 << 12) -@@ -48,6 +50,7 @@ - # define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE - # define index_Fast_Unaligned_Load FEATURE_INDEX_1*FEATURE_SIZE - # define index_Prefer_PMINUB_for_stringop FEATURE_INDEX_1*FEATURE_SIZE -+# define index_YMM_Usable FEATURE_INDEX_1*FEATURE_SIZE - - #else /* __ASSEMBLER__ */ - -@@ -92,7 +95,7 @@ extern struct cpu_features - - - extern void __init_cpu_features (void) attribute_hidden; --#define INIT_ARCH()\ -+# define INIT_ARCH() \ - do \ - if (__cpu_features.kind == arch_kind_unknown) \ - __init_cpu_features (); \ -@@ -125,23 +128,21 @@ extern const struct cpu_features *__get_cpu_features (void) - # define index_Slow_BSF FEATURE_INDEX_1 - # define index_Prefer_SSE_for_memop FEATURE_INDEX_1 - # define index_Fast_Unaligned_Load FEATURE_INDEX_1 -+# define index_YMM_Usable FEATURE_INDEX_1 - --#define HAS_ARCH_FEATURE(idx, bit) \ -- ((__get_cpu_features ()->feature[idx] & (bit)) != 0) -+# define HAS_ARCH_FEATURE(name) \ -+ ((__get_cpu_features ()->feature[index_##name] & (bit_##name)) != 0) - --#define HAS_FAST_REP_STRING \ -- HAS_ARCH_FEATURE (index_Fast_Rep_String, bit_Fast_Rep_String) -+# define HAS_FAST_REP_STRING HAS_ARCH_FEATURE (Fast_Rep_String) - --#define HAS_FAST_COPY_BACKWARD \ -- HAS_ARCH_FEATURE (index_Fast_Copy_Backward, bit_Fast_Copy_Backward) -+# define HAS_FAST_COPY_BACKWARD HAS_ARCH_FEATURE (Fast_Copy_Backward) - --#define HAS_SLOW_BSF \ -- HAS_ARCH_FEATURE (index_Slow_BSF, bit_Slow_BSF) -+# define HAS_SLOW_BSF HAS_ARCH_FEATURE (Slow_BSF) - --#define HAS_PREFER_SSE_FOR_MEMOP \ -- HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) -+# define HAS_PREFER_SSE_FOR_MEMOP HAS_ARCH_FEATURE (Prefer_SSE_for_memop) - --#define HAS_FAST_UNALIGNED_LOAD \ -- HAS_ARCH_FEATURE (index_Fast_Unaligned_Load, bit_Fast_Unaligned_Load) -+# define HAS_FAST_UNALIGNED_LOAD HAS_ARCH_FEATURE (Fast_Unaligned_Load) -+ -+# define HAS_YMM_USABLE HAS_ARCH_FEATURE (YMM_Usable) - - #endif /* __ASSEMBLER__ */ --- -1.7.9 - diff --git a/multilib-testing/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch b/multilib-testing/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch deleted file mode 100644 index 483b28532..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch +++ /dev/null @@ -1,297 +0,0 @@ -diff --git a/posix/confstr.c b/posix/confstr.c -index 3c9566d..cad6561 100644 ---- a/posix/confstr.c -+++ b/posix/confstr.c -@@ -35,6 +34,10 @@ confstr (name, buf, len) - const char *string = ""; - size_t string_len = 1; - -+ /* Note that this buffer must be large enough for the longest strings -+ used below. */ -+ char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"]; -+ - switch (name) - { - case _CS_PATH: -@@ -53,59 +56,55 @@ confstr (name, buf, len) - wint_t types are no greater than the width of type long. - - Currently this means all environment which the system allows. */ -- { -- char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"]; -- -- string_len = 0; -+ string_len = 0; - #ifndef _POSIX_V7_ILP32_OFF32 -- if (__sysconf (_SC_V7_ILP32_OFF32) > 0) -+ if (__sysconf (_SC_V7_ILP32_OFF32) > 0) - #endif - #if !defined _POSIX_V7_ILP32_OFF32 || _POSIX_V7_ILP32_OFF32 > 0 -- { -- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32", -- sizeof "POSIX_V7_ILP32_OFF32" - 1); -- string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1; -- } -+ { -+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32", -+ sizeof "POSIX_V7_ILP32_OFF32" - 1); -+ string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1; -+ } - #endif - #ifndef _POSIX_V7_ILP32_OFFBIG -- if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0) -+ if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0) - #endif - #if !defined _POSIX_V7_ILP32_OFFBIG || _POSIX_V7_ILP32_OFFBIG > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG", -- sizeof "POSIX_V7_ILP32_OFFBIG" - 1); -- string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG", -+ sizeof "POSIX_V7_ILP32_OFFBIG" - 1); -+ string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1; -+ } - #endif - #ifndef _POSIX_V7_LP64_OFF64 -- if (__sysconf (_SC_V7_LP64_OFF64) > 0) -+ if (__sysconf (_SC_V7_LP64_OFF64) > 0) - #endif - #if !defined _POSIX_V7_LP64_OFF64 || _POSIX_V7_LP64_OFF64 > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64", -- sizeof "POSIX_V7_LP64_OFF64" - 1); -- string_len += sizeof "POSIX_V7_LP64_OFF64" - 1; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64", -+ sizeof "POSIX_V7_LP64_OFF64" - 1); -+ string_len += sizeof "POSIX_V7_LP64_OFF64" - 1; -+ } - #endif - #ifndef _POSIX_V7_LPBIG_OFFBIG -- if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0) -+ if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0) - #endif - #if !defined _POSIX_V7_LPBIG_OFFBIG || _POSIX_V7_LPBIG_OFFBIG > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG", -- sizeof "POSIX_V7_LPBIG_OFFBIG" - 1); -- string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1; -- } --#endif -- restenvs[string_len++] = '\0'; -- string = restenvs; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG", -+ sizeof "POSIX_V7_LPBIG_OFFBIG" - 1); -+ string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1; -+ } -+#endif -+ restenvs[string_len++] = '\0'; -+ string = restenvs; - break; - - case _CS_V6_WIDTH_RESTRICTED_ENVS: -@@ -116,59 +115,55 @@ confstr (name, buf, len) - wint_t types are no greater than the width of type long. - - Currently this means all environment which the system allows. */ -- { -- char restenvs[4 * sizeof "POSIX_V6_LPBIG_OFFBIG"]; -- -- string_len = 0; -+ string_len = 0; - #ifndef _POSIX_V6_ILP32_OFF32 -- if (__sysconf (_SC_V6_ILP32_OFF32) > 0) -+ if (__sysconf (_SC_V6_ILP32_OFF32) > 0) - #endif - #if !defined _POSIX_V6_ILP32_OFF32 || _POSIX_V6_ILP32_OFF32 > 0 -- { -- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32", -- sizeof "POSIX_V6_ILP32_OFF32" - 1); -- string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1; -- } -+ { -+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32", -+ sizeof "POSIX_V6_ILP32_OFF32" - 1); -+ string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1; -+ } - #endif - #ifndef _POSIX_V6_ILP32_OFFBIG -- if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0) -+ if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0) - #endif - #if !defined _POSIX_V6_ILP32_OFFBIG || _POSIX_V6_ILP32_OFFBIG > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG", -- sizeof "POSIX_V6_ILP32_OFFBIG" - 1); -- string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG", -+ sizeof "POSIX_V6_ILP32_OFFBIG" - 1); -+ string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1; -+ } - #endif - #ifndef _POSIX_V6_LP64_OFF64 -- if (__sysconf (_SC_V6_LP64_OFF64) > 0) -+ if (__sysconf (_SC_V6_LP64_OFF64) > 0) - #endif - #if !defined _POSIX_V6_LP64_OFF64 || _POSIX_V6_LP64_OFF64 > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64", -- sizeof "POSIX_V6_LP64_OFF64" - 1); -- string_len += sizeof "POSIX_V6_LP64_OFF64" - 1; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64", -+ sizeof "POSIX_V6_LP64_OFF64" - 1); -+ string_len += sizeof "POSIX_V6_LP64_OFF64" - 1; -+ } - #endif - #ifndef _POSIX_V6_LPBIG_OFFBIG -- if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0) -+ if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0) - #endif - #if !defined _POSIX_V6_LPBIG_OFFBIG || _POSIX_V6_LPBIG_OFFBIG > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG", -- sizeof "POSIX_V6_LPBIG_OFFBIG" - 1); -- string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1; -- } --#endif -- restenvs[string_len++] = '\0'; -- string = restenvs; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG", -+ sizeof "POSIX_V6_LPBIG_OFFBIG" - 1); -+ string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1; -+ } -+#endif -+ restenvs[string_len++] = '\0'; -+ string = restenvs; - break; - - case _CS_V5_WIDTH_RESTRICTED_ENVS: -@@ -179,59 +174,55 @@ confstr (name, buf, len) - wint_t types are no greater than the width of type long. - - Currently this means all environment which the system allows. */ -- { -- char restenvs[4 * sizeof "XBS5_LPBIG_OFFBIG"]; -- -- string_len = 0; -+ string_len = 0; - #ifndef _XBS5_ILP32_OFF32 -- if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0) -+ if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0) - #endif - #if !defined _XBS5_ILP32_OFF32 || _XBS5_ILP32_OFF32 > 0 -- { -- memcpy (restenvs + string_len, "XBS5_ILP32_OFF32", -- sizeof "XBS5_ILP32_OFF32" - 1); -- string_len += sizeof "XBS5_ILP32_OFF32" - 1; -- } -+ { -+ memcpy (restenvs + string_len, "XBS5_ILP32_OFF32", -+ sizeof "XBS5_ILP32_OFF32" - 1); -+ string_len += sizeof "XBS5_ILP32_OFF32" - 1; -+ } - #endif - #ifndef _XBS5_ILP32_OFFBIG -- if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0) -+ if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0) - #endif - #if !defined _XBS5_ILP32_OFFBIG || _XBS5_ILP32_OFFBIG > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG", -- sizeof "XBS5_ILP32_OFFBIG" - 1); -- string_len += sizeof "XBS5_ILP32_OFFBIG" - 1; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG", -+ sizeof "XBS5_ILP32_OFFBIG" - 1); -+ string_len += sizeof "XBS5_ILP32_OFFBIG" - 1; -+ } - #endif - #ifndef _XBS5_LP64_OFF64 -- if (__sysconf (_SC_XBS5_LP64_OFF64) > 0) -+ if (__sysconf (_SC_XBS5_LP64_OFF64) > 0) - #endif - #if !defined _XBS5_LP64_OFF64 || _XBS5_LP64_OFF64 > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "XBS5_LP64_OFF64", -- sizeof "XBS5_LP64_OFF64" - 1); -- string_len += sizeof "XBS5_LP64_OFF64" - 1; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "XBS5_LP64_OFF64", -+ sizeof "XBS5_LP64_OFF64" - 1); -+ string_len += sizeof "XBS5_LP64_OFF64" - 1; -+ } - #endif - #ifndef _XBS5_LPBIG_OFFBIG -- if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0) -+ if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0) - #endif - #if !defined _XBS5_LPBIG_OFFBIG || _XBS5_LPBIG_OFFBIG > 0 -- { -- if (string_len) -- restenvs[string_len++] = '\n'; -- memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG", -- sizeof "XBS5_LPBIG_OFFBIG" - 1); -- string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1; -- } --#endif -- restenvs[string_len++] = '\0'; -- string = restenvs; -- } -+ { -+ if (string_len) -+ restenvs[string_len++] = '\n'; -+ memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG", -+ sizeof "XBS5_LPBIG_OFFBIG" - 1); -+ string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1; -+ } -+#endif -+ restenvs[string_len++] = '\0'; -+ string = restenvs; - break; - - case _CS_XBS5_ILP32_OFF32_CFLAGS: diff --git a/multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch b/multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch deleted file mode 100644 index d28237f85..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/timezone/Makefile b/timezone/Makefile -index 00bfba6..9e55a6a 100644 ---- a/timezone/Makefile -+++ b/timezone/Makefile -@@ -45,7 +45,6 @@ include ../Makeconfig # Get objpfx defined so we can use it below. - CPPFLAGS-zic = -DNOT_IN_libc - - ifeq ($(have-ksh),yes) --install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab - install-bin-script = tzselect - generated += tzselect - endif -@@ -111,7 +110,3 @@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make - -e 's%@TZDIR@%$(zonedir)%g' < $< > $@.new - chmod 555 $@.new - mv -f $@.new $@ -- --$(addprefix $(inst_zonedir)/,iso3166.tab zone.tab): \ -- $(inst_zonedir)/%: % $(+force) -- $(do-install) diff --git a/multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch b/multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch deleted file mode 100644 index e4f29bc1a..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch +++ /dev/null @@ -1,124 +0,0 @@ -diff --git a/timezone/Makefile b/timezone/Makefile -index e8fb716..d5ea538 100644 ---- a/timezone/Makefile -+++ b/timezone/Makefile -@@ -1,4 +1,4 @@ --# Copyright (C) 1998,1999,2000,2002,2005,2007 Free Software Foundation, Inc. -+# Copyright (C) 1998-2000,2002,2005,2007,2012 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 -@@ -49,33 +49,6 @@ include ../Makeconfig # Get objpfx defined so we can use it below. - - CPPFLAGS-zic = -DNOT_IN_libc - --# z.* use this variable. --define nl -- -- --endef --ifndef avoid-generated --ifndef inhibit_timezone_rules ---include $(addprefix $(objpfx)z.,$(tzfiles)) --endif --endif -- --# Make these absolute file names. --installed-localtime-file := $(firstword $(filter /%,$(inst_localtime-file)) \ -- $(addprefix $(inst_zonedir)/, \ -- $(localtime-file))) --installed-posixrules-file := $(firstword $(filter /%,$(posixrules-file)) \ -- $(addprefix $(inst_zonedir)/, \ -- $(posixrules-file))) -- --ifeq ($(cross-compiling),no) --# Don't try to install the zoneinfo files since we can't run zic. --install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \ -- $(zonenames:%=posix/%) \ -- $(zonenames:%=right/%)) \ -- $(installed-localtime-file) $(installed-posixrules-file) --endif -- - ifeq ($(have-ksh),yes) - install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab - install-bin-script = tzselect -@@ -85,79 +58,6 @@ endif - include ../Rules - - --$(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile --# Kludge alert: we use an implicit rule (in what we are generating here) --# because that is the only way to tell Make that the one command builds all --# the files. --# The extra kludge for the $(tzlinks) files is necessary since running zic --# this file requires all other files to exist. Blech! -- $(make-target-directory) -- (echo 'define $*-zones' ;\ -- $(AWK) '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^ ;\ -- echo 'endef' ;\ -- echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))' ;\ -- echo 'ifdef $*-zones' ;\ -- if test x$(findstring $*, $(tzlinks)) != x; then \ -- echo '$$(addprefix $$(inst_zonedir)/right/,$$($*-zones)): \';\ -- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/right/,$$($$t-zones)))' ;\ -- echo '$$(addprefix $$(inst_zonedir)/posix/,$$($*-zones)): \';\ -- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/posix/,$$($$t-zones)))' ;\ -- echo '$$(addprefix $$(inst_zonedir)/,$$($*-zones)): \' ;\ -- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/,$$($$t-zones)))' ;\ -- fi ;\ -- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/right/,$$($*-zones)): \' ;\ -- echo '$< $$(objpfx)zic leapseconds yearistype' ;\ -- echo ' $$(tzcompile)' ;\ -- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/posix/,$$($*-zones)): \' ;\ -- echo '$< $$(objpfx)zic /dev/null yearistype' ;\ -- echo ' $$(tzcompile)' ;\ -- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/,$$($*-zones)): \' ;\ -- echo '$< $$(objpfx)zic $$(leapseconds) yearistype' ;\ -- echo ' $$(tzcompile)' ;\ -- echo 'endif' ;\ -- echo 'zonenames := $$(zonenames) $$($*-zones)' ;\ -- ) > $@.new -- mv $@.new $@ -- --.PHONY: echo-zonenames --echo-zonenames: -- @echo 'Known zones: $(zonenames)' -- -- --# We have to use `-d $(inst_zonedir)' to explictly tell zic where to --# place the output files although $(zonedir) is compiled in. But the --# user might have set $(install_root) on the command line of `make install'. --zic-cmd = $(built-program-cmd) -d $(inst_zonedir) --tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \ -- -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $< -- --# The source files specify the zone names relative to the -d directory, --# so for the posix/ and right/ flavors we need to pass -d $(inst_zonedir)/posix --# and the like. This magic extracts /posix or /right if it's the first --# component after $(inst_zonedir) in the target name $@. --target-zone-flavor = $(filter /posix /right, \ -- /$(firstword $(subst /, , \ -- $(patsubst $(inst_zonedir)/%,%,$@)))) -- --ifdef localtime --$(installed-localtime-file): $(inst_zonedir)/$(localtime) $(objpfx)zic \ -- $(+force) -- $(make-target-directory) -- if test -r $@; then \ -- echo Site timezone NOT reset to Factory.; \ -- else \ -- rm -f $@T; \ -- $(SHELL) $(..)scripts/rellns-sh $< $@T; \ -- mv -f $@T $@; \ -- fi --endif --ifdef posixrules --$(installed-posixrules-file): $(inst_zonedir)/$(posixrules) $(objpfx)zic \ -- $(+force) -- $(zic-cmd) -p $(posixrules) --endif -- -- - $(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o - - tz-cflags = -DTZDIR='"$(zonedir)"' \ diff --git a/multilib-testing/lib32-glibc/glibc-2.15-feraiseexcept-plt.patch b/multilib-testing/lib32-glibc/glibc-2.15-feraiseexcept-plt.patch deleted file mode 100644 index c41acc169..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-feraiseexcept-plt.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/sysdeps/i386/fpu/feupdateenv.c b/sysdeps/i386/fpu/feupdateenv.c -index 70f9ee2..6e2ce35 100644 ---- a/sysdeps/i386/fpu/feupdateenv.c -+++ b/sysdeps/i386/fpu/feupdateenv.c -@@ -1,5 +1,5 @@ - /* Install given floating-point environment and raise exceptions. -- Copyright (C) 1997,99,2000,01,07,2010 Free Software Foundation, Inc. -+ Copyright (C) 1997,99,2000,01,07,2010,2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - -@@ -44,7 +44,7 @@ __feupdateenv (const fenv_t *envp) - /* Raise the saved exception. Incidently for us the implementation - defined format of the values in objects of type fexcept_t is the - same as the ones specified using the FE_* constants. */ -- feraiseexcept ((int) temp); -+ __feraiseexcept ((int) temp); - - /* Success. */ - return 0; diff --git a/multilib-testing/lib32-glibc/glibc-2.15-fix-res_query-assert.patch b/multilib-testing/lib32-glibc/glibc-2.15-fix-res_query-assert.patch deleted file mode 100644 index a894da9c7..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-fix-res_query-assert.patch +++ /dev/null @@ -1,51 +0,0 @@ ---- a/resolv/res_query.c -+++ a/resolv/res_query.c -@@ -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/multilib-testing/lib32-glibc/glibc-2.15-fmtmsg-locking.patch b/multilib-testing/lib32-glibc/glibc-2.15-fmtmsg-locking.patch deleted file mode 100644 index f5976abd9..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-fmtmsg-locking.patch +++ /dev/null @@ -1,148 +0,0 @@ -diff --git a/stdlib/fmtmsg.c b/stdlib/fmtmsg.c -index 9203317..4c02302 100644 ---- a/stdlib/fmtmsg.c -+++ b/stdlib/fmtmsg.c -@@ -103,7 +103,6 @@ fmtmsg (long int classification, const char *label, int severity, - const char *text, const char *action, const char *tag) - { - __libc_once_define (static, once); -- int result = MM_OK; - struct severity_info *severity_rec; - - /* Make sure everything is initialized. */ -@@ -124,17 +123,6 @@ fmtmsg (long int classification, const char *label, int severity, - return MM_NOTOK; - } - -- for (severity_rec = severity_list; severity_rec != NULL; -- severity_rec = severity_rec->next) -- if (severity == severity_rec->severity) -- /* Bingo. */ -- break; -- -- /* If we don't know anything about the severity level return an error. */ -- if (severity_rec == NULL) -- return MM_NOTOK; -- -- - #ifdef __libc_ptf_call - /* We do not want this call to be cut short by a thread - cancellation. Therefore disable cancellation for now. */ -@@ -143,54 +131,73 @@ fmtmsg (long int classification, const char *label, int severity, - 0); - #endif - -- /* Now we can print. */ -- if (classification & MM_PRINT) -- { -- int do_label = (print & label_mask) && label != MM_NULLLBL; -- int do_severity = (print & severity_mask) && severity != MM_NULLSEV; -- int do_text = (print & text_mask) && text != MM_NULLTXT; -- int do_action = (print & action_mask) && action != MM_NULLACT; -- int do_tag = (print & tag_mask) && tag != MM_NULLTAG; -- -- if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n", -- do_label ? label : "", -- do_label && (do_severity | do_text | do_action | do_tag) -- ? ": " : "", -- do_severity ? severity_rec->string : "", -- do_severity && (do_text | do_action | do_tag) -- ? ": " : "", -- do_text ? text : "", -- do_text && (do_action | do_tag) ? "\n" : "", -- do_action ? "TO FIX: " : "", -- do_action ? action : "", -- do_action && do_tag ? " " : "", -- do_tag ? tag : "") < 0) -- /* Oh, oh. An error occurred during the output. */ -- result = MM_NOMSG; -- } -+ __libc_lock_lock (lock); - -- if (classification & MM_CONSOLE) -+ for (severity_rec = severity_list; severity_rec != NULL; -+ severity_rec = severity_rec->next) -+ if (severity == severity_rec->severity) -+ /* Bingo. */ -+ break; -+ -+ /* If we don't know anything about the severity level return an error. */ -+ int result = MM_NOTOK; -+ if (severity_rec != NULL) - { -- int do_label = label != MM_NULLLBL; -- int do_severity = severity != MM_NULLSEV; -- int do_text = text != MM_NULLTXT; -- int do_action = action != MM_NULLACT; -- int do_tag = tag != MM_NULLTAG; -- -- syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n", -- do_label ? label : "", -- do_label && (do_severity | do_text | do_action | do_tag) -- ? ": " : "", -- do_severity ? severity_rec->string : "", -- do_severity && (do_text | do_action | do_tag) ? ": " : "", -- do_text ? text : "", -- do_text && (do_action | do_tag) ? "\n" : "", -- do_action ? "TO FIX: " : "", -- do_action ? action : "", -- do_action && do_tag ? " " : "", -- do_tag ? tag : ""); -+ result = MM_OK; -+ -+ /* Now we can print. */ -+ if (classification & MM_PRINT) -+ { -+ int do_label = (print & label_mask) && label != MM_NULLLBL; -+ int do_severity = (print & severity_mask) && severity != MM_NULLSEV; -+ int do_text = (print & text_mask) && text != MM_NULLTXT; -+ int do_action = (print & action_mask) && action != MM_NULLACT; -+ int do_tag = (print & tag_mask) && tag != MM_NULLTAG; -+ int need_colon = (do_label -+ && (do_severity | do_text | do_action | do_tag)); -+ -+ if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n", -+ do_label ? label : "", -+ need_colon ? ": " : "", -+ do_severity ? severity_rec->string : "", -+ do_severity && (do_text | do_action | do_tag) -+ ? ": " : "", -+ do_text ? text : "", -+ do_text && (do_action | do_tag) ? "\n" : "", -+ do_action ? "TO FIX: " : "", -+ do_action ? action : "", -+ do_action && do_tag ? " " : "", -+ do_tag ? tag : "") < 0) -+ /* Oh, oh. An error occurred during the output. */ -+ result = MM_NOMSG; -+ } -+ -+ if (classification & MM_CONSOLE) -+ { -+ int do_label = label != MM_NULLLBL; -+ int do_severity = severity != MM_NULLSEV; -+ int do_text = text != MM_NULLTXT; -+ int do_action = action != MM_NULLACT; -+ int do_tag = tag != MM_NULLTAG; -+ int need_colon = (do_label -+ && (do_severity | do_text | do_action | do_tag)); -+ -+ syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n", -+ do_label ? label : "", -+ need_colon ? ": " : "", -+ do_severity ? severity_rec->string : "", -+ do_severity && (do_text | do_action | do_tag) ? ": " : "", -+ do_text ? text : "", -+ do_text && (do_action | do_tag) ? "\n" : "", -+ do_action ? "TO FIX: " : "", -+ do_action ? action : "", -+ do_action && do_tag ? " " : "", -+ do_tag ? tag : ""); -+ } - } - -+ __libc_lock_unlock (lock); -+ - #ifdef __libc_ptf_call - __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); - #endif diff --git a/multilib-testing/lib32-glibc/glibc-2.15-gb18030.patch.gz b/multilib-testing/lib32-glibc/glibc-2.15-gb18030.patch.gz Binary files differdeleted file mode 100644 index dde59c056..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-gb18030.patch.gz +++ /dev/null diff --git a/multilib-testing/lib32-glibc/glibc-2.15-ifunc.patch b/multilib-testing/lib32-glibc/glibc-2.15-ifunc.patch deleted file mode 100644 index 115afa02a..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-ifunc.patch +++ /dev/null @@ -1,262 +0,0 @@ -diff --git a/Makeconfig b/Makeconfig -index 2db2821..68547b2 100644 ---- a/Makeconfig -+++ b/Makeconfig -@@ -900,6 +900,12 @@ else - libdl = $(common-objpfx)dlfcn/libdl.a - endif - -+ifeq ($(build-shared),yes) -+libm = $(common-objpfx)math/libm.so$(libm.so-version) -+else -+libm = $(common-objpfx)math/libm.a -+endif -+ - # These are the subdirectories containing the library source. The order - # is more or less arbitrary. The sorting step will take care of the - # dependencies. -diff --git a/elf/Makefile b/elf/Makefile -index 052e763..3f1772a 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -124,7 +124,8 @@ distribute := rtld-Rules \ - tst-initordera1.c tst-initordera2.c tst-initorderb1.c \ - tst-initorderb2.c tst-initordera3.c tst-initordera4.c \ - tst-initorder.c \ -- tst-initorder2.c -+ tst-initorder2.c \ -+ tst-relsort1.c tst-relsort1mod1.c tst-relsort1mod2.c - - CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables - CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables -@@ -227,7 +228,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - tst-audit1 tst-audit2 \ - tst-stackguard1 tst-addr1 tst-thrlock \ - tst-unique1 tst-unique2 tst-unique3 tst-unique4 \ -- tst-initorder tst-initorder2 -+ tst-initorder tst-initorder2 tst-relsort1 - # reldep9 - test-srcs = tst-pathopt - selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) -@@ -290,7 +291,9 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - tst-initordera1 tst-initorderb1 \ - tst-initordera2 tst-initorderb2 \ - tst-initordera3 tst-initordera4 \ -- tst-initorder2a tst-initorder2b tst-initorder2c tst-initorder2d -+ tst-initorder2a tst-initorder2b tst-initorder2c \ -+ tst-initorder2d \ -+ tst-relsort1mod1 tst-relsort1mod2 - ifeq (yes,$(have-initfini-array)) - modules-names += tst-array2dep tst-array5dep - endif -@@ -1195,3 +1198,9 @@ CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS) - CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS) - CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS) - endif -+ -+$(objpfx)tst-relsort1: $(libdl) -+$(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so -+$(objpfx)tst-relsort1mod2.so: $(libm) -+$(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \ -+ $(objpfx)tst-relsort1mod2.so -diff --git a/elf/dl-open.c b/elf/dl-open.c -index a0b5c50..a56bdc1 100644 ---- a/elf/dl-open.c -+++ b/elf/dl-open.c -@@ -1,5 +1,5 @@ - /* Load a shared object at runtime, relocate it, and run its initializer. -- Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1996-2007, 2009, 2010, 2011, 2012 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 -@@ -302,45 +302,109 @@ dl_open_worker (void *a) - if (GLRO(dl_lazy)) - reloc_mode |= mode & RTLD_LAZY; - -- /* Relocate the objects loaded. We do this in reverse order so that copy -- relocs of earlier objects overwrite the data written by later objects. */ -- -+ /* Sort the objects by dependency for the relocation process. This -+ allows IFUNC relocations to work and it also means copy -+ relocation of dependencies are if necessary overwritten. */ -+ size_t nmaps = 0; - struct link_map *l = new; -- while (l->l_next) -- l = l->l_next; -- while (1) -+ do -+ { -+ if (! l->l_real->l_relocated) -+ ++nmaps; -+ l = l->l_next; -+ } -+ while (l != NULL); -+ struct link_map *maps[nmaps]; -+ nmaps = 0; -+ l = new; -+ do - { - if (! l->l_real->l_relocated) -+ maps[nmaps++] = l; -+ l = l->l_next; -+ } -+ while (l != NULL); -+ if (nmaps > 1) -+ { -+ char seen[nmaps]; -+ memset (seen, '\0', nmaps); -+ size_t i = 0; -+ while (1) - { --#ifdef SHARED -- if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) -+ ++seen[i]; -+ struct link_map *thisp = maps[i]; -+ -+ /* Find the last object in the list for which the current one is -+ a dependency and move the current object behind the object -+ with the dependency. */ -+ size_t k = nmaps - 1; -+ while (k > i) - { -- /* If this here is the shared object which we want to profile -- make sure the profile is started. We can find out whether -- this is necessary or not by observing the `_dl_profile_map' -- variable. If was NULL but is not NULL afterwars we must -- start the profiling. */ -- struct link_map *old_profile_map = GL(dl_profile_map); -+ struct link_map **runp = maps[k]->l_initfini; -+ if (runp != NULL) -+ /* Look through the dependencies of the object. */ -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == thisp, 0)) -+ { -+ /* Move the current object to the back past the last -+ object with it as the dependency. */ -+ memmove (&maps[i], &maps[i + 1], -+ (k - i) * sizeof (maps[0])); -+ maps[k] = thisp; -+ -+ if (seen[i + 1] > 1) -+ { -+ ++i; -+ goto next_clear; -+ } -+ -+ char this_seen = seen[i]; -+ memmove (&seen[i], &seen[i + 1], -+ (k - i) * sizeof (seen[0])); -+ seen[k] = this_seen; -+ -+ goto next; -+ } -+ -+ --k; -+ } - -- _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1); -+ if (++i == nmaps) -+ break; -+ next_clear: -+ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); -+ next:; -+ } -+ } - -- if (old_profile_map == NULL && GL(dl_profile_map) != NULL) -- { -- /* We must prepare the profiling. */ -- _dl_start_profile (); -+ for (size_t i = nmaps; i-- > 0; ) -+ { -+ l = maps[i]; - -- /* Prevent unloading the object. */ -- GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE; -- } -+#ifdef SHARED -+ if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) -+ { -+ /* If this here is the shared object which we want to profile -+ make sure the profile is started. We can find out whether -+ this is necessary or not by observing the `_dl_profile_map' -+ variable. If it was NULL but is not NULL afterwars we must -+ start the profiling. */ -+ struct link_map *old_profile_map = GL(dl_profile_map); -+ -+ _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1); -+ -+ if (old_profile_map == NULL && GL(dl_profile_map) != NULL) -+ { -+ /* We must prepare the profiling. */ -+ _dl_start_profile (); -+ -+ /* Prevent unloading the object. */ -+ GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE; - } -- else --#endif -- _dl_relocate_object (l, l->l_scope, reloc_mode, 0); - } -- -- if (l == new) -- break; -- l = l->l_prev; -+ else -+#endif -+ _dl_relocate_object (l, l->l_scope, reloc_mode, 0); - } - - /* If the file is not loaded now as a dependency, add the search -diff --git a/elf/tst-relsort1.c b/elf/tst-relsort1.c -new file mode 100644 -index 0000000..972100c ---- /dev/null -+++ b/elf/tst-relsort1.c -@@ -0,0 +1,19 @@ -+#include <dlfcn.h> -+#include <stdio.h> -+ -+ -+static int -+do_test () -+{ -+ const char lib[] = "$ORIGIN/tst-relsort1mod1.so"; -+ void *h = dlopen (lib, RTLD_NOW); -+ if (h == NULL) -+ { -+ puts (dlerror ()); -+ return 1; -+ } -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/elf/tst-relsort1mod1.c b/elf/tst-relsort1mod1.c -new file mode 100644 -index 0000000..9e4a943 ---- /dev/null -+++ b/elf/tst-relsort1mod1.c -@@ -0,0 +1,7 @@ -+extern int foo (double); -+ -+int -+bar (void) -+{ -+ return foo (1.2); -+} -diff --git a/elf/tst-relsort1mod2.c b/elf/tst-relsort1mod2.c -new file mode 100644 -index 0000000..a2c3e55 ---- /dev/null -+++ b/elf/tst-relsort1mod2.c -@@ -0,0 +1,7 @@ -+#include <math.h> -+ -+int -+foo (double d) -+{ -+ return floor (d) != 0.0; -+} diff --git a/multilib-testing/lib32-glibc/glibc-2.15-lddebug-scopes.patch b/multilib-testing/lib32-glibc/glibc-2.15-lddebug-scopes.patch deleted file mode 100644 index 808cf8d7c..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-lddebug-scopes.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0c95ab64cb4ec0d22bb222647d9d20c7b4903e38 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab <schwab@redhat.com> -Date: Fri, 7 Oct 2011 09:31:27 +0200 -Subject: [PATCH] Horrible workaround for horribly broken software - ---- - elf/rtld.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -diff --git a/elf/rtld.c b/elf/rtld.c -index 978c609..8422b9f 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -1393,7 +1393,9 @@ of this helper program; chances are you did not intend to run this program.\n\ - 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); -+ if (GLRO(dl_debug_mask)) -+ l->l_name = copy; - } - - /* Add the vDSO to the object list. */ --- -1.7.3.4 - diff --git a/multilib-testing/lib32-glibc/glibc-2.15-multiarch-x86-strcmp.patch b/multilib-testing/lib32-glibc/glibc-2.15-multiarch-x86-strcmp.patch deleted file mode 100644 index 38c9e617f..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-multiarch-x86-strcmp.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c b/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c -index d10e872..d4fcd2b 100644 ---- a/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c -+++ b/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c -@@ -6,6 +6,8 @@ extern __typeof (strcasecmp_l) __strcasecmp_l_nonascii; - #define USE_IN_EXTENDED_LOCALE_MODEL 1 - #include <string/strcasecmp.c> - -+strong_alias (__strcasecmp_l_nonascii, __strcasecmp_l_ia32) -+ - /* The needs of strcasecmp in libc are minimal, no need to go through - the IFUNC. */ - strong_alias (__strcasecmp_l_nonascii, __GI___strcasecmp_l) -diff --git a/sysdeps/i386/i686/multiarch/strcmp.S b/sysdeps/i386/i686/multiarch/strcmp.S -index 5410d17..b3b9eb8 100644 ---- a/sysdeps/i386/i686/multiarch/strcmp.S -+++ b/sysdeps/i386/i686/multiarch/strcmp.S -@@ -111,6 +111,7 @@ END(STRCMP) - # endif - #endif - --#ifndef USE_AS_STRNCMP -+#if !defined USE_AS_STRNCMP && !defined USE_AS_STRCASECMP_L \ -+ && !defined USE_AS_STRNCASECMP_L - # include "../strcmp.S" - #endif -diff --git a/sysdeps/i386/i686/multiarch/strncase_l-c.c b/sysdeps/i386/i686/multiarch/strncase_l-c.c -index 0c68b8d..7e601af 100644 ---- a/sysdeps/i386/i686/multiarch/strncase_l-c.c -+++ b/sysdeps/i386/i686/multiarch/strncase_l-c.c -@@ -6,6 +6,8 @@ extern __typeof (strncasecmp_l) __strncasecmp_l_nonascii; - #define USE_IN_EXTENDED_LOCALE_MODEL 1 - #include <string/strncase.c> - -+strong_alias (__strncasecmp_l_nonascii, __strncasecmp_l_ia32) -+ - /* The needs of strcasecmp in libc are minimal, no need to go through - the IFUNC. */ - strong_alias (__strncasecmp_l_nonascii, __GI___strncasecmp_l) diff --git a/multilib-testing/lib32-glibc/glibc-2.15-nearbyintf-rounding.patch b/multilib-testing/lib32-glibc/glibc-2.15-nearbyintf-rounding.patch deleted file mode 100644 index b2bb9caac..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-nearbyintf-rounding.patch +++ /dev/null @@ -1,75 +0,0 @@ -diff --git a/math/libm-test.inc b/math/libm-test.inc -index c8186c8..1016753 100644 ---- a/math/libm-test.inc -+++ b/math/libm-test.inc -@@ -4632,6 +4632,29 @@ nearbyint_test (void) - TEST_f_f (nearbyint, 524286.75, 524287.0); - TEST_f_f (nearbyint, 524288.75, 524289.0); - -+ TEST_f_f (nearbyint, 1048576.75, 1048577.0); -+ TEST_f_f (nearbyint, 2097152.75, 2097153.0); -+ TEST_f_f (nearbyint, 2492472.75, 2492473.0); -+ TEST_f_f (nearbyint, 2886220.75, 2886221.0); -+ TEST_f_f (nearbyint, 3058792.75, 3058793.0); -+ TEST_f_f (nearbyint, -1048576.75, -1048577.0); -+ TEST_f_f (nearbyint, -2097152.75, -2097153.0); -+ TEST_f_f (nearbyint, -2492472.75, -2492473.0); -+ TEST_f_f (nearbyint, -2886220.75, -2886221.0); -+ TEST_f_f (nearbyint, -3058792.75, -3058793.0); -+#ifndef TEST_FLOAT -+ TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0); -+ TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0); -+ TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0); -+ TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0); -+ TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0); -+ TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0); -+ TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0); -+ TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0); -+ TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0); -+ TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0); -+#endif -+ - END (nearbyint); - } - -diff --git a/sysdeps/ieee754/flt-32/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c -index 04ef9ab..a6d602b 100644 ---- a/sysdeps/ieee754/flt-32/s_nearbyintf.c -+++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c -@@ -30,18 +30,12 @@ __nearbyintf(float x) - { - fenv_t env; - int32_t i0,j0,sx; -- u_int32_t i,i1; - float w,t; - GET_FLOAT_WORD(i0,x); - sx = (i0>>31)&1; - j0 = ((i0>>23)&0xff)-0x7f; - if(j0<23) { - if(j0<0) { -- if((i0&0x7fffffff)==0) return x; -- i1 = (i0&0x07fffff); -- i0 &= 0xfff00000; -- i0 |= ((i1|-i1)>>9)&0x400000; -- SET_FLOAT_WORD(x,i0); - libc_feholdexceptf (&env); - w = TWO23[sx]+x; - t = w-TWO23[sx]; -@@ -49,17 +43,11 @@ __nearbyintf(float x) - GET_FLOAT_WORD(i0,t); - SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31)); - return t; -- } else { -- i = (0x007fffff)>>j0; -- if((i0&i)==0) return x; /* x is integral */ -- i>>=1; -- if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0); - } - } else { - if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */ - else return x; /* x is integral */ - } -- SET_FLOAT_WORD(x,i0); - libc_feholdexceptf (&env); - w = TWO23[sx]+x; - t = w-TWO23[sx]; diff --git a/multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch b/multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch deleted file mode 100644 index c09e79a17..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff --git a/nscd/aicache.c b/nscd/aicache.c -index aaaf80d..e1f1244 100644 ---- a/nscd/aicache.c -+++ b/nscd/aicache.c -@@ -1,5 +1,5 @@ - /* Cache handling for host lookup. -- Copyright (C) 2004-2008, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2004-2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. - -@@ -514,8 +514,9 @@ next_nip: - if (fd != -1) - TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - -- /* If we cannot permanently store the result, so be it. */ -- if (__builtin_expect (db->negtimeout == 0, 0)) -+ /* If we have a transient error or cannot permanently store the -+ result, so be it. */ -+ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) - { - /* Mark the old entry as obsolete. */ - if (dh != NULL) -diff --git a/nscd/grpcache.c b/nscd/grpcache.c -index e9607c6..a698f36 100644 ---- a/nscd/grpcache.c -+++ b/nscd/grpcache.c -@@ -1,5 +1,5 @@ - /* Cache handling for group lookup. -- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - -@@ -120,8 +120,9 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, - else - written = total; - -- /* If we cannot permanently store the result, so be it. */ -- if (db->negtimeout == 0) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) - { - /* Mark the old entry as obsolete. */ - if (dh != NULL) -diff --git a/nscd/hstcache.c b/nscd/hstcache.c -index 4d68ade..c72feaa 100644 ---- a/nscd/hstcache.c -+++ b/nscd/hstcache.c -@@ -1,5 +1,5 @@ - /* Cache handling for host lookup. -- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - -@@ -141,8 +141,9 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, - MSG_NOSIGNAL)) != total) - all_written = false; - -- /* If we cannot permanently store the result, so be it. */ -- if (__builtin_expect (db->negtimeout == 0, 0)) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) - { - /* Mark the old entry as obsolete. */ - if (dh != NULL) -diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c -index 4ac9942..2019991 100644 ---- a/nscd/initgrcache.c -+++ b/nscd/initgrcache.c -@@ -1,5 +1,5 @@ - /* Cache handling for host lookup. -- Copyright (C) 2004-2006, 2008, 2009, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2004-2006, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. - -@@ -202,8 +202,9 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- /* If we cannot permanently store the result, so be it. */ -- if (__builtin_expect (db->negtimeout == 0, 0)) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0)) - { - /* Mark the old entry as obsolete. */ - if (dh != NULL) -diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c -index 49e130c..e2ba09d 100644 ---- a/nscd/pwdcache.c -+++ b/nscd/pwdcache.c -@@ -1,5 +1,5 @@ - /* Cache handling for passwd lookup. -- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - -@@ -124,8 +124,9 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- /* If we cannot permanently store the result, so be it. */ -- if (__builtin_expect (db->negtimeout == 0, 0)) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) - { - /* Mark the old entry as obsolete. */ - if (dh != NULL) -diff --git a/nscd/servicescache.c b/nscd/servicescache.c -index d3d5dce..a6337e3 100644 ---- a/nscd/servicescache.c -+++ b/nscd/servicescache.c -@@ -1,5 +1,5 @@ - /* Cache handling for services lookup. -- Copyright (C) 2007, 2008, 2009, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2007, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@drepper.com>, 2007. - -@@ -108,8 +108,9 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- /* If we cannot permanently store the result, so be it. */ -- if (__builtin_expect (db->negtimeout == 0, 0)) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) - { - /* Mark the old entry as obsolete. */ - if (dh != NULL) diff --git a/multilib-testing/lib32-glibc/glibc-2.15-non-signalling-comparisons.patch b/multilib-testing/lib32-glibc/glibc-2.15-non-signalling-comparisons.patch deleted file mode 100644 index 874f8b4cb..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-non-signalling-comparisons.patch +++ /dev/null @@ -1,886 +0,0 @@ -diff --git a/math/w_acos.c b/math/w_acos.c -index 3138408..0490933 100644 ---- a/math/w_acos.c -+++ b/math/w_acos.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - double - __acos (double x) - { -- if (__builtin_expect (fabs (x) > 1.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabs (x), 1.0), 0) -+ && _LIB_VERSION != _IEEE_) - { - /* acos(|x|>1) */ - feraiseexcept (FE_INVALID); -diff --git a/math/w_acosf.c b/math/w_acosf.c -index 0e41a2c..2500a7d 100644 ---- a/math/w_acosf.c -+++ b/math/w_acosf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - float - __acosf (float x) - { -- if (__builtin_expect (fabsf (x) > 1.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0) -+ && _LIB_VERSION != _IEEE_) - { - /* acos(|x|>1) */ - feraiseexcept (FE_INVALID); -diff --git a/math/w_acosh.c b/math/w_acosh.c -index 0bd2686..d632987 100644 ---- a/math/w_acosh.c -+++ b/math/w_acosh.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,7 @@ - double - __acosh (double x) - { -- if (__builtin_expect (x < 1.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isless (x, 1.0), 0) && _LIB_VERSION != _IEEE_) - /* acosh(x<1) */ - return __kernel_standard (x, x, 29); - -diff --git a/math/w_acoshf.c b/math/w_acoshf.c -index c59bf94..f77df2b 100644 ---- a/math/w_acoshf.c -+++ b/math/w_acoshf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,7 @@ - float - __acoshf (float x) - { -- if (__builtin_expect (x < 1.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isless (x, 1.0f), 0) && _LIB_VERSION != _IEEE_) - /* acosh(x<1) */ - return __kernel_standard_f (x, x, 129); - -diff --git a/math/w_acoshl.c b/math/w_acoshl.c -index 819bdfc..cc823b8 100644 ---- a/math/w_acoshl.c -+++ b/math/w_acoshl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,7 @@ - long double - __acoshl (long double x) - { -- if (__builtin_expect (x < 1.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isless (x, 1.0L), 0) && _LIB_VERSION != _IEEE_) - /* acosh(x<1) */ - return __kernel_standard (x, x, 229); - -diff --git a/math/w_acosl.c b/math/w_acosl.c -index 6417068..05023b4 100644 ---- a/math/w_acosl.c -+++ b/math/w_acosl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - long double - __acosl (long double x) - { -- if (__builtin_expect (fabsl (x) > 1.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsl (x), 1.0L), 0) -+ && _LIB_VERSION != _IEEE_) - { - /* acos(|x|>1) */ - feraiseexcept (FE_INVALID); -diff --git a/math/w_asin.c b/math/w_asin.c -index d4e89ce..0fa9487 100644 ---- a/math/w_asin.c -+++ b/math/w_asin.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - double - __asin (double x) - { -- if (__builtin_expect (fabs (x) > 1.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabs (x), 1.0), 0) -+ && _LIB_VERSION != _IEEE_) - { - /* asin(|x|>1) */ - feraiseexcept (FE_INVALID); -diff --git a/math/w_asinf.c b/math/w_asinf.c -index 270961f..c28edab 100644 ---- a/math/w_asinf.c -+++ b/math/w_asinf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - float - __asinf (float x) - { -- if (__builtin_expect (fabsf (x) > 1.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0) -+ && _LIB_VERSION != _IEEE_) - { - /* asin(|x|>1) */ - feraiseexcept (FE_INVALID); -diff --git a/math/w_asinl.c b/math/w_asinl.c -index 32e5273..e4036d8 100644 ---- a/math/w_asinl.c -+++ b/math/w_asinl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - long double - __asinl (long double x) - { -- if (__builtin_expect (fabsl (x) > 1.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsl (x), 1.0L), 0) -+ && _LIB_VERSION != _IEEE_) - { - /* asin(|x|>1) */ - feraiseexcept (FE_INVALID); -diff --git a/math/w_atanh.c b/math/w_atanh.c -index 1022bd5..190d2e9 100644 ---- a/math/w_atanh.c -+++ b/math/w_atanh.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,8 @@ - double - __atanh (double x) - { -- if (__builtin_expect (fabs (x) >= 1.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreaterequal (fabs (x), 1.0), 0) -+ && _LIB_VERSION != _IEEE_) - return __kernel_standard (x, x, - fabs (x) > 1.0 - ? 30 /* atanh(|x|>1) */ -diff --git a/math/w_atanhf.c b/math/w_atanhf.c -index 3c8cf83..e0c5dc3 100644 ---- a/math/w_atanhf.c -+++ b/math/w_atanhf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,8 @@ - float - __atanhf (float x) - { -- if (__builtin_expect (fabsf (x) >= 1.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreaterequal (fabsf (x), 1.0f), 0) -+ && _LIB_VERSION != _IEEE_) - return __kernel_standard_f (x, x, - fabsf (x) > 1.0f - ? 130 /* atanh(|x|>1) */ -diff --git a/math/w_atanhl.c b/math/w_atanhl.c -index f582acf..319535d 100644 ---- a/math/w_atanhl.c -+++ b/math/w_atanhl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,8 @@ - long double - __atanhl (long double x) - { -- if (__builtin_expect (fabsl (x) >= 1.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreaterequal (fabsl (x), 1.0L), 0) -+ && _LIB_VERSION != _IEEE_) - return __kernel_standard (x, x, - fabsl (x) > 1.0L - ? 230 /* atanh(|x|>1) */ -diff --git a/math/w_exp2.c b/math/w_exp2.c -index bf22326..7a3b0af 100644 ---- a/math/w_exp2.c -+++ b/math/w_exp2.c -@@ -12,7 +12,8 @@ static const double u_threshold = (double) (DBL_MIN_EXP - DBL_MANT_DIG - 1); - double - __exp2 (double x) - { -- if (__builtin_expect (x <= u_threshold || x > o_threshold, 0) -+ if (__builtin_expect (islessequal (x, u_threshold) -+ || isgreater (x, o_threshold), 0) - && _LIB_VERSION != _IEEE_ && __finite (x)) - /* exp2 overflow: 44, exp2 underflow: 45 */ - return __kernel_standard (x, x, 44 + (x <= o_threshold)); -diff --git a/math/w_exp2f.c b/math/w_exp2f.c -index 7215fca..c4e9e94 100644 ---- a/math/w_exp2f.c -+++ b/math/w_exp2f.c -@@ -12,7 +12,8 @@ static const float u_threshold = (float) (FLT_MIN_EXP - FLT_MANT_DIG - 1); - float - __exp2f (float x) - { -- if (__builtin_expect (x <= u_threshold || x > o_threshold, 0) -+ if (__builtin_expect (islessequal (x, u_threshold) -+ || isgreater (x, o_threshold), 0) - && _LIB_VERSION != _IEEE_ && __finitef (x)) - /* exp2 overflow: 144, exp2 underflow: 145 */ - return __kernel_standard_f (x, x, 144 + (x <= o_threshold)); -diff --git a/math/w_exp2l.c b/math/w_exp2l.c -index ac8d231..442a637 100644 ---- a/math/w_exp2l.c -+++ b/math/w_exp2l.c -@@ -13,7 +13,8 @@ static const long double u_threshold - long double - __exp2l (long double x) - { -- if (__builtin_expect (x <= u_threshold || x > o_threshold, 0) -+ if (__builtin_expect (islessequal (x, u_threshold) -+ || isgreater (x, o_threshold), 0) - && _LIB_VERSION != _IEEE_ && __finitel (x)) - /* exp2 overflow: 244, exp2 underflow: 245 */ - return __kernel_standard (x, x, 244 + (x <= o_threshold)); -diff --git a/math/w_j0.c b/math/w_j0.c -index 1dff8b4..f8d3724 100644 ---- a/math/w_j0.c -+++ b/math/w_j0.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - double - j0 (double x) - { -- if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - /* j0(|x|>X_TLOSS) */ - return __kernel_standard (x, x, 34); - -@@ -40,7 +41,8 @@ strong_alias (j0, j0l) - double - y0 (double x) - { -- if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - { - if (x < 0.0) - { -diff --git a/math/w_j0f.c b/math/w_j0f.c -index fc52f26..cef36aa 100644 ---- a/math/w_j0f.c -+++ b/math/w_j0f.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - float - j0f (float x) - { -- if (__builtin_expect (fabsf (x) > (float) X_TLOSS, 0) -+ if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0) - && _LIB_VERSION != _IEEE_) - /* j0(|x|>X_TLOSS) */ - return __kernel_standard_f (x, x, 134); -@@ -38,7 +38,8 @@ j0f (float x) - float - y0f (float x) - { -- if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0) -+ if (__builtin_expect (islessequal (x, 0.0f) -+ || isgreater (x, (float) X_TLOSS), 0) - && _LIB_VERSION != _IEEE_) - { - if (x < 0.0f) -diff --git a/math/w_j0l.c b/math/w_j0l.c -index 8d72d50..144f33c 100644 ---- a/math/w_j0l.c -+++ b/math/w_j0l.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - long double - __j0l (long double x) - { -- if (__builtin_expect (fabsl (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - /* j0(|x|>X_TLOSS) */ - return __kernel_standard (x, x, 234); - -@@ -38,7 +39,8 @@ weak_alias (__j0l, j0l) - long double - __y0l (long double x) - { -- if (__builtin_expect (x <= 0.0L || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0L) || isgreater (x, X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - { - if (x < 0.0L) - { -diff --git a/math/w_j1.c b/math/w_j1.c -index 358e0e1..e9a5357 100644 ---- a/math/w_j1.c -+++ b/math/w_j1.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - double - j1 (double x) - { -- if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - /* j1(|x|>X_TLOSS) */ - return __kernel_standard (x, x, 36); - -@@ -40,7 +41,8 @@ strong_alias (j1, j1l) - double - y1 (double x) - { -- if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - { - if (x < 0.0) - { -diff --git a/math/w_j1f.c b/math/w_j1f.c -index 096fdf5..29bd949 100644 ---- a/math/w_j1f.c -+++ b/math/w_j1f.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - float - j1f (float x) - { -- if (__builtin_expect (fabsf (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsf (x), X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - /* j1(|x|>X_TLOSS) */ - return __kernel_standard_f (x, x, 136); - -@@ -37,7 +38,8 @@ j1f (float x) - float - y1f (float x) - { -- if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0) -+ if (__builtin_expect (islessequal (x, 0.0f) -+ || isgreater (x, (float) X_TLOSS), 0) - && _LIB_VERSION != _IEEE_) - { - if (x < 0.0f) -diff --git a/math/w_j1l.c b/math/w_j1l.c -index 93e4ee4..01b8551 100644 ---- a/math/w_j1l.c -+++ b/math/w_j1l.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - long double - __j1l (long double x) - { -- if (__builtin_expect (fabsl (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - /* j1(|x|>X_TLOSS) */ - return __kernel_standard (x, x, 236); - -@@ -38,7 +39,8 @@ weak_alias (__j1l, j1l) - long double - __y1l (long double x) - { -- if (__builtin_expect (x <= 0.0L || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0L) || isgreater (x, X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - { - if (x < 0.0L) - { -diff --git a/math/w_jn.c b/math/w_jn.c -index f0dd8c6..fd3fb16 100644 ---- a/math/w_jn.c -+++ b/math/w_jn.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,8 @@ - double - jn (int n, double x) - { -- if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - /* jn(n,|x|>X_TLOSS) */ - return __kernel_standard (n, x, 38); - -@@ -40,7 +41,8 @@ strong_alias (jn, jnl) - double - yn (int n, double x) - { -- if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0) -+ && _LIB_VERSION != _IEEE_) - { - if (x < 0.0) - { -diff --git a/math/w_jnf.c b/math/w_jnf.c -index ef29eb4..36d6f6d 100644 ---- a/math/w_jnf.c -+++ b/math/w_jnf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - float - jnf (int n, float x) - { -- if (__builtin_expect (fabsf (x) > (float) X_TLOSS, 0) -+ if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0) - && _LIB_VERSION != _IEEE_) - /* jn(n,|x|>X_TLOSS) */ - return __kernel_standard_f (n, x, 138); -@@ -38,7 +38,8 @@ jnf (int n, float x) - float - ynf (int n, float x) - { -- if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0) -+ if (__builtin_expect (islessequal (x, 0.0f) -+ || isgreater (x, (float) X_TLOSS), 0) - && _LIB_VERSION != _IEEE_) - { - if (x < 0.0f) -diff --git a/math/w_log.c b/math/w_log.c -index efc1c4c..ec33605 100644 ---- a/math/w_log.c -+++ b/math/w_log.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - double - __log (double x) - { -- if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0) - { -diff --git a/math/w_log10.c b/math/w_log10.c -index 2717ade..fe799ad 100644 ---- a/math/w_log10.c -+++ b/math/w_log10.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - double - __log10 (double x) - { -- if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0) - { -diff --git a/math/w_log10f.c b/math/w_log10f.c -index 60737ca..4b821f7 100644 ---- a/math/w_log10f.c -+++ b/math/w_log10f.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - float - __log10f (float x) - { -- if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0f) - { -diff --git a/math/w_log10l.c b/math/w_log10l.c -index b26f18c..0e5a137 100644 ---- a/math/w_log10l.c -+++ b/math/w_log10l.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - long double - __log10l (long double x) - { -- if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0L) - { -diff --git a/math/w_log2.c b/math/w_log2.c -index 998e5d9..e58e109 100644 ---- a/math/w_log2.c -+++ b/math/w_log2.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - double - __log2 (double x) - { -- if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0) - { -diff --git a/math/w_log2f.c b/math/w_log2f.c -index 6d91bf4..6963ed2 100644 ---- a/math/w_log2f.c -+++ b/math/w_log2f.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - float - __log2f (float x) - { -- if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0) - { -diff --git a/math/w_log2l.c b/math/w_log2l.c -index e51c1bc..eed04ff6c 100644 ---- a/math/w_log2l.c -+++ b/math/w_log2l.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - long double - __log2l (long double x) - { -- if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0L) - { -diff --git a/math/w_logf.c b/math/w_logf.c -index 8aa27c8..38d408f 100644 ---- a/math/w_logf.c -+++ b/math/w_logf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - float - __logf (float x) - { -- if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0f) - { -diff --git a/math/w_logl.c b/math/w_logl.c -index a3139ff..593b37d 100644 ---- a/math/w_logl.c -+++ b/math/w_logl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -25,7 +25,7 @@ - long double - __logl (long double x) - { -- if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0L) - { -diff --git a/math/w_sqrt.c b/math/w_sqrt.c -index 409a6df..f6ba542 100644 ---- a/math/w_sqrt.c -+++ b/math/w_sqrt.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,7 @@ - double - __sqrt (double x) - { -- if (__builtin_expect (x < 0.0, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isless (x, 0.0), 0) && _LIB_VERSION != _IEEE_) - return __kernel_standard (x, x, 26); /* sqrt(negative) */ - - return __ieee754_sqrt (x); -diff --git a/math/w_sqrtf.c b/math/w_sqrtf.c -index 3c3d2f8..c128e9b 100644 ---- a/math/w_sqrtf.c -+++ b/math/w_sqrtf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,7 @@ - float - __sqrtf (float x) - { -- if (__builtin_expect (x < 0.0f, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isless (x, 0.0f), 0) && _LIB_VERSION != _IEEE_) - return __kernel_standard_f (x, x, 126); /* sqrt(negative) */ - - return __ieee754_sqrtf (x); -diff --git a/math/w_sqrtl.c b/math/w_sqrtl.c -index 5e18f44..2a4a048 100644 ---- a/math/w_sqrtl.c -+++ b/math/w_sqrtl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -24,7 +24,7 @@ - long double - __sqrtl (long double x) - { -- if (__builtin_expect (x < 0.0L, 0) && _LIB_VERSION != _IEEE_) -+ if (__builtin_expect (isless (x, 0.0L), 0) && _LIB_VERSION != _IEEE_) - return __kernel_standard (x, x, 226); /* sqrt(negative) */ - - return __ieee754_sqrtl (x); -diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c -index 9fc21ab..5f471b1 100644 ---- a/sysdeps/ieee754/dbl-64/e_atanh.c -+++ b/sysdeps/ieee754/dbl-64/e_atanh.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -46,7 +46,7 @@ __ieee754_atanh (double x) - { - double xa = fabs (x); - double t; -- if (xa < 0.5) -+ if (isless (xa, 0.5)) - { - if (__builtin_expect (xa < 0x1.0p-28, 0)) - { -@@ -57,11 +57,11 @@ __ieee754_atanh (double x) - t = xa + xa; - t = 0.5 * __log1p (t + t * xa / (1.0 - xa)); - } -- else if (__builtin_expect (xa < 1.0, 1)) -+ else if (__builtin_expect (isless (xa, 1.0), 1)) - t = 0.5 * __log1p ((xa + xa) / (1.0 - xa)); - else - { -- if (xa > 1.0) -+ if (isgreater (xa, 1.0)) - return (x - x) / (x - x); - - return x / 0.0; -diff --git a/sysdeps/ieee754/dbl-64/w_exp.c b/sysdeps/ieee754/dbl-64/w_exp.c -index ee42587..b584ed8 100644 ---- a/sysdeps/ieee754/dbl-64/w_exp.c -+++ b/sysdeps/ieee754/dbl-64/w_exp.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -28,12 +28,12 @@ u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */ - double - __exp (double x) - { -- if (__builtin_expect (x > o_threshold, 0)) -+ if (__builtin_expect (isgreater (x, o_threshold), 0)) - { - if (_LIB_VERSION != _IEEE_) - return __kernel_standard_f (x, x, 6); - } -- else if (__builtin_expect (x < u_threshold, 0)) -+ else if (__builtin_expect (isless (x, u_threshold), 0)) - { - if (_LIB_VERSION != _IEEE_) - return __kernel_standard_f (x, x, 7); -diff --git a/sysdeps/ieee754/flt-32/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c -index 75ed691..7af2f6c 100644 ---- a/sysdeps/ieee754/flt-32/e_atanhf.c -+++ b/sysdeps/ieee754/flt-32/e_atanhf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -46,7 +46,7 @@ __ieee754_atanhf (float x) - { - float xa = fabsf (x); - float t; -- if (xa < 0.5f) -+ if (isless (xa, 0.5f)) - { - if (__builtin_expect (xa < 0x1.0p-28f, 0)) - { -@@ -57,11 +57,11 @@ __ieee754_atanhf (float x) - t = xa + xa; - t = 0.5f * __log1pf (t + t * xa / (1.0f - xa)); - } -- else if (__builtin_expect (xa < 1.0f, 1)) -+ else if (__builtin_expect (isless (xa, 1.0f), 1)) - t = 0.5f * __log1pf ((xa + xa) / (1.0f - xa)); - else - { -- if (xa > 1.0f) -+ if (isgreater (xa, 1.0f)) - return (x - x) / (x - x); - - return x / 0.0f; -diff --git a/sysdeps/ieee754/flt-32/w_expf.c b/sysdeps/ieee754/flt-32/w_expf.c -index 5500872..bc3b2f6 100644 ---- a/sysdeps/ieee754/flt-32/w_expf.c -+++ b/sysdeps/ieee754/flt-32/w_expf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -28,12 +28,12 @@ u_threshold= -1.0397208405e+02; /* 0xc2cff1b5 */ - float - __expf (float x) - { -- if (__builtin_expect (x > o_threshold, 0)) -+ if (__builtin_expect (isgreater (x, o_threshold), 0)) - { - if (_LIB_VERSION != _IEEE_) - return __kernel_standard_f (x, x, 106); - } -- else if (__builtin_expect (x < u_threshold, 0)) -+ else if (__builtin_expect (isless (x, u_threshold), 0)) - { - if (_LIB_VERSION != _IEEE_) - return __kernel_standard_f (x, x, 107); -diff --git a/sysdeps/ieee754/ldbl-96/w_expl.c b/sysdeps/ieee754/ldbl-96/w_expl.c -index ec9d8a7..d61c0a3 100644 ---- a/sysdeps/ieee754/ldbl-96/w_expl.c -+++ b/sysdeps/ieee754/ldbl-96/w_expl.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2011 Free Software Foundation, Inc. -+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - -@@ -30,12 +30,12 @@ u_threshold= -1.140019167866942050398521670162263001513e4; - long double - __expl (long double x) - { -- if (__builtin_expect (x > o_threshold, 0)) -+ if (__builtin_expect (isgreater (x, o_threshold), 0)) - { - if (_LIB_VERSION != _IEEE_) - return __kernel_standard (x, x, 206); - } -- else if (__builtin_expect (x < u_threshold, 0)) -+ else if (__builtin_expect (isless (x, u_threshold), 0)) - { - if (_LIB_VERSION != _IEEE_) - return __kernel_standard (x, x, 207); diff --git a/multilib-testing/lib32-glibc/glibc-2.15-regex.patch b/multilib-testing/lib32-glibc/glibc-2.15-regex.patch deleted file mode 100644 index 6385f2c08..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-regex.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/posix/regex_internal.c b/posix/regex_internal.c -index bc19243..124f8cc 100644 ---- a/posix/regex_internal.c -+++ b/posix/regex_internal.c -@@ -868,7 +868,7 @@ re_string_peek_byte_case (const re_string_t *pstr, int idx) - } - - static unsigned char --internal_function __attribute ((pure)) -+internal_function - re_string_fetch_byte_case (re_string_t *pstr) - { - if (BE (!pstr->mbs_allocated, 1)) --- -1.7.3.4 - diff --git a/multilib-testing/lib32-glibc/glibc-2.15-revert-c5a0802a.patch b/multilib-testing/lib32-glibc/glibc-2.15-revert-c5a0802a.patch deleted file mode 100644 index d8894723a..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-revert-c5a0802a.patch +++ /dev/null @@ -1,226 +0,0 @@ -diff -rup a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S ---- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:12.937212834 +0000 -+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:42.104222278 +0000 -@@ -137,7 +137,6 @@ __pthread_cond_wait: - cmpl $PI_BIT, %eax - jne 18f - --90: - movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx - movl %ebp, %edx - xorl %esi, %esi -@@ -151,9 +150,6 @@ __pthread_cond_wait: - sete 16(%esp) - je 19f - -- cmpl $-EAGAIN, %eax -- je 91f -- - /* Normal and PI futexes dont mix. Use normal futex functions only - if the kernel does not support the PI futex functions. */ - cmpl $-ENOSYS, %eax -@@ -398,78 +394,6 @@ __pthread_cond_wait: - #endif - call __lll_unlock_wake - jmp 11b -- --91: --.LcleanupSTART2: -- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to -- call it again. */ -- -- /* Get internal lock. */ -- movl $1, %edx -- xorl %eax, %eax -- LOCK --#if cond_lock == 0 -- cmpxchgl %edx, (%ebx) --#else -- cmpxchgl %edx, cond_lock(%ebx) --#endif -- jz 92f -- --#if cond_lock == 0 -- movl %ebx, %edx --#else -- leal cond_lock(%ebx), %edx --#endif --#if (LLL_SHARED-LLL_PRIVATE) > 255 -- xorl %ecx, %ecx --#endif -- cmpl $-1, dep_mutex(%ebx) -- setne %cl -- subl $1, %ecx -- andl $(LLL_SHARED-LLL_PRIVATE), %ecx --#if LLL_PRIVATE != 0 -- addl $LLL_PRIVATE, %ecx --#endif -- call __lll_lock_wait -- --92: -- /* Increment the cond_futex value again, so it can be used as a new -- expected value. */ -- addl $1, cond_futex(%ebx) -- movl cond_futex(%ebx), %ebp -- -- /* Unlock. */ -- LOCK --#if cond_lock == 0 -- subl $1, (%ebx) --#else -- subl $1, cond_lock(%ebx) --#endif -- je 93f --#if cond_lock == 0 -- movl %ebx, %eax --#else -- leal cond_lock(%ebx), %eax --#endif --#if (LLL_SHARED-LLL_PRIVATE) > 255 -- xorl %ecx, %ecx --#endif -- cmpl $-1, dep_mutex(%ebx) -- setne %cl -- subl $1, %ecx -- andl $(LLL_SHARED-LLL_PRIVATE), %ecx --#if LLL_PRIVATE != 0 -- addl $LLL_PRIVATE, %ecx --#endif -- call __lll_unlock_wake -- --93: -- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ -- xorl %ecx, %ecx -- movl dep_mutex(%ebx), %edi -- jmp 90b --.LcleanupEND2: -- - .size __pthread_cond_wait, .-__pthread_cond_wait - versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, - GLIBC_2_3_2) -@@ -642,10 +566,6 @@ __condvar_w_cleanup: - .long .LcleanupEND-.Lsub_cond_futex - .long __condvar_w_cleanup-.LSTARTCODE - .uleb128 0 -- .long .LcleanupSTART2-.LSTARTCODE -- .long .LcleanupEND2-.LcleanupSTART2 -- .long __condvar_w_cleanup-.LSTARTCODE -- .uleb128 0 - .long .LcallUR-.LSTARTCODE - .long .LENDCODE-.LcallUR - .long 0 -Only in b/nptl/sysdeps/unix/sysv/linux/i386/i486: pthread_cond_wait.S.orig -diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S ---- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:04:12.941212837 +0000 -+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:05:05.155229737 +0000 -@@ -23,7 +23,6 @@ - #include <lowlevelcond.h> - #include <tcb-offsets.h> - #include <pthread-pi-defines.h> --#include <pthread-errnos.h> - #include <stap-probe.h> - - #include <kernel-features.h> -@@ -137,14 +136,11 @@ __pthread_cond_wait: - cmpl $PI_BIT, %eax - jne 61f - --90: - movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi - movl $SYS_futex, %eax - syscall - - movl $1, %r8d -- cmpq $-EAGAIN, %rax -- je 91f - #ifdef __ASSUME_REQUEUE_PI - jmp 62f - #else -@@ -331,70 +327,6 @@ __pthread_cond_wait: - - 13: movq %r10, %rax - jmp 14b -- --91: --.LcleanupSTART2: -- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to -- call it again. */ -- movq 8(%rsp), %rdi -- -- /* Get internal lock. */ -- movl $1, %esi -- xorl %eax, %eax -- LOCK --#if cond_lock == 0 -- cmpxchgl %esi, (%rdi) --#else -- cmpxchgl %esi, cond_lock(%rdi) --#endif -- jz 92f -- --#if cond_lock != 0 -- addq $cond_lock, %rdi --#endif -- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi) -- movl $LLL_PRIVATE, %eax -- movl $LLL_SHARED, %esi -- cmovne %eax, %esi -- callq __lll_lock_wait --#if cond_lock != 0 -- subq $cond_lock, %rdi --#endif --92: -- /* Increment the cond_futex value again, so it can be used as a new -- expected value. */ -- incl cond_futex(%rdi) -- movl cond_futex(%rdi), %edx -- -- /* Release internal lock. */ -- LOCK --#if cond_lock == 0 -- decl (%rdi) --#else -- decl cond_lock(%rdi) --#endif -- jz 93f -- --#if cond_lock != 0 -- addq $cond_lock, %rdi --#endif -- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi) -- movl $LLL_PRIVATE, %eax -- movl $LLL_SHARED, %esi -- cmovne %eax, %esi -- /* The call preserves %rdx. */ -- callq __lll_unlock_wake --#if cond_lock != 0 -- subq $cond_lock, %rdi --#endif --93: -- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ -- xorq %r10, %r10 -- mov dep_mutex(%rdi), %R8_LP -- leaq cond_futex(%rdi), %rdi -- jmp 90b --.LcleanupEND2: -- - .size __pthread_cond_wait, .-__pthread_cond_wait - versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, - GLIBC_2_3_2) -@@ -547,15 +479,11 @@ __condvar_cleanup1: - .uleb128 .LcleanupSTART-.LSTARTCODE - .uleb128 .LcleanupEND-.LcleanupSTART - .uleb128 __condvar_cleanup1-.LSTARTCODE -- .uleb128 0 -- .uleb128 .LcleanupSTART2-.LSTARTCODE -- .uleb128 .LcleanupEND2-.LcleanupSTART2 -- .uleb128 __condvar_cleanup1-.LSTARTCODE -- .uleb128 0 -+ .uleb128 0 - .uleb128 .LcallUR-.LSTARTCODE - .uleb128 .LENDCODE-.LcallUR - .uleb128 0 -- .uleb128 0 -+ .uleb128 0 - .Lcstend: - diff --git a/multilib-testing/lib32-glibc/glibc-2.15-revert-netlink-cache.patch b/multilib-testing/lib32-glibc/glibc-2.15-revert-netlink-cache.patch deleted file mode 100644 index 87d04c794..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-revert-netlink-cache.patch +++ /dev/null @@ -1,680 +0,0 @@ -diff --git a/include/ifaddrs.h b/include/ifaddrs.h -index e1c6cac..50e4c48 100644 ---- a/include/ifaddrs.h -+++ b/include/ifaddrs.h -@@ -21,13 +21,8 @@ struct in6addrinfo - extern void __check_pf (bool *seen_ipv4, bool *seen_ipv6, - struct in6addrinfo **in6ai, size_t *in6ailen) - attribute_hidden; --extern void __free_in6ai (struct in6addrinfo *in6ai) attribute_hidden; - extern void __check_native (uint32_t a1_index, int *a1_native, - uint32_t a2_index, int *a2_native) - attribute_hidden; - --#ifdef IS_IN_nscd --extern uint32_t __bump_nl_timestamp (void) attribute_hidden; --#endif -- - #endif /* ifaddrs.h */ -diff --git a/inet/check_pf.c b/inet/check_pf.c -index 0fa34cc..b015432 100644 ---- a/inet/check_pf.c -+++ b/inet/check_pf.c -@@ -1,5 +1,5 @@ - /* Determine protocol families for which interfaces exist. Generic version. -- Copyright (C) 2003, 2006, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2003, 2006 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 -@@ -54,19 +54,3 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, - - (void) freeifaddrs (ifa); - } -- -- --void --__free_in6ai (struct in6addrinfo *in6ai) --{ -- /* Nothing to do. */ --} -- -- --#ifdef IS_IN_nscd --uint32_t --__bump_nl_timestamp (void) --{ -- return 0; --} --#endif -diff --git a/nscd/connections.c b/nscd/connections.c -index c741996..2b5c7ef 100644 ---- a/nscd/connections.c -+++ b/nscd/connections.c -@@ -24,7 +24,6 @@ - #include <errno.h> - #include <fcntl.h> - #include <grp.h> --#include <ifaddrs.h> - #include <libintl.h> - #include <pthread.h> - #include <pwd.h> -@@ -33,10 +32,6 @@ - #include <stdlib.h> - #include <unistd.h> - #include <arpa/inet.h> --#ifdef HAVE_NETLINK --# include <linux/netlink.h> --# include <linux/rtnetlink.h> --#endif - #ifdef HAVE_EPOLL - # include <sys/epoll.h> - #endif -@@ -252,11 +247,6 @@ static int sock; - int inotify_fd = -1; - #endif - --#ifdef HAVE_NETLINK --/* Descriptor for netlink status updates. */ --static int nl_status_fd = -1; --#endif -- - #ifndef __ASSUME_SOCK_CLOEXEC - /* Negative if SOCK_CLOEXEC is not supported, positive if it is, zero - before be know the result. */ -@@ -913,65 +903,6 @@ cannot set socket to close on exec: %s; disabling paranoia mode"), - exit (1); - } - --#ifdef HAVE_NETLINK -- if (dbs[hstdb].enabled) -- { -- /* Try to open netlink socket to monitor network setting changes. */ -- nl_status_fd = socket (AF_NETLINK, -- SOCK_RAW | SOCK_CLOEXEC | SOCK_NONBLOCK, -- NETLINK_ROUTE); -- if (nl_status_fd != -1) -- { -- struct sockaddr_nl snl; -- memset (&snl, '\0', sizeof (snl)); -- snl.nl_family = AF_NETLINK; -- /* XXX Is this the best set to use? */ -- snl.nl_groups = (RTMGRP_IPV4_IFADDR | RTMGRP_TC | RTMGRP_IPV4_MROUTE -- | RTMGRP_IPV4_ROUTE | RTMGRP_IPV4_RULE -- | RTMGRP_IPV6_IFADDR | RTMGRP_IPV6_MROUTE -- | RTMGRP_IPV6_ROUTE | RTMGRP_IPV6_IFINFO -- | RTMGRP_IPV6_PREFIX); -- -- if (bind (nl_status_fd, (struct sockaddr *) &snl, sizeof (snl)) != 0) -- { -- close (nl_status_fd); -- nl_status_fd = -1; -- } -- else -- { -- /* Start the timestamp process. */ -- dbs[hstdb].head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP] -- = __bump_nl_timestamp (); -- --# ifndef __ASSUME_SOCK_CLOEXEC -- if (have_sock_cloexec < 0) -- { -- /* We don't want to get stuck on accept. */ -- int fl = fcntl (nl_status_fd, F_GETFL); -- if (fl == -1 -- || fcntl (nl_status_fd, F_SETFL, fl | O_NONBLOCK) == -1) -- { -- dbg_log (_("\ --cannot change socket to nonblocking mode: %s"), -- strerror (errno)); -- exit (1); -- } -- -- /* The descriptor needs to be closed on exec. */ -- if (paranoia -- && fcntl (nl_status_fd, F_SETFD, FD_CLOEXEC) == -1) -- { -- dbg_log (_("cannot set socket to close on exec: %s"), -- strerror (errno)); -- exit (1); -- } -- } --# endif -- } -- } -- } --#endif -- - /* Change to unprivileged uid/gid/groups if specified in config file */ - if (server_user != NULL) - finish_drop_privileges (); -@@ -1895,18 +1826,6 @@ main_loop_poll (void) - } - #endif - --#ifdef HAVE_NETLINK -- size_t idx_nl_status_fd = 0; -- if (nl_status_fd != -1) -- { -- idx_nl_status_fd = nused; -- conns[nused].fd = nl_status_fd; -- conns[nused].events = POLLRDNORM; -- ++nused; -- firstfree = nused; -- } --#endif -- - while (1) - { - /* Wait for any event. We wait at most a couple of seconds so -@@ -2049,20 +1968,6 @@ disabled inotify after read error %d"), - } - #endif - --#ifdef HAVE_NETLINK -- if (idx_nl_status_fd != 0 && conns[idx_nl_status_fd].revents != 0) -- { -- char buf[4096]; -- /* Read all the data. We do not interpret it here. */ -- while (TEMP_FAILURE_RETRY (read (nl_status_fd, buf, -- sizeof (buf))) != -1) -- ; -- -- dbs[hstdb].head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP] -- = __bump_nl_timestamp (); -- } --#endif -- - for (size_t cnt = first; cnt < nused && n > 0; ++cnt) - if (conns[cnt].revents != 0) - { -@@ -2141,17 +2046,6 @@ main_loop_epoll (int efd) - } - # endif - --# ifdef HAVE_NETLINK -- if (nl_status_fd != -1) -- { -- ev.events = EPOLLRDNORM; -- ev.data.fd = nl_status_fd; -- if (epoll_ctl (efd, EPOLL_CTL_ADD, nl_status_fd, &ev) == -1) -- /* We cannot use epoll. */ -- return; -- } --# endif -- - while (1) - { - struct epoll_event revs[100]; -@@ -2268,18 +2162,6 @@ main_loop_epoll (int efd) - } - } - # endif --# ifdef HAVE_NETLINK -- else if (revs[cnt].data.fd == nl_status_fd) -- { -- char buf[4096]; -- /* Read all the data. We do not interpret it here. */ -- while (TEMP_FAILURE_RETRY (read (nl_status_fd, buf, -- sizeof (buf))) != -1) -- ; -- -- __bump_nl_timestamp (); -- } --# endif - else - { - /* Remove the descriptor from the epoll descriptor. */ -@@ -2303,7 +2185,6 @@ main_loop_epoll (int efd) - time_t laststart = now - ACCEPT_TIMEOUT; - assert (starttime[sock] == 0); - assert (inotify_fd == -1 || starttime[inotify_fd] == 0); -- assert (nl_status_fd == -1 || starttime[nl_status_fd] == 0); - for (int cnt = highest; cnt > STDERR_FILENO; --cnt) - if (starttime[cnt] != 0 && starttime[cnt] < laststart) - { -diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h -index b5cd2d2..caad26a 100644 ---- a/nscd/nscd-client.h -+++ b/nscd/nscd-client.h -@@ -260,17 +260,12 @@ struct hashentry - - - /* Current persistent database version. */ --#define DB_VERSION 2 -+#define DB_VERSION 1 - - /* Maximum time allowed between updates of the timestamp. */ - #define MAPPING_TIMEOUT (5 * 60) - - --/* Used indices for the EXTRA_DATA element of 'database_pers_head'. -- Each database has its own indices. */ --#define NSCD_HST_IDX_CONF_TIMESTAMP 0 -- -- - /* Header of persistent database file. */ - struct database_pers_head - { -@@ -279,8 +274,6 @@ struct database_pers_head - volatile int32_t gc_cycle; - volatile int32_t nscd_certainly_running; - volatile nscd_time_t timestamp; -- /* Room for extensions. */ -- volatile uint32_t extra_data[4]; - - nscd_ssize_t module; - nscd_ssize_t data_size; -@@ -329,12 +322,6 @@ extern int __nscd_open_socket (const char *key, size_t keylen, - request_type type, void *response, - size_t responselen) attribute_hidden; - --/* Try to get a file descriptor for the shared meory segment -- containing the database. */ --extern struct mapped_database *__nscd_get_mapping (request_type type, -- const char *key, -- struct mapped_database **mappedp) attribute_hidden; -- - /* Get reference of mapping. */ - extern struct mapped_database *__nscd_get_map_ref (request_type type, - const char *name, -@@ -384,7 +371,4 @@ extern ssize_t writeall (int fd, const void *buf, size_t len) - extern ssize_t sendfileall (int tofd, int fromfd, off_t off, size_t len) - attribute_hidden; - --/* Get netlink timestamp counter from mapped area or zero. */ --extern uint32_t __nscd_get_nl_timestamp (void); -- - #endif /* nscd.h */ -diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c -index 6ee142d..70631fa 100644 ---- a/nscd/nscd_gethst_r.c -+++ b/nscd/nscd_gethst_r.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998-2005, 2006, 2007, 2008, 2009, 2011 -+/* Copyright (C) 1998-2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. -@@ -98,27 +98,6 @@ libc_freeres_fn (hst_map_free) - } - - --uint32_t --__nscd_get_nl_timestamp (void) --{ -- if (__nss_not_use_nscd_hosts != 0) -- return 0; -- -- struct mapped_database *map = __hst_map_handle.mapped; -- -- if (map == NULL -- || (map != NO_MAPPING -- && map->head->nscd_certainly_running == 0 -- && map->head->timestamp + MAPPING_TIMEOUT < time (NULL))) -- map = __nscd_get_mapping (GETFDHST, "hosts", &__hst_map_handle.mapped); -- -- if (map == NO_MAPPING) -- return 0; -- -- return map->head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP]; --} -- -- - int __nss_have_localdomain attribute_hidden; - - static int -diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c -index 365b599..fe63f9a 100644 ---- a/nscd/nscd_helper.c -+++ b/nscd/nscd_helper.c -@@ -277,9 +277,9 @@ __nscd_unmap (struct mapped_database *mapped) - - /* Try to get a file descriptor for the shared meory segment - containing the database. */ --struct mapped_database * --__nscd_get_mapping (request_type type, const char *key, -- struct mapped_database **mappedp) -+static struct mapped_database * -+get_mapping (request_type type, const char *key, -+ struct mapped_database **mappedp) - { - struct mapped_database *result = NO_MAPPING; - #ifdef SCM_RIGHTS -@@ -449,8 +449,8 @@ __nscd_get_map_ref (request_type type, const char *name, - || (cur->head->nscd_certainly_running == 0 - && cur->head->timestamp + MAPPING_TIMEOUT < time (NULL)) - || cur->head->data_size > cur->datasize) -- cur = __nscd_get_mapping (type, name, -- (struct mapped_database **) &mapptr->mapped); -+ cur = get_mapping (type, name, -+ (struct mapped_database **) &mapptr->mapped); - - if (__builtin_expect (cur != NO_MAPPING, 1)) - { -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 1a023f9..4979805 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -2386,7 +2386,7 @@ getaddrinfo (const char *name, const char *service, - || (hints->ai_family == PF_INET6 && ! seen_ipv6)) - { - /* We cannot possibly return a valid answer. */ -- __free_in6ai (in6ai); -+ free (in6ai); - return EAI_NONAME; - } - } -@@ -2400,7 +2400,7 @@ getaddrinfo (const char *name, const char *service, - { - if (hints->ai_flags & AI_NUMERICSERV) - { -- __free_in6ai (in6ai); -+ free (in6ai); - return EAI_NONAME; - } - -@@ -2422,7 +2422,7 @@ getaddrinfo (const char *name, const char *service, - if (last_i != 0) - { - freeaddrinfo (p); -- __free_in6ai (in6ai); -+ free (in6ai); - - return -(last_i & GAIH_EAI); - } -@@ -2434,7 +2434,7 @@ getaddrinfo (const char *name, const char *service, - } - else - { -- __free_in6ai (in6ai); -+ free (in6ai); - return EAI_FAMILY; - } - -@@ -2622,7 +2622,7 @@ getaddrinfo (const char *name, const char *service, - p->ai_canonname = canonname; - } - -- __free_in6ai (in6ai); -+ free (in6ai); - - if (p) - { -diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile -index e684b16..c907af4 100644 ---- a/sysdeps/unix/sysv/linux/Makefile -+++ b/sysdeps/unix/sysv/linux/Makefile -@@ -173,6 +173,6 @@ CFLAGS-mq_receive.c += -fexceptions - endif - - ifeq ($(subdir),nscd) --sysdep-CFLAGS += -DHAVE_EPOLL -DHAVE_SENDFILE -DHAVE_INOTIFY -DHAVE_NETLINK -+sysdep-CFLAGS += -DHAVE_EPOLL -DHAVE_SENDFILE -DHAVE_INOTIFY - CFLAGS-gai.c += -DNEED_NETLINK - endif -diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c -index 0738a70..d5ad7ea 100644 ---- a/sysdeps/unix/sysv/linux/check_pf.c -+++ b/sysdeps/unix/sysv/linux/check_pf.c -@@ -1,5 +1,5 @@ - /* Determine protocol families for which interfaces exist. Linux version. -- Copyright (C) 2003, 2006-2008, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 2003, 2006, 2007, 2008, 2010, 2011 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 -@@ -33,9 +33,6 @@ - - #include <not-cancel.h> - #include <kernel-features.h> --#include <bits/libc-lock.h> --#include <atomic.h> --#include <nscd/nscd-client.h> - - - #ifndef IFA_F_HOMEADDRESS -@@ -46,42 +43,9 @@ - #endif - - --struct cached_data --{ -- uint32_t timestamp; -- uint32_t usecnt; -- bool seen_ipv4; -- bool seen_ipv6; -- size_t in6ailen; -- struct in6addrinfo in6ai[0]; --}; -- --static struct cached_data noai6ai_cached = -- { -- .usecnt = 1, /* Make sure we never try to delete this entry. */ -- .in6ailen = 0 -- }; -- --static struct cached_data *cache; --__libc_lock_define_initialized (static, lock); -- -- --#ifdef IS_IN_nscd --static uint32_t nl_timestamp; -- --uint32_t --__bump_nl_timestamp (void) --{ -- if (atomic_increment_val (&nl_timestamp) == 0) -- atomic_increment (&nl_timestamp); -- -- return nl_timestamp; --} --#endif -- -- --static struct cached_data * --make_request (int fd, pid_t pid) -+static int -+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, -+ struct in6addrinfo **in6ai, size_t *in6ailen) - { - struct req - { -@@ -135,6 +99,9 @@ make_request (int fd, pid_t pid) - sizeof (nladdr))) < 0) - goto out_fail; - -+ *seen_ipv4 = false; -+ *seen_ipv6 = false; -+ - bool done = false; - struct in6ailist - { -@@ -142,8 +109,6 @@ make_request (int fd, pid_t pid) - struct in6ailist *next; - } *in6ailist = NULL; - size_t in6ailistlen = 0; -- bool seen_ipv4 = false; -- bool seen_ipv6 = false; - - do - { -@@ -207,12 +172,12 @@ make_request (int fd, pid_t pid) - { - if (*(const in_addr_t *) address - != htonl (INADDR_LOOPBACK)) -- seen_ipv4 = true; -+ *seen_ipv4 = true; - } - else - { - if (!IN6_IS_ADDR_LOOPBACK (address)) -- seen_ipv6 = true; -+ *seen_ipv6 = true; - } - } - -@@ -246,47 +211,30 @@ make_request (int fd, pid_t pid) - } - while (! done); - -- struct cached_data *result; -- if (seen_ipv6 && in6ailist != NULL) -+ if (*seen_ipv6 && in6ailist != NULL) - { -- result = malloc (sizeof (*result) -- + in6ailistlen * sizeof (struct in6addrinfo)); -- if (result == NULL) -+ *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); -+ if (*in6ai == NULL) - goto out_fail; - --#ifdef IS_IN_nscd -- result->timestamp = nl_timestamp; --#else -- result->timestamp = __nscd_get_nl_timestamp (); --#endif -- result->usecnt = 2; -- result->seen_ipv4 = seen_ipv4; -- result->seen_ipv6 = true; -- result->in6ailen = in6ailistlen; -+ *in6ailen = in6ailistlen; - - do - { -- result->in6ai[--in6ailistlen] = in6ailist->info; -+ (*in6ai)[--in6ailistlen] = in6ailist->info; - in6ailist = in6ailist->next; - } - while (in6ailist != NULL); - } -- else -- { -- atomic_add (&noai6ai_cached.usecnt, 2); -- noai6ai_cached.seen_ipv4 = seen_ipv4; -- noai6ai_cached.seen_ipv6 = seen_ipv6; -- result = &noai6ai_cached; -- } - - if (use_malloc) - free (buf); -- return result; -+ return 0; - - out_fail: - if (use_malloc) - free (buf); -- return NULL; -+ return -1; - } - - -@@ -310,65 +258,28 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, - - if (! __no_netlink_support) - { -- struct cached_data *olddata = NULL; -- struct cached_data *data = NULL; -+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); - -- __libc_lock_lock (lock); -- --#ifdef IS_IN_nscd --# define cache_valid() nl_timestamp != 0 && cache->timestamp == nl_timestamp --#else --# define cache_valid() \ -- ({ uint32_t val = __nscd_get_nl_timestamp (); \ -- val != 0 && cache->timestamp == val; }) --#endif -- if (cache != NULL && cache_valid ()) -- { -- data = cache; -- atomic_increment (&cache->usecnt); -- } -- else -+ if (__builtin_expect (fd >= 0, 1)) - { -- int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); -+ struct sockaddr_nl nladdr; -+ memset (&nladdr, '\0', sizeof (nladdr)); -+ nladdr.nl_family = AF_NETLINK; - -- if (__builtin_expect (fd >= 0, 1)) -- { -- struct sockaddr_nl nladdr; -- memset (&nladdr, '\0', sizeof (nladdr)); -- nladdr.nl_family = AF_NETLINK; -- -- socklen_t addr_len = sizeof (nladdr); -- -- if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 -- && __getsockname (fd, (struct sockaddr *) &nladdr, -- &addr_len) == 0) -- data = make_request (fd, nladdr.nl_pid); -- -- close_not_cancel_no_status (fd); -- } -- -- if (data != NULL) -- { -- olddata = cache; -- cache = data; -- } -- } -+ socklen_t addr_len = sizeof (nladdr); - -- __libc_lock_unlock (lock); -+ bool success -+ = (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 -+ && __getsockname (fd, (struct sockaddr *) &nladdr, -+ &addr_len) == 0 -+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, -+ in6ai, in6ailen) == 0); - -- if (data != NULL) -- { -- /* It worked. */ -- *seen_ipv4 = data->seen_ipv4; -- *seen_ipv6 = data->seen_ipv6; -- *in6ailen = data->in6ailen; -- *in6ai = data->in6ai; -- -- if (olddata != NULL && olddata->usecnt > 0 -- && atomic_add_zero (&olddata->usecnt, -1)) -- free (olddata); -+ close_not_cancel_no_status (fd); - -- return; -+ if (success) -+ /* It worked. */ -+ return; - } - - #if __ASSUME_NETLINK_SUPPORT == 0 -@@ -407,26 +318,3 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, - (void) freeifaddrs (ifa); - #endif - } -- -- --void --__free_in6ai (struct in6addrinfo *ai) --{ -- if (ai != NULL) -- { -- struct cached_data *data = -- (struct cached_data *) ((char *) ai -- - offsetof (struct cached_data, in6ai)); -- -- if (atomic_add_zero (&data->usecnt, -1)) -- { -- __libc_lock_lock (lock); -- -- if (data->usecnt == 0) -- /* Still unused. */ -- free (data); -- -- __libc_lock_unlock (lock); -- } -- } --} diff --git a/multilib-testing/lib32-glibc/glibc-2.15-rintf-rounding.patch b/multilib-testing/lib32-glibc/glibc-2.15-rintf-rounding.patch deleted file mode 100644 index e0240ac6c..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-rintf-rounding.patch +++ /dev/null @@ -1,158 +0,0 @@ -diff --git a/math/libm-test.inc b/math/libm-test.inc -index 6243e1e..c8186c8 100644 ---- a/math/libm-test.inc -+++ b/math/libm-test.inc -@@ -5037,6 +5037,22 @@ rint_test (void) - TEST_f_f (rint, 262142.75, 262143.0); - TEST_f_f (rint, 524286.75, 524287.0); - TEST_f_f (rint, 524288.75, 524289.0); -+ TEST_f_f (rint, 1048576.75, 1048577.0); -+ TEST_f_f (rint, 2097152.75, 2097153.0); -+ TEST_f_f (rint, -1048576.75, -1048577.0); -+ TEST_f_f (rint, -2097152.75, -2097153.0); -+#ifndef TEST_FLOAT -+ TEST_f_f (rint, 70368744177664.75, 70368744177665.0); -+ TEST_f_f (rint, 140737488355328.75, 140737488355329.0); -+ TEST_f_f (rint, 281474976710656.75, 281474976710657.0); -+ TEST_f_f (rint, 562949953421312.75, 562949953421313.0); -+ TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0); -+ TEST_f_f (rint, -70368744177664.75, -70368744177665.0); -+ TEST_f_f (rint, -140737488355328.75, -140737488355329.0); -+ TEST_f_f (rint, -281474976710656.75, -281474976710657.0); -+ TEST_f_f (rint, -562949953421312.75, -562949953421313.0); -+ TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0); -+#endif - #ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L); -@@ -5137,6 +5153,22 @@ rint_test_tonearest (void) - TEST_f_f (rint, -0.1, -0.0); - TEST_f_f (rint, -0.25, -0.0); - TEST_f_f (rint, -0.625, -1.0); -+ TEST_f_f (rint, 1048576.75, 1048577.0); -+ TEST_f_f (rint, 2097152.75, 2097153.0); -+ TEST_f_f (rint, -1048576.75, -1048577.0); -+ TEST_f_f (rint, -2097152.75, -2097153.0); -+#ifndef TEST_FLOAT -+ TEST_f_f (rint, 70368744177664.75, 70368744177665.0); -+ TEST_f_f (rint, 140737488355328.75, 140737488355329.0); -+ TEST_f_f (rint, 281474976710656.75, 281474976710657.0); -+ TEST_f_f (rint, 562949953421312.75, 562949953421313.0); -+ TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0); -+ TEST_f_f (rint, -70368744177664.75, -70368744177665.0); -+ TEST_f_f (rint, -140737488355328.75, -140737488355329.0); -+ TEST_f_f (rint, -281474976710656.75, -281474976710657.0); -+ TEST_f_f (rint, -562949953421312.75, -562949953421313.0); -+ TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0); -+#endif - #ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L); -@@ -5207,6 +5239,22 @@ rint_test_towardzero (void) - TEST_f_f (rint, -0.1, -0.0); - TEST_f_f (rint, -0.25, -0.0); - TEST_f_f (rint, -0.625, -0.0); -+ TEST_f_f (rint, 1048576.75, 1048576.0); -+ TEST_f_f (rint, 2097152.75, 2097152.0); -+ TEST_f_f (rint, -1048576.75, -1048576.0); -+ TEST_f_f (rint, -2097152.75, -2097152.0); -+#ifndef TEST_FLOAT -+ TEST_f_f (rint, 70368744177664.75, 70368744177664.0); -+ TEST_f_f (rint, 140737488355328.75, 140737488355328.0); -+ TEST_f_f (rint, 281474976710656.75, 281474976710656.0); -+ TEST_f_f (rint, 562949953421312.75, 562949953421312.0); -+ TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0); -+ TEST_f_f (rint, -70368744177664.75, -70368744177664.0); -+ TEST_f_f (rint, -140737488355328.75, -140737488355328.0); -+ TEST_f_f (rint, -281474976710656.75, -281474976710656.0); -+ TEST_f_f (rint, -562949953421312.75, -562949953421312.0); -+ TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0); -+#endif - #ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L); -@@ -5277,6 +5325,22 @@ rint_test_downward (void) - TEST_f_f (rint, -0.1, -1.0); - TEST_f_f (rint, -0.25, -1.0); - TEST_f_f (rint, -0.625, -1.0); -+ TEST_f_f (rint, 1048576.75, 1048576.0); -+ TEST_f_f (rint, 2097152.75, 2097152.0); -+ TEST_f_f (rint, -1048576.75, -1048577.0); -+ TEST_f_f (rint, -2097152.75, -2097153.0); -+#ifndef TEST_FLOAT -+ TEST_f_f (rint, 70368744177664.75, 70368744177664.0); -+ TEST_f_f (rint, 140737488355328.75, 140737488355328.0); -+ TEST_f_f (rint, 281474976710656.75, 281474976710656.0); -+ TEST_f_f (rint, 562949953421312.75, 562949953421312.0); -+ TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0); -+ TEST_f_f (rint, -70368744177664.75, -70368744177665.0); -+ TEST_f_f (rint, -140737488355328.75, -140737488355329.0); -+ TEST_f_f (rint, -281474976710656.75, -281474976710657.0); -+ TEST_f_f (rint, -562949953421312.75, -562949953421313.0); -+ TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0); -+#endif - #ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L); -@@ -5347,6 +5411,22 @@ rint_test_upward (void) - TEST_f_f (rint, -0.1, -0.0); - TEST_f_f (rint, -0.25, -0.0); - TEST_f_f (rint, -0.625, -0.0); -+ TEST_f_f (rint, 1048576.75, 1048577.0); -+ TEST_f_f (rint, 2097152.75, 2097153.0); -+ TEST_f_f (rint, -1048576.75, -1048576.0); -+ TEST_f_f (rint, -2097152.75, -2097152.0); -+#ifndef TEST_FLOAT -+ TEST_f_f (rint, 70368744177664.75, 70368744177665.0); -+ TEST_f_f (rint, 140737488355328.75, 140737488355329.0); -+ TEST_f_f (rint, 281474976710656.75, 281474976710657.0); -+ TEST_f_f (rint, 562949953421312.75, 562949953421313.0); -+ TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0); -+ TEST_f_f (rint, -70368744177664.75, -70368744177664.0); -+ TEST_f_f (rint, -140737488355328.75, -140737488355328.0); -+ TEST_f_f (rint, -281474976710656.75, -281474976710656.0); -+ TEST_f_f (rint, -562949953421312.75, -562949953421312.0); -+ TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0); -+#endif - #ifdef TEST_LDOUBLE - /* The result can only be represented in long double. */ - TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L); -diff --git a/sysdeps/ieee754/flt-32/s_rintf.c b/sysdeps/ieee754/flt-32/s_rintf.c -index 9ea9b6f..9ba6b57 100644 ---- a/sysdeps/ieee754/flt-32/s_rintf.c -+++ b/sysdeps/ieee754/flt-32/s_rintf.c -@@ -26,34 +26,22 @@ float - __rintf(float x) - { - int32_t i0,j0,sx; -- u_int32_t i,i1; - float w,t; - GET_FLOAT_WORD(i0,x); - sx = (i0>>31)&1; - j0 = ((i0>>23)&0xff)-0x7f; - if(j0<23) { - if(j0<0) { -- if((i0&0x7fffffff)==0) return x; -- i1 = (i0&0x07fffff); -- i0 &= 0xfff00000; -- i0 |= ((i1|-i1)>>9)&0x400000; -- SET_FLOAT_WORD(x,i0); - w = TWO23[sx]+x; - t = w-TWO23[sx]; - GET_FLOAT_WORD(i0,t); - SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31)); - return t; -- } else { -- i = (0x007fffff)>>j0; -- if((i0&i)==0) return x; /* x is integral */ -- i>>=1; -- if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0); - } - } else { - if(j0==0x80) return x+x; /* inf or NaN */ - else return x; /* x is integral */ - } -- SET_FLOAT_WORD(x,i0); - w = TWO23[sx]+x; - return w-TWO23[sx]; - } diff --git a/multilib-testing/lib32-glibc/glibc-2.15-scanf.patch b/multilib-testing/lib32-glibc/glibc-2.15-scanf.patch deleted file mode 100644 index a2561b232..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-scanf.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c -index 0e71deb..e18a6c3 100644 ---- a/stdio-common/vfscanf.c -+++ b/stdio-common/vfscanf.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991-2006, 2007, 2010, 2011 Free Software Foundation, Inc. -+/* Copyright (C) 1991-2007, 2010, 2011, 2012 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 -@@ -274,7 +274,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr, - CHAR_T *old = wp; \ - size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax \ - ? UCHAR_MAX + 1 : 2 * wpmax); \ -- if (use_malloc || __libc_use_alloca (newsize)) \ -+ if (use_malloc || !__libc_use_alloca (newsize)) \ - { \ - wp = realloc (use_malloc ? wp : NULL, newsize); \ - if (wp == NULL) \ diff --git a/multilib-testing/lib32-glibc/glibc-2.15-strcasecmp-disable-avx.patch b/multilib-testing/lib32-glibc/glibc-2.15-strcasecmp-disable-avx.patch deleted file mode 100644 index 4c104fa55..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-strcasecmp-disable-avx.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/sysdeps/x86_64/multiarch/strcmp.S b/sysdeps/x86_64/multiarch/strcmp.S -index f93c83d..d8aa889 100644 ---- a/sysdeps/x86_64/multiarch/strcmp.S -+++ b/sysdeps/x86_64/multiarch/strcmp.S -@@ -105,11 +105,6 @@ ENTRY(__strcasecmp) - jne 1f - call __init_cpu_features - 1: --# ifdef HAVE_AVX_SUPPORT -- leaq __strcasecmp_avx(%rip), %rax -- testl $bit_AVX, __cpu_features+CPUID_OFFSET+index_AVX(%rip) -- jnz 2f --# endif - leaq __strcasecmp_sse42(%rip), %rax - testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) - jnz 2f -@@ -128,11 +123,6 @@ ENTRY(__strncasecmp) - jne 1f - call __init_cpu_features - 1: --# ifdef HAVE_AVX_SUPPORT -- leaq __strncasecmp_avx(%rip), %rax -- testl $bit_AVX, __cpu_features+CPUID_OFFSET+index_AVX(%rip) -- jnz 2f --# endif - leaq __strncasecmp_sse42(%rip), %rax - testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) - jnz 2f -@@ -152,19 +142,6 @@ weak_alias (__strncasecmp, strncasecmp) - # include "strcmp-sse42.S" - - --# ifdef HAVE_AVX_SUPPORT --# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L --# define LABEL(l) .L##l##_avx --# define GLABEL(l) l##_avx --# define USE_AVX 1 --# undef STRCMP_SSE42 --# define STRCMP_SSE42 STRCMP_AVX --# define SECTION avx --# include "strcmp-sse42.S" --# endif --# endif -- -- - # undef ENTRY - # define ENTRY(name) \ - .type STRCMP_SSE2, @function; \ diff --git a/multilib-testing/lib32-glibc/glibc-2.15-testsuite.patch b/multilib-testing/lib32-glibc/glibc-2.15-testsuite.patch deleted file mode 100644 index 7eaeaed65..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-testsuite.patch +++ /dev/null @@ -1,110 +0,0 @@ -From d4c2917fc5091dae7ab1b30c165becb70d3c3453 Mon Sep 17 00:00:00 2001 -From: Allan McRae <allan@archlinux.org> -Date: Mon, 16 Apr 2012 14:06:47 +1000 -Subject: [PATCH] Fix test-suite failues with -Wl,--as-needed - -Signed-off-by: Allan McRae <allan@archlinux.org> ---- - ChangeLog | 24 ++++++++++++++++++++++++ - elf/Makefile | 21 ++++++++++++++++++++- - nptl/ChangeLog | 5 +++++ - nptl/Makefile | 3 ++- - stdlib/Makefile | 1 + - 5 files changed, 52 insertions(+), 2 deletions(-) - -diff --git a/elf/Makefile b/elf/Makefile -index 57dcab0..47729c3 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -500,6 +500,18 @@ $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb - $(objpfx)tst-initordera4.so: $(objpfx)tst-initordera3.so - $(objpfx)tst-initorder: $(objpfx)tst-initordera4.so $(objpfx)tst-initordera1.so $(objpfx)tst-initorderb2.so - -+LDFLAGS-nodel2mod3.so = $(no-as-needed) -+LDFLAGS-reldepmod5.so = $(no-as-needed) -+LDFLAGS-reldep6mod1.so = $(no-as-needed) -+LDFLAGS-reldep6mod4.so = $(no-as-needed) -+LDFLAGS-reldep8mod3.so = $(no-as-needed) -+LDFLAGS-unload4mod1.so = $(no-as-needed) -+LDFLAGS-unload4mod2.so = $(no-as-needed) -+LDFLAGS-tst-initorder = $(no-as-needed) -+LDFLAGS-tst-initordera2.so = $(no-as-needed) -+LDFLAGS-tst-initordera3.so = $(no-as-needed) -+LDFLAGS-tst-initordera4.so = $(no-as-needed) -+LDFLAGS-tst-initorderb2.so = $(no-as-needed) - LDFLAGS-tst-tlsmod5.so = -nostdlib - LDFLAGS-tst-tlsmod6.so = -nostdlib - -@@ -633,7 +645,7 @@ $(objpfx)vismain.out: $(addprefix $(objpfx),vismod3.so) - vismain-ENV = LD_PRELOAD=$(addprefix $(objpfx),vismod3.so) - - $(objpfx)noload: $(objpfx)testobj1.so $(common-objpfx)dlfcn/libdl.so --LDFLAGS-noload = -rdynamic -+LDFLAGS-noload = -rdynamic $(no-as-needed) - $(objpfx)noload.out: $(objpfx)testobj5.so - - $(objpfx)noload-mem: $(objpfx)noload.out -@@ -678,6 +690,7 @@ $(objpfx)reldep4: $(libdl) - $(objpfx)reldep4.out: $(objpfx)reldep4mod1.so $(objpfx)reldep4mod2.so - - $(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so $(libdl) -+LDFLAGS-next = $(no-as-needed) - - $(objpfx)unload2: $(libdl) - $(objpfx)unload2.out: $(objpfx)unload2mod.so $(objpfx)unload2dep.so -@@ -1025,6 +1038,8 @@ $(objpfx)order2mod1.so: $(objpfx)order2mod4.so - $(objpfx)order2mod4.so: $(objpfx)order2mod3.so - $(objpfx)order2mod2.so: $(objpfx)order2mod3.so - order2mod2.so-no-z-defs = yes -+LDFLAGS-order2mod1.so = $(no-as-needed) -+LDFLAGS-order2mod2.so = $(no-as-needed) - - tst-stackguard1-ARGS = --command "$(built-program-cmd) --child" - tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child" -@@ -1113,6 +1128,10 @@ $(objpfx)tst-initorder2: $(objpfx)tst-initorder2a.so $(objpfx)tst-initorder2d.so - $(objpfx)tst-initorder2a.so: $(objpfx)tst-initorder2b.so - $(objpfx)tst-initorder2b.so: $(objpfx)tst-initorder2c.so - $(objpfx)tst-initorder2c.so: $(objpfx)tst-initorder2d.so -+LDFLAGS-tst-initorder2 = $(no-as-needed) -+LDFLAGS-tst-initorder2a.so = $(no-as-needed) -+LDFLAGS-tst-initorder2b.so = $(no-as-needed) -+LDFLAGS-tst-initorder2c.so = $(no-as-needed) - define o-iterator-doit - $(objpfx)tst-initorder2$o.os: tst-initorder2.c; \ - $$(compile-command.c) -DNAME=\"$o\" -diff --git a/nptl/Makefile b/nptl/Makefile -index 09acd8a..07a1022 100644 ---- a/nptl/Makefile -+++ b/nptl/Makefile -@@ -458,6 +458,7 @@ $(objpfx)tst-tls4: $(libdl) $(shared-thread-library) - $(objpfx)tst-tls4.out: $(objpfx)tst-tls4moda.so $(objpfx)tst-tls4modb.so - - $(objpfx)tst-tls5: $(objpfx)tst-tls5mod.so $(shared-thread-library) -+LDFLAGS-tst-tls5 = $(no-as-needed) - LDFLAGS-tst-tls5mod.so = -Wl,-soname,tst-tls5mod.so - - ifeq ($(build-shared),yes) -@@ -503,7 +504,7 @@ $(objpfx)tst-clock2: $(common-objpfx)rt/librt.a - $(objpfx)tst-rwlock14: $(common-objpfx)rt/librt.a - endif - --LDFLAGS-tst-cancel24 = -lstdc++ -+LDFLAGS-tst-cancel24 = $(no-as-needed) -lstdc++ - - extra-B-pthread.so = -B$(common-objpfx)nptl/ - $(objpfx)libpthread.so: $(addprefix $(objpfx),$(crti-objs) $(crtn-objs)) -diff --git a/stdlib/Makefile b/stdlib/Makefile -index 44eb20d..f7811c5 100644 ---- a/stdlib/Makefile -+++ b/stdlib/Makefile -@@ -138,6 +138,7 @@ $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg - $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)stdlib/ - - $(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so -+LDFLAGS-tst-putenv = $(no-as-needed) - - $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os - $(build-module) --- -1.7.3.4 - diff --git a/multilib-testing/lib32-glibc/glibc-2.15-vdso.patch b/multilib-testing/lib32-glibc/glibc-2.15-vdso.patch deleted file mode 100644 index 7fd394f90..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-vdso.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/elf/Makefile b/elf/Makefile -index 8234ba7..25ffc57 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -1203,3 +1203,14 @@ $(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so - $(objpfx)tst-relsort1mod2.so: $(libm) - $(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \ - $(objpfx)tst-relsort1mod2.so -+ -+tests: $(objpfx)tst-unused-dep.out -+ -+$(objpfx)tst-unused-dep.out: $(objpfx)testobj1.so -+ LD_TRACE_LOADED_OBJECTS=1 \ -+ LD_DEBUG=unused \ -+ LD_PRELOAD= \ -+ $(elf-objpfx)${rtld-installed-name} \ -+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ -+ $< > $@ -+ cmp $@ /dev/null > /dev/null -diff --git a/elf/rtld.c b/elf/rtld.c -index 2e4f97f..3e15447 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -1,5 +1,5 @@ - /* Run time dynamic linker. -- Copyright (C) 1995-2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1995-2012 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 -@@ -1375,6 +1375,9 @@ of this helper program; chances are you did not intend to run this program.\n\ - _dl_setup_hash (l); - l->l_relocated = 1; - -+ /* The vDSO is always used. */ -+ l->l_used = 1; -+ - /* Initialize l_local_scope to contain just this map. This allows - the use of dl_lookup_symbol_x to resolve symbols within the vdso. - So we create a single entry list pointing to l_real as its only diff --git a/multilib-testing/lib32-glibc/glibc-2.15-vfprintf-nargs.patch b/multilib-testing/lib32-glibc/glibc-2.15-vfprintf-nargs.patch deleted file mode 100644 index f8dde53f5..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.15-vfprintf-nargs.patch +++ /dev/null @@ -1,180 +0,0 @@ -diff --git a/stdio-common/Makefile b/stdio-common/Makefile -index a847b28..080badc 100644 ---- a/stdio-common/Makefile -+++ b/stdio-common/Makefile -@@ -59,7 +59,8 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \ - tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ - tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ - bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ -- scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 -+ scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \ -+ bug-vfprintf-nargs - - test-srcs = tst-unbputc tst-printf - -diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c -new file mode 100644 -index 0000000..13c66c0 ---- /dev/null -+++ b/stdio-common/bug-vfprintf-nargs.c -@@ -0,0 +1,78 @@ -+/* Test for vfprintf nargs allocation overflow (BZ #13656). -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Kees Cook <keescook@chromium.org>, 2012. -+ -+ 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. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <stdint.h> -+#include <unistd.h> -+#include <inttypes.h> -+#include <string.h> -+#include <signal.h> -+ -+static int -+format_failed (const char *fmt, const char *expected) -+{ -+ char output[80]; -+ -+ printf ("%s : ", fmt); -+ -+ memset (output, 0, sizeof output); -+ /* Having sprintf itself detect a failure is good. */ -+ if (sprintf (output, fmt, 1, 2, 3, "test") > 0 -+ && strcmp (output, expected) != 0) -+ { -+ printf ("FAIL (output '%s' != expected '%s')\n", output, expected); -+ return 1; -+ } -+ puts ("ok"); -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ int rc = 0; -+ char buf[64]; -+ -+ /* Regular positionals work. */ -+ if (format_failed ("%1$d", "1") != 0) -+ rc = 1; -+ -+ /* Regular width positionals work. */ -+ if (format_failed ("%1$*2$d", " 1") != 0) -+ rc = 1; -+ -+ /* Positional arguments are constructed via read_int, so nargs can only -+ overflow on 32-bit systems. On 64-bit systems, it will attempt to -+ allocate a giant amount of memory and possibly crash, which is the -+ expected situation. Since the 64-bit behavior is arch-specific, only -+ test this on 32-bit systems. */ -+ if (sizeof (long int) == 4) -+ { -+ sprintf (buf, "%%1$d %%%" PRIdPTR "$d", UINT32_MAX / sizeof (int)); -+ if (format_failed (buf, "1 %$d") != 0) -+ rc = 1; -+ } -+ -+ return rc; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c -index 863cd5d..c802e46 100644 ---- a/stdio-common/vfprintf.c -+++ b/stdio-common/vfprintf.c -@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) - 0 if unknown. */ - int readonly_format = 0; - -+ /* For the argument descriptions, which may be allocated on the heap. */ -+ void *args_malloced = NULL; -+ - /* This table maps a character into a number representing a - class. In each step there is a destination label for each - class. */ -@@ -1647,9 +1650,10 @@ do_positional: - determine the size of the array needed to store the argument - attributes. */ - size_t nargs = 0; -- int *args_type; -- union printf_arg *args_value = NULL; -+ size_t bytes_per_arg; -+ union printf_arg *args_value; - int *args_size; -+ int *args_type; - - /* Positional parameters refer to arguments directly. This could - also determine the maximum number of arguments. Track the -@@ -1698,13 +1702,38 @@ do_positional: - - /* Determine the number of arguments the format string consumes. */ - nargs = MAX (nargs, max_ref_arg); -+ /* Calculate total size needed to represent a single argument across -+ all three argument-related arrays. */ -+ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) -+ + sizeof (*args_type); -+ -+ /* Check for potential integer overflow. */ -+ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) -+ { -+ __set_errno (ERANGE); -+ done = -1; -+ goto all_done; -+ } - -- /* Allocate memory for the argument descriptions. */ -- args_type = alloca (nargs * sizeof (int)); -+ /* Allocate memory for all three argument arrays. */ -+ if (__libc_use_alloca (nargs * bytes_per_arg)) -+ args_value = alloca (nargs * bytes_per_arg); -+ else -+ { -+ args_value = args_malloced = malloc (nargs * bytes_per_arg); -+ if (args_value == NULL) -+ { -+ done = -1; -+ goto all_done; -+ } -+ } -+ -+ /* Set up the remaining two arrays to each point past the end of the -+ prior array, since space for all three has been allocated now. */ -+ args_size = &args_value[nargs].pa_int; -+ args_type = &args_size[nargs]; - memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', -- nargs * sizeof (int)); -- args_value = alloca (nargs * sizeof (union printf_arg)); -- args_size = alloca (nargs * sizeof (int)); -+ nargs * sizeof (*args_type)); - - /* XXX Could do sanity check here: If any element in ARGS_TYPE is - still zero after this loop, format is invalid. For now we -@@ -1973,8 +2002,8 @@ do_positional: - } - - all_done: -- if (__builtin_expect (workstart != NULL, 0)) -- free (workstart); -+ free (args_malloced); -+ free (workstart); - /* Unlock the stream. */ - _IO_funlockfile (s); - _IO_cleanup_region_end (0); diff --git a/multilib-testing/lib32-glibc/glibc-2.16-rpcgen-cpp-path.patch b/multilib-testing/lib32-glibc/glibc-2.16-rpcgen-cpp-path.patch deleted file mode 100644 index 822b57294..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.16-rpcgen-cpp-path.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c -index 06d951a..2103b10 100644 ---- a/sunrpc/rpc_main.c -+++ b/sunrpc/rpc_main.c -@@ -75,12 +75,9 @@ struct commandline - - static const char *cmdname; - --#define SVR4_CPP "/usr/ccs/lib/cpp" --#define SUNOS_CPP "/lib/cpp" -- - static const char *svcclosetime = "120"; - static int cppDefined; /* explicit path for C preprocessor */ --static const char *CPP = SUNOS_CPP; -+static const char *CPP = "/lib/cpp"; - static const char CPPFLAGS[] = "-C"; - static char *pathbuf; - static int cpp_pid; -@@ -327,23 +324,17 @@ find_cpp (void) - { - struct stat buf; - -- if (stat (CPP, &buf) < 0) -- { /* /lib/cpp or explicit cpp does not exist */ -- if (cppDefined) -- { -- fprintf (stderr, _ ("cannot find C preprocessor: %s \n"), CPP); -- crash (); -- } -- else -- { /* try the other one */ -- CPP = SVR4_CPP; -- if (stat (CPP, &buf) < 0) -- { /* can't find any cpp */ -- fputs (_ ("cannot find any C preprocessor (cpp)\n"), stdout); -- crash (); -- } -- } -+ if (stat (CPP, &buf) == 0) -+ return; -+ -+ if (cppDefined) /* user specified cpp but it does not exist */ -+ { -+ fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP); -+ crash (); - } -+ -+ /* fall back to system CPP */ -+ CPP = "cpp"; - } - - /* -@@ -374,8 +365,13 @@ open_input (const char *infile, const char *define) - close (1); - dup2 (pd[1], 1); - close (pd[0]); -- execv (arglist[0], (char **) arglist); -- perror ("execv"); -+ execvp (arglist[0], (char **) arglist); -+ if (errno == ENOENT) -+ { -+ fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP); -+ exit (1); -+ } -+ perror ("execvp"); - exit (1); - case -1: - perror ("fork"); diff --git a/multilib-testing/lib32-glibc/glibc-2.16-strncasecmp-segfault.patch b/multilib-testing/lib32-glibc/glibc-2.16-strncasecmp-segfault.patch deleted file mode 100644 index ce91bbe82..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.16-strncasecmp-segfault.patch +++ /dev/null @@ -1,65 +0,0 @@ -diff --git a/string/test-strncasecmp.c b/string/test-strncasecmp.c -index 6c17530..acfe668 100644 ---- a/string/test-strncasecmp.c -+++ b/string/test-strncasecmp.c -@@ -1,5 +1,5 @@ - /* Test and measure strncasecmp functions. -- Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ Copyright (C) 1999-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Jakub Jelinek <jakub@redhat.com>, 1999. - -@@ -251,9 +251,9 @@ do_random_tests (void) - } - } - -- -+/* Regression test for BZ #12205 */ - static void --check1 (void) -+bz12205 (void) - { - static char cp [4096+16] __attribute__ ((aligned(4096))); - static char gotrel[4096] __attribute__ ((aligned(4096))); -@@ -270,6 +270,15 @@ check1 (void) - check_result (impl, s1, s2, n, exp_result); - } - -+/* Regression test for BZ #14195 */ -+static void -+bz14195 (void) -+{ -+ const char *empty_string = ""; -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, empty_string, "", 5, 0); -+} -+ - int - test_main (void) - { -@@ -277,7 +286,8 @@ test_main (void) - - test_init (); - -- check1 (); -+ bz12205 (); -+ bz14195 (); - - printf ("%23s", ""); - FOR_EACH_IMPL (impl, 0) -diff --git a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S -index 5e6321e..9735ad0 100644 ---- a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S -+++ b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S -@@ -2445,7 +2445,7 @@ L(less16bytes_sncmp): - # endif - jne L(neq_sncmp) - test %cl, %cl -- je L(eq) -+ je L(eq_sncmp) - - cmp $1, REM - je L(eq_sncmp) --- -1.7.3.4 - diff --git a/multilib-testing/lib32-glibc/glibc-2.16-strtod-overflow.patch b/multilib-testing/lib32-glibc/glibc-2.16-strtod-overflow.patch deleted file mode 100644 index 526296325..000000000 --- a/multilib-testing/lib32-glibc/glibc-2.16-strtod-overflow.patch +++ /dev/null @@ -1,389 +0,0 @@ -diff --git a/stdlib/Makefile b/stdlib/Makefile -index f7811c5..79c9acb 100644 ---- a/stdlib/Makefile -+++ b/stdlib/Makefile -@@ -68,7 +68,8 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ - tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \ - tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \ - tst-makecontext2 tst-strtod6 tst-unsetenv1 \ -- tst-makecontext3 bug-getcontext bug-fmtmsg1 -+ tst-makecontext3 bug-getcontext bug-fmtmsg1 \ -+ tst-strtod-overflow - - include ../Makeconfig - -diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c -index 2166a08..a8a7ea8 100644 ---- a/stdlib/strtod_l.c -+++ b/stdlib/strtod_l.c -@@ -60,6 +60,7 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, - #include <math.h> - #include <stdlib.h> - #include <string.h> -+#include <stdint.h> - - /* The gmp headers need some configuration frobs. */ - #define HAVE_ALLOCA 1 -@@ -72,7 +73,6 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, - #include "longlong.h" - #include "fpioconst.h" - --#define NDEBUG 1 - #include <assert.h> - - -@@ -174,19 +174,19 @@ extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1]; - /* Return a floating point number of the needed type according to the given - multi-precision number after possible rounding. */ - static FLOAT --round_and_return (mp_limb_t *retval, int exponent, int negative, -+round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, - mp_limb_t round_limb, mp_size_t round_bit, int more_bits) - { - if (exponent < MIN_EXP - 1) - { -- mp_size_t shift = MIN_EXP - 1 - exponent; -- -- if (shift > MANT_DIG) -+ if (exponent < MIN_EXP - 1 - MANT_DIG) - { - __set_errno (ERANGE); - return 0.0; - } - -+ mp_size_t shift = MIN_EXP - 1 - exponent; -+ - more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; - if (shift == MANT_DIG) - /* This is a special case to handle the very seldom case where -@@ -233,6 +233,9 @@ round_and_return (mp_limb_t *retval, int exponent, int negative, - __set_errno (ERANGE); - } - -+ if (exponent > MAX_EXP) -+ goto overflow; -+ - if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0 - && (more_bits || (retval[0] & 1) != 0 - || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0)) -@@ -258,6 +261,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative, - } - - if (exponent > MAX_EXP) -+ overflow: - return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; - - return MPN2FLOAT (retval, exponent, negative); -@@ -271,7 +275,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative, - factor for the resulting number (see code) multiply by it. */ - static const STRING_TYPE * - str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, -- int *exponent -+ intmax_t *exponent - #ifndef USE_WIDE_CHAR - , const char *decimal, size_t decimal_len, const char *thousands - #endif -@@ -301,6 +305,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, - cy += __mpn_add_1 (n, n, *nsize, low); - if (cy != 0) - { -+ assert (*nsize < MPNSIZE); - n[*nsize] = cy; - ++(*nsize); - } -@@ -335,7 +340,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, - } - while (--digcnt > 0); - -- if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB) -+ if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt) - { - low *= _tens_in_limb[*exponent]; - start = _tens_in_limb[cnt + *exponent]; -@@ -355,7 +360,10 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, - cy = __mpn_mul_1 (n, n, *nsize, start); - cy += __mpn_add_1 (n, n, *nsize, low); - if (cy != 0) -- n[(*nsize)++] = cy; -+ { -+ assert (*nsize < MPNSIZE); -+ n[(*nsize)++] = cy; -+ } - } - - return str; -@@ -413,7 +421,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - { - int negative; /* The sign of the number. */ - MPN_VAR (num); /* MP representation of the number. */ -- int exponent; /* Exponent of the number. */ -+ intmax_t exponent; /* Exponent of the number. */ - - /* Numbers starting `0X' or `0x' have to be processed with base 16. */ - int base = 10; -@@ -435,7 +443,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - /* Points at the character following the integer and fractional digits. */ - const STRING_TYPE *expp; - /* Total number of digit and number of digits in integer part. */ -- int dig_no, int_no, lead_zero; -+ size_t dig_no, int_no, lead_zero; - /* Contains the last character read. */ - CHAR_TYPE c; - -@@ -767,7 +775,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - are all or any is really a fractional digit will be decided - later. */ - int_no = dig_no; -- lead_zero = int_no == 0 ? -1 : 0; -+ lead_zero = int_no == 0 ? (size_t) -1 : 0; - - /* Read the fractional digits. A special case are the 'american - style' numbers like `16.' i.e. with decimal point but without -@@ -789,12 +797,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c); - lo >= L_('a') && lo <= L_('f'); }))) - { -- if (c != L_('0') && lead_zero == -1) -+ if (c != L_('0') && lead_zero == (size_t) -1) - lead_zero = dig_no - int_no; - ++dig_no; - c = *++cp; - } - } -+ assert (dig_no <= (uintmax_t) INTMAX_MAX); - - /* Remember start of exponent (if any). */ - expp = cp; -@@ -817,24 +826,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - - if (c >= L_('0') && c <= L_('9')) - { -- int exp_limit; -+ intmax_t exp_limit; - - /* Get the exponent limit. */ - if (base == 16) -- exp_limit = (exp_negative ? -- -MIN_EXP + MANT_DIG + 4 * int_no : -- MAX_EXP - 4 * int_no + 4 * lead_zero + 3); -+ { -+ if (exp_negative) -+ { -+ assert (int_no <= (uintmax_t) (INTMAX_MAX -+ + MIN_EXP - MANT_DIG) / 4); -+ exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no; -+ } -+ else -+ { -+ if (int_no) -+ { -+ assert (lead_zero == 0 -+ && int_no <= (uintmax_t) INTMAX_MAX / 4); -+ exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3; -+ } -+ else if (lead_zero == (size_t) -1) -+ { -+ /* The number is zero and this limit is -+ arbitrary. */ -+ exp_limit = MAX_EXP + 3; -+ } -+ else -+ { -+ assert (lead_zero -+ <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4); -+ exp_limit = (MAX_EXP -+ + 4 * (intmax_t) lead_zero -+ + 3); -+ } -+ } -+ } - else -- exp_limit = (exp_negative ? -- -MIN_10_EXP + MANT_DIG + int_no : -- MAX_10_EXP - int_no + lead_zero + 1); -+ { -+ if (exp_negative) -+ { -+ assert (int_no -+ <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG)); -+ exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no; -+ } -+ else -+ { -+ if (int_no) -+ { -+ assert (lead_zero == 0 -+ && int_no <= (uintmax_t) INTMAX_MAX); -+ exp_limit = MAX_10_EXP - (intmax_t) int_no + 1; -+ } -+ else if (lead_zero == (size_t) -1) -+ { -+ /* The number is zero and this limit is -+ arbitrary. */ -+ exp_limit = MAX_10_EXP + 1; -+ } -+ else -+ { -+ assert (lead_zero -+ <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1)); -+ exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1; -+ } -+ } -+ } -+ -+ if (exp_limit < 0) -+ exp_limit = 0; - - do - { -- exponent *= 10; -- exponent += c - L_('0'); -- -- if (__builtin_expect (exponent > exp_limit, 0)) -+ if (__builtin_expect ((exponent > exp_limit / 10 -+ || (exponent == exp_limit / 10 -+ && c - L_('0') > exp_limit % 10)), 0)) - /* The exponent is too large/small to represent a valid - number. */ - { -@@ -843,7 +908,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - /* We have to take care for special situation: a joker - might have written "0.0e100000" which is in fact - zero. */ -- if (lead_zero == -1) -+ if (lead_zero == (size_t) -1) - result = negative ? -0.0 : 0.0; - else - { -@@ -862,6 +927,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - /* NOTREACHED */ - } - -+ exponent *= 10; -+ exponent += c - L_('0'); -+ - c = *++cp; - } - while (c >= L_('0') && c <= L_('9')); -@@ -930,7 +998,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - } - #endif - startp += lead_zero + decimal_len; -- exponent -= base == 16 ? 4 * lead_zero : lead_zero; -+ assert (lead_zero <= (base == 16 -+ ? (uintmax_t) INTMAX_MAX / 4 -+ : (uintmax_t) INTMAX_MAX)); -+ assert (lead_zero <= (base == 16 -+ ? ((uintmax_t) exponent -+ - (uintmax_t) INTMAX_MIN) / 4 -+ : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN))); -+ exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero; - dig_no -= lead_zero; - } - -@@ -972,7 +1047,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - } - - /* Adjust the exponent for the bits we are shifting in. */ -- exponent += bits - 1 + (int_no - 1) * 4; -+ assert (int_no <= (uintmax_t) (exponent < 0 -+ ? (INTMAX_MAX - bits + 1) / 4 -+ : (INTMAX_MAX - exponent - bits + 1) / 4)); -+ exponent += bits - 1 + ((intmax_t) int_no - 1) * 4; - - while (--dig_no > 0 && idx >= 0) - { -@@ -1024,13 +1102,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - really integer digits or belong to the fractional part; i.e. we normalize - 123e-2 to 1.23. */ - { -- register int incr = (exponent < 0 ? MAX (-int_no, exponent) -- : MIN (dig_no - int_no, exponent)); -+ register intmax_t incr = (exponent < 0 -+ ? MAX (-(intmax_t) int_no, exponent) -+ : MIN ((intmax_t) dig_no - (intmax_t) int_no, -+ exponent)); - int_no += incr; - exponent -= incr; - } - -- if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0)) -+ if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0)) - { - __set_errno (ERANGE); - return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; -@@ -1215,7 +1295,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - digits we should have enough bits for the result. The remaining - decimal digits give us the information that more bits are following. - This can be used while rounding. (Two added as a safety margin.) */ -- if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2) -+ if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2) - { - dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2; - more_bits = 1; -@@ -1223,7 +1303,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) - else - more_bits = 0; - -- neg_exp = dig_no - int_no - exponent; -+ neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent; - - /* Construct the denominator. */ - densize = 0; -diff --git a/stdlib/tst-strtod-overflow.c b/stdlib/tst-strtod-overflow.c -new file mode 100644 -index 0000000..668d55b ---- /dev/null -+++ b/stdlib/tst-strtod-overflow.c -@@ -0,0 +1,48 @@ -+/* Test for integer/buffer overflow in strtod. -+ Copyright (C) 2012 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, see -+ <http://www.gnu.org/licenses/>. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+ -+#define EXPONENT "e-2147483649" -+#define SIZE 214748364 -+ -+static int -+do_test (void) -+{ -+ char *p = malloc (1 + SIZE + sizeof (EXPONENT)); -+ if (p == NULL) -+ { -+ puts ("malloc failed, cannot test for overflow"); -+ return 0; -+ } -+ p[0] = '1'; -+ memset (p + 1, '0', SIZE); -+ memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT)); -+ double d = strtod (p, NULL); -+ if (d != 0) -+ { -+ printf ("strtod returned wrong value: %a\n", d); -+ return 1; -+ } -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" --- -1.7.3.4 - diff --git a/multilib-testing/lib32-glibc/glibc-__i686.patch b/multilib-testing/lib32-glibc/glibc-__i686.patch deleted file mode 100644 index 16f84c536..000000000 --- a/multilib-testing/lib32-glibc/glibc-__i686.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/nptl/sysdeps/pthread/pt-initfini.c b/nptl/sysdeps/pthread/pt-initfini.c -index 9c00dc0..f5d4df8 100644 ---- a/nptl/sysdeps/pthread/pt-initfini.c -+++ b/nptl/sysdeps/pthread/pt-initfini.c -@@ -45,6 +45,11 @@ - /* Embed an #include to pull in the alignment and .end directives. */ - asm ("\n#include \"defs.h\""); - -+asm ("\n#if defined __i686 && defined __ASSEMBLER__"); -+asm ("\n#undef __i686"); -+asm ("\n#define __i686 __i686"); -+asm ("\n#endif"); -+ - /* The initial common code ends here. */ - asm ("\n/*@HEADER_ENDS*/"); - -diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h -index 64ef400..726b1df 100644 ---- a/sysdeps/unix/sysv/linux/i386/sysdep.h -+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h -@@ -29,6 +29,10 @@ - #include <dl-sysdep.h> - #include <tls.h> - -+#if defined __i686 && defined __ASSEMBLER__ -+#undef __i686 -+#define __i686 __i686 -+#endif - - /* For Linux we can use the system call table in the header file - /usr/include/asm/unistd.h diff --git a/multilib-testing/lib32-glibc/lib32-glibc.conf b/multilib-testing/lib32-glibc/lib32-glibc.conf deleted file mode 100644 index 9b08c3f43..000000000 --- a/multilib-testing/lib32-glibc/lib32-glibc.conf +++ /dev/null @@ -1 +0,0 @@ -/usr/lib32 |