summaryrefslogtreecommitdiff
path: root/multilib-testing/lib32-glibc
diff options
context:
space:
mode:
Diffstat (limited to 'multilib-testing/lib32-glibc')
-rw-r--r--multilib-testing/lib32-glibc/PKGBUILD144
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.14-libdl-crash.patch132
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch26
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch28
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch24
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-arena.patch29
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-avx.patch196
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch297
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch20
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch124
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-feraiseexcept-plt.patch20
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-fix-res_query-assert.patch51
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-fmtmsg-locking.patch148
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-gb18030.patch.gzbin470126 -> 0 bytes
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-ifunc.patch262
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-lddebug-scopes.patch27
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-multiarch-x86-strcmp.patch39
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-nearbyintf-rounding.patch75
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch138
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-non-signalling-comparisons.patch886
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-regex.patch16
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-revert-c5a0802a.patch226
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-revert-netlink-cache.patch680
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-rintf-rounding.patch158
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-scanf.patch19
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-strcasecmp-disable-avx.patch48
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-testsuite.patch110
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-vdso.patch40
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-vfprintf-nargs.patch180
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.16-rpcgen-cpp-path.patch68
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.16-strncasecmp-segfault.patch65
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.16-strtod-overflow.patch389
-rw-r--r--multilib-testing/lib32-glibc/glibc-__i686.patch31
-rw-r--r--multilib-testing/lib32-glibc/lib32-glibc.conf1
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
deleted file mode 100644
index dde59c056..000000000
--- a/multilib-testing/lib32-glibc/glibc-2.15-gb18030.patch.gz
+++ /dev/null
Binary files differ
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, &notfound, 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, &notfound, 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, &notfound, 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, &notfound, 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