summaryrefslogtreecommitdiff
path: root/packages/glibc/2.15
diff options
context:
space:
mode:
Diffstat (limited to 'packages/glibc/2.15')
-rw-r--r--packages/glibc/2.15/101-Suppress-GCC-6-warning-about-ambiguous-else-with-Wpa.patch84
-rw-r--r--packages/glibc/2.15/102-fix-signed-shift-overlow.patch98
-rw-r--r--packages/glibc/2.15/103-dl-openat64-variadic.patch195
-rw-r--r--packages/glibc/2.15/104-unused-variables.patch161
-rw-r--r--packages/glibc/2.15/105-misleading-indentation.patch24
-rw-r--r--packages/glibc/2.15/106-dl-open-array-bounds.patch27
-rw-r--r--packages/glibc/2.15/140-Fix-combreloc-test-BSD-grep.patch44
-rw-r--r--packages/glibc/2.15/300-macos-cross-rpcgen.patch32
-rw-r--r--packages/glibc/2.15/900-cpuid-include.patch548
-rw-r--r--packages/glibc/2.15/910-asm-i686.patch50
-rw-r--r--packages/glibc/2.15/920-fix-rpc_parse-format.patch60
-rw-r--r--packages/glibc/2.15/940-nis-bogus-conditional.patch62
-rw-r--r--packages/glibc/2.15/990-try-link-static.patch171
-rw-r--r--packages/glibc/2.15/991-builtin_expect.patch82
-rw-r--r--packages/glibc/2.15/992-gcc_s-suffix.patch108
-rw-r--r--packages/glibc/2.15/999-new-tools.patch69
-rw-r--r--packages/glibc/2.15/version.desc1
17 files changed, 1816 insertions, 0 deletions
diff --git a/packages/glibc/2.15/101-Suppress-GCC-6-warning-about-ambiguous-else-with-Wpa.patch b/packages/glibc/2.15/101-Suppress-GCC-6-warning-about-ambiguous-else-with-Wpa.patch
new file mode 100644
index 0000000..6fd663a
--- /dev/null
+++ b/packages/glibc/2.15/101-Suppress-GCC-6-warning-about-ambiguous-else-with-Wpa.patch
@@ -0,0 +1,84 @@
+From df1cf48777fe4cd81ad7fb09ecbe5b31432b7c1c Mon Sep 17 00:00:00 2001
+From: Yvan Roux <yvan.roux@linaro.org>
+Date: Fri, 15 Apr 2016 13:29:26 +0200
+Subject: [PATCH] Suppress GCC 6 warning about ambiguous 'else' with
+ -Wparentheses
+
+---
+ ChangeLog | 5 +++++
+ nis/nis_call.c | 20 +++++++++++---------
+ stdlib/setenv.c | 26 ++++++++++++++------------
+ 3 files changed, 30 insertions(+), 21 deletions(-)
+
+diff --git a/nis/nis_call.c b/nis/nis_call.c
+index 3fa37e4..cb7839a 100644
+--- a/nis/nis_call.c
++++ b/nis/nis_call.c
+@@ -680,16 +680,18 @@ nis_server_cache_add (const_nis_name name, int search_parent,
+ /* Choose which entry should be evicted from the cache. */
+ loc = &nis_server_cache[0];
+ if (*loc != NULL)
+- for (i = 1; i < 16; ++i)
+- if (nis_server_cache[i] == NULL)
+- {
++ {
++ for (i = 1; i < 16; ++i)
++ if (nis_server_cache[i] == NULL)
++ {
++ loc = &nis_server_cache[i];
++ break;
++ }
++ else if ((*loc)->uses > nis_server_cache[i]->uses
++ || ((*loc)->uses == nis_server_cache[i]->uses
++ && (*loc)->expires > nis_server_cache[i]->expires))
+ loc = &nis_server_cache[i];
+- break;
+- }
+- else if ((*loc)->uses > nis_server_cache[i]->uses
+- || ((*loc)->uses == nis_server_cache[i]->uses
+- && (*loc)->expires > nis_server_cache[i]->expires))
+- loc = &nis_server_cache[i];
++ }
+ old = *loc;
+ *loc = new;
+
+diff --git a/stdlib/setenv.c b/stdlib/setenv.c
+index da61ee0..e66045f 100644
+--- a/stdlib/setenv.c
++++ b/stdlib/setenv.c
+@@ -278,18 +278,20 @@ unsetenv (const char *name)
+ ep = __environ;
+ if (ep != NULL)
+ while (*ep != NULL)
+- if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+- {
+- /* Found it. Remove this pointer by moving later ones back. */
+- char **dp = ep;
+-
+- do
+- dp[0] = dp[1];
+- while (*dp++);
+- /* Continue the loop in case NAME appears again. */
+- }
+- else
+- ++ep;
++ {
++ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
++ {
++ /* Found it. Remove this pointer by moving later ones back. */
++ char **dp = ep;
++
++ do
++ dp[0] = dp[1];
++ while (*dp++);
++ /* Continue the loop in case NAME appears again. */
++ }
++ else
++ ++ep;
++ }
+
+ UNLOCK;
+
+--
+2.7.4
+
diff --git a/packages/glibc/2.15/102-fix-signed-shift-overlow.patch b/packages/glibc/2.15/102-fix-signed-shift-overlow.patch
new file mode 100644
index 0000000..ef49f83
--- /dev/null
+++ b/packages/glibc/2.15/102-fix-signed-shift-overlow.patch
@@ -0,0 +1,98 @@
+commit 5542236837c5c41435f8282ec92799f480c36f18
+Author: Paul Eggert <eggert@cs.ucla.edu>
+Date: Tue Jul 21 22:50:29 2015 -0700
+
+ Port the 0x7efe...feff pattern to GCC 6.
+
+ See Steve Ellcey's bug report in:
+ https://sourceware.org/ml/libc-alpha/2015-07/msg00673.html
+ * string/memrchr.c (MEMRCHR):
+ * string/rawmemchr.c (RAWMEMCHR):
+ * string/strchr.c (strchr):
+ * string/strchrnul.c (STRCHRNUL):
+ Rewrite code to avoid issues with signed shift overflow.
+
+diff --git a/string/memrchr.c b/string/memrchr.c
+index 0c8fd84..86cd5b9 100644
+--- a/string/memrchr.c
++++ b/string/memrchr.c
+@@ -96,15 +96,8 @@ MEMRCHR
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+-
+- if (sizeof (longword) != 4 && sizeof (longword) != 8)
+- abort ();
+-
+-#if LONG_MAX <= LONG_MAX_32_BITS
+- magic_bits = 0x7efefeff;
+-#else
+- magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
+-#endif
++ magic_bits = -1;
++ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
+
+ /* Set up a longword, each of whose bytes is C. */
+ charmask = c | (c << 8);
+diff --git a/string/rawmemchr.c b/string/rawmemchr.c
+index 05b22be..228ca9d 100644
+--- a/string/rawmemchr.c
++++ b/string/rawmemchr.c
+@@ -86,15 +86,8 @@ RAWMEMCHR (s, c_in)
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+-
+- if (sizeof (longword) != 4 && sizeof (longword) != 8)
+- abort ();
+-
+-#if LONG_MAX <= LONG_MAX_32_BITS
+- magic_bits = 0x7efefeff;
+-#else
+- magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
+-#endif
++ magic_bits = -1;
++ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
+
+ /* Set up a longword, each of whose bytes is C. */
+ charmask = c | (c << 8);
+diff --git a/string/strchr.c b/string/strchr.c
+index 5f90075..f13b2b3 100644
+--- a/string/strchr.c
++++ b/string/strchr.c
+@@ -60,13 +60,8 @@ strchr (const char *s, int c_in)
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+- switch (sizeof (longword))
+- {
+- case 4: magic_bits = 0x7efefeffL; break;
+- case 8: magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL; break;
+- default:
+- abort ();
+- }
++ magic_bits = -1;
++ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
+
+ /* Set up a longword, each of whose bytes is C. */
+ charmask = c | (c << 8);
+diff --git a/string/strchrnul.c b/string/strchrnul.c
+index 2678f1d..daf0b3f 100644
+--- a/string/strchrnul.c
++++ b/string/strchrnul.c
+@@ -66,13 +66,8 @@ STRCHRNUL (s, c_in)
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+- switch (sizeof (longword))
+- {
+- case 4: magic_bits = 0x7efefeffL; break;
+- case 8: magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL; break;
+- default:
+- abort ();
+- }
++ magic_bits = -1;
++ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
+
+ /* Set up a longword, each of whose bytes is C. */
+ charmask = c | (c << 8);
diff --git a/packages/glibc/2.15/103-dl-openat64-variadic.patch b/packages/glibc/2.15/103-dl-openat64-variadic.patch
new file mode 100644
index 0000000..fe94b96
--- /dev/null
+++ b/packages/glibc/2.15/103-dl-openat64-variadic.patch
@@ -0,0 +1,195 @@
+commit 9dd346ff431fc761f1b748bd4da8bb59f7652094
+Author: Joseph Myers <joseph@codesourcery.com>
+Date: Tue Oct 20 11:54:09 2015 +0000
+
+ Convert 113 more function definitions to prototype style (files with assertions).
+
+ This mostly automatically-generated patch converts 113 function
+ definitions in glibc from old-style K&R to prototype-style. Following
+ my other recent such patches, this one deals with the case of function
+ definitions in files that either contain assertions or where grep
+ suggested they might contain assertions - and thus where it isn't
+ possible to use a simple object code comparison as a sanity check on
+ the correctness of the patch, because line numbers are changed.
+
+ A few such automatically-generated changes needed to be supplemented
+ by manual changes for the result to compile. openat64 had a prototype
+ declaration with "..." but an old-style definition in
+ sysdeps/unix/sysv/linux/dl-openat64.c, and "..." needed adding to the
+ generated prototype in the definition (I've filed
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68024> for diagnosing
+ such cases in GCC; the old state was undefined behavior not requiring
+ a diagnostic, but one seems a good idea). In addition, as Florian has
+ noted regparm attribute mismatches between declaration and definition
+ are only diagnosed for prototype definitions, and five functions
+ needed internal_function added to their definitions (in the case of
+ __pthread_mutex_cond_lock, via the macro definition of
+ __pthread_mutex_lock) to compile on i386.
+
+ After this patch is in, remaining old-style definitions are probably
+ most readily fixed manually before we can turn on
+ -Wold-style-definition for all builds.
+
+ Tested for x86_64 and x86 (testsuite).
+
+ * crypt/md5-crypt.c (__md5_crypt_r): Convert to prototype-style
+ function definition.
+ * crypt/sha256-crypt.c (__sha256_crypt_r): Likewise.
+ * crypt/sha512-crypt.c (__sha512_crypt_r): Likewise.
+ * debug/backtracesyms.c (__backtrace_symbols): Likewise.
+ * elf/dl-minimal.c (_itoa): Likewise.
+ * hurd/hurdmalloc.c (malloc): Likewise.
+ (free): Likewise.
+ (realloc): Likewise.
+ * inet/inet6_option.c (inet6_option_space): Likewise.
+ (inet6_option_init): Likewise.
+ (inet6_option_append): Likewise.
+ (inet6_option_alloc): Likewise.
+ (inet6_option_next): Likewise.
+ (inet6_option_find): Likewise.
+ * io/ftw.c (FTW_NAME): Likewise.
+ (NFTW_NAME): Likewise.
+ (NFTW_NEW_NAME): Likewise.
+ (NFTW_OLD_NAME): Likewise.
+ * libio/iofwide.c (_IO_fwide): Likewise.
+ * libio/strops.c (_IO_str_init_static_internal): Likewise.
+ (_IO_str_init_static): Likewise.
+ (_IO_str_init_readonly): Likewise.
+ (_IO_str_overflow): Likewise.
+ (_IO_str_underflow): Likewise.
+ (_IO_str_count): Likewise.
+ (_IO_str_seekoff): Likewise.
+ (_IO_str_pbackfail): Likewise.
+ (_IO_str_finish): Likewise.
+ * libio/wstrops.c (_IO_wstr_init_static): Likewise.
+ (_IO_wstr_overflow): Likewise.
+ (_IO_wstr_underflow): Likewise.
+ (_IO_wstr_count): Likewise.
+ (_IO_wstr_seekoff): Likewise.
+ (_IO_wstr_pbackfail): Likewise.
+ (_IO_wstr_finish): Likewise.
+ * locale/programs/localedef.c (normalize_codeset): Likewise.
+ * locale/programs/locarchive.c (add_locale_to_archive): Likewise.
+ (add_locales_to_archive): Likewise.
+ (delete_locales_from_archive): Likewise.
+ * malloc/malloc.c (__libc_mallinfo): Likewise.
+ * math/gen-auto-libm-tests.c (init_fp_formats): Likewise.
+ * misc/tsearch.c (__tfind): Likewise.
+ * nptl/pthread_attr_destroy.c (__pthread_attr_destroy): Likewise.
+ * nptl/pthread_attr_getdetachstate.c
+ (__pthread_attr_getdetachstate): Likewise.
+ * nptl/pthread_attr_getguardsize.c (pthread_attr_getguardsize):
+ Likewise.
+ * nptl/pthread_attr_getinheritsched.c
+ (__pthread_attr_getinheritsched): Likewise.
+ * nptl/pthread_attr_getschedparam.c
+ (__pthread_attr_getschedparam): Likewise.
+ * nptl/pthread_attr_getschedpolicy.c
+ (__pthread_attr_getschedpolicy): Likewise.
+ * nptl/pthread_attr_getscope.c (__pthread_attr_getscope):
+ Likewise.
+ * nptl/pthread_attr_getstack.c (__pthread_attr_getstack):
+ Likewise.
+ * nptl/pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr):
+ Likewise.
+ * nptl/pthread_attr_getstacksize.c (__pthread_attr_getstacksize):
+ Likewise.
+ * nptl/pthread_attr_init.c (__pthread_attr_init_2_1): Likewise.
+ (__pthread_attr_init_2_0): Likewise.
+ * nptl/pthread_attr_setdetachstate.c
+ (__pthread_attr_setdetachstate): Likewise.
+ * nptl/pthread_attr_setguardsize.c (pthread_attr_setguardsize):
+ Likewise.
+ * nptl/pthread_attr_setinheritsched.c
+ (__pthread_attr_setinheritsched): Likewise.
+ * nptl/pthread_attr_setschedparam.c
+ (__pthread_attr_setschedparam): Likewise.
+ * nptl/pthread_attr_setschedpolicy.c
+ (__pthread_attr_setschedpolicy): Likewise.
+ * nptl/pthread_attr_setscope.c (__pthread_attr_setscope):
+ Likewise.
+ * nptl/pthread_attr_setstack.c (__pthread_attr_setstack):
+ Likewise.
+ * nptl/pthread_attr_setstackaddr.c (__pthread_attr_setstackaddr):
+ Likewise.
+ * nptl/pthread_attr_setstacksize.c (__pthread_attr_setstacksize):
+ Likewise.
+ * nptl/pthread_condattr_setclock.c (pthread_condattr_setclock):
+ Likewise.
+ * nptl/pthread_create.c (__find_in_stack_list): Likewise.
+ * nptl/pthread_getattr_np.c (pthread_getattr_np): Likewise.
+ * nptl/pthread_mutex_cond_lock.c (__pthread_mutex_lock): Define to
+ use internal_function.
+ * nptl/pthread_mutex_init.c (__pthread_mutex_init): Convert to
+ prototype-style function definition.
+ * nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise.
+ (__pthread_mutex_cond_lock_adjust): Likewise. Use
+ internal_function.
+ * nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock):
+ Convert to prototype-style function definition.
+ * nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock):
+ Likewise.
+ * nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
+ Likewise.
+ (__pthread_mutex_unlock): Likewise.
+ * nptl_db/td_ta_clear_event.c (td_ta_clear_event): Likewise.
+ * nptl_db/td_ta_set_event.c (td_ta_set_event): Likewise.
+ * nptl_db/td_thr_clear_event.c (td_thr_clear_event): Likewise.
+ * nptl_db/td_thr_event_enable.c (td_thr_event_enable): Likewise.
+ * nptl_db/td_thr_set_event.c (td_thr_set_event): Likewise.
+ * nss/makedb.c (process_input): Likewise.
+ * posix/fnmatch.c (__strchrnul): Likewise.
+ (__wcschrnul): Likewise.
+ (fnmatch): Likewise.
+ * posix/fnmatch_loop.c (FCT): Likewise.
+ * posix/glob.c (globfree): Likewise.
+ (__glob_pattern_type): Likewise.
+ (__glob_pattern_p): Likewise.
+ * posix/regcomp.c (re_compile_pattern): Likewise.
+ (re_set_syntax): Likewise.
+ (re_compile_fastmap): Likewise.
+ (regcomp): Likewise.
+ (regerror): Likewise.
+ (regfree): Likewise.
+ * posix/regexec.c (regexec): Likewise.
+ (re_match): Likewise.
+ (re_search): Likewise.
+ (re_match_2): Likewise.
+ (re_search_2): Likewise.
+ (re_search_stub): Likewise. Use internal_function
+ (re_copy_regs): Likewise.
+ (re_set_registers): Convert to prototype-style function
+ definition.
+ (prune_impossible_nodes): Likewise. Use internal_function.
+ * resolv/inet_net_pton.c (inet_net_pton): Convert to
+ prototype-style function definition.
+ (inet_net_pton_ipv4): Likewise.
+ * stdlib/strtod_l.c (____STRTOF_INTERNAL): Likewise.
+ * sysdeps/pthread/aio_cancel.c (aio_cancel): Likewise.
+ * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise.
+ * sysdeps/pthread/timer_delete.c (timer_delete): Likewise.
+ * sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
+ Make variadic.
+ * time/strptime_l.c (localtime_r): Convert to prototype-style
+ function definition.
+ * wcsmbs/mbsnrtowcs.c (__mbsnrtowcs): Likewise.
+ * wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Likewise.
+ * wcsmbs/wcsnrtombs.c (__wcsnrtombs): Likewise.
+ * wcsmbs/wcsrtombs.c (__wcsrtombs): Likewise.
+
+diff --git a/sysdeps/unix/sysv/linux/dl-openat64.c b/sysdeps/unix/sysv/linux/dl-openat64.c
+index 7d100bb..7eea0ca 100644
+--- a/sysdeps/unix/sysv/linux/dl-openat64.c
++++ b/sysdeps/unix/sysv/linux/dl-openat64.c
+@@ -23,10 +23,7 @@
+
+
+ int
+-openat64 (dfd, file, oflag)
+- int dfd;
+- const char *file;
+- int oflag;
++openat64 (int dfd, const char *file, int oflag, ...)
+ {
+ assert ((oflag & O_CREAT) == 0);
+
diff --git a/packages/glibc/2.15/104-unused-variables.patch b/packages/glibc/2.15/104-unused-variables.patch
new file mode 100644
index 0000000..63e4a40
--- /dev/null
+++ b/packages/glibc/2.15/104-unused-variables.patch
@@ -0,0 +1,161 @@
+commit 6565fcb6e189d67b5a3f321453daebb805056d73
+Author: Wilco Dijkstra <wdijkstr@arm.com>
+Date: Fri Sep 18 20:27:20 2015 +0100
+
+ Fix several build failures with GCC6 due to unused static variables.
+
+ 2015-09-18 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * resolv/base64.c (rcsid): Remove unused static.
+ * sysdeps/ieee754/dbl-64/atnat2.h (qpi1): Remove unused
+ static. (tqpi1): Likewise.
+ * sysdeps/ieee754/dbl-64/uexp.h (one): Likewise.
+ * sysdeps/ieee754/dbl-64/upow.h (sqrt_2): Likewise.
+ * sysdeps/ieee754/flt-32/e_log10f.c (one): Likewise.
+ * sysdeps/ieee754/flt-32/s_cosf.c (one): Likewise.
+ * sysdeps/ieee754/ldbl-128/e_lgammal_r.c (zero): Likewise.
+ * sysdeps/ieee754/ldbl-128/s_erfl.c (half): Likewise.
+ * sysdeps/ieee754/ldbl-128/s_log1pl.c (maxlog): Likewise.
+ * timezone/private.h (time_t_min): Likewise. (time_t_max):
+ Likewise.
+
+diff --git a/resolv/base64.c b/resolv/base64.c
+index ea584ed..519e5d2 100644
+--- a/resolv/base64.c
++++ b/resolv/base64.c
+@@ -40,10 +40,6 @@
+ * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+-#if !defined(LINT) && !defined(CODECENTER)
+-static const char rcsid[] = "$BINDId: base64.c,v 8.7 1999/10/13 16:39:33 vixie Exp $";
+-#endif /* not lint */
+-
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/socket.h>
+diff --git a/sysdeps/ieee754/dbl-64/atnat2.h b/sysdeps/ieee754/dbl-64/atnat2.h
+index e0d65af..82943f9 100644
+--- a/sysdeps/ieee754/dbl-64/atnat2.h
++++ b/sysdeps/ieee754/dbl-64/atnat2.h
+@@ -65,10 +65,8 @@
+ /**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */
+ /**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */
+ /**/ qpi = {{0x3fe921fb, 0x54442d18} }, /* pi/4 */
+-/**/ qpi1 = {{0x3c81a626, 0x33145c07} }, /* pi/4-qpi */
+ /**/ mqpi = {{0xbfe921fb, 0x54442d18} }, /* -pi/4 */
+ /**/ tqpi = {{0x4002d97c, 0x7f3321d2} }, /* 3pi/4 */
+-/**/ tqpi1 = {{0x3c9a7939, 0x4c9e8a0a} }, /* 3pi/4-tqpi */
+ /**/ mtqpi = {{0xc002d97c, 0x7f3321d2} }, /* -3pi/4 */
+ /**/ u1 = {{0x3c314c2a, 0x00000000} }, /* 9.377e-19 */
+ /**/ u2 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
+@@ -129,10 +127,8 @@
+ /**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */
+ /**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */
+ /**/ qpi = {{0x54442d18, 0x3fe921fb} }, /* pi/4 */
+-/**/ qpi1 = {{0x33145c07, 0x3c81a626} }, /* pi/4-qpi */
+ /**/ mqpi = {{0x54442d18, 0xbfe921fb} }, /* -pi/4 */
+ /**/ tqpi = {{0x7f3321d2, 0x4002d97c} }, /* 3pi/4 */
+-/**/ tqpi1 = {{0x4c9e8a0a, 0x3c9a7939} }, /* 3pi/4-tqpi */
+ /**/ mtqpi = {{0x7f3321d2, 0xc002d97c} }, /* -3pi/4 */
+ /**/ u1 = {{0x00000000, 0x3c314c2a} }, /* 9.377e-19 */
+ /**/ u2 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
+diff --git a/sysdeps/ieee754/dbl-64/uexp.h b/sysdeps/ieee754/dbl-64/uexp.h
+index 6817eaf..42b21f2 100644
+--- a/sysdeps/ieee754/dbl-64/uexp.h
++++ b/sysdeps/ieee754/dbl-64/uexp.h
+@@ -29,7 +29,7 @@
+
+ #include "mydefs.h"
+
+-const static double one = 1.0, zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300,
++const static double zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300,
+ err_0 = 1.000014, err_1 = 0.000016;
+ const static int4 bigint = 0x40862002,
+ badint = 0x40876000,smallint = 0x3C8fffff;
+diff --git a/sysdeps/ieee754/dbl-64/upow.h b/sysdeps/ieee754/dbl-64/upow.h
+index c8569a9..b4911e5 100644
+--- a/sysdeps/ieee754/dbl-64/upow.h
++++ b/sysdeps/ieee754/dbl-64/upow.h
+@@ -34,7 +34,6 @@
+ /**/ INF = {{0x7ff00000, 0x00000000}}, /* INF */
+ /**/ nINF = {{0xfff00000, 0x00000000}}, /* -INF */
+ /**/ NaNQ = {{0x7ff80000, 0x00000000}}, /* NaNQ */
+-/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc}}, /* sqrt(2) */
+ /**/ ln2a = {{0x3fe62e42, 0xfefa3800}}, /* ln(2) 43 bits */
+ /**/ ln2b = {{0x3d2ef357, 0x93c76730}}, /* ln(2)-ln2a */
+ /**/ bigu = {{0x4297ffff, 0xfffffd2c}}, /* 1.5*2**42 -724*2**-10 */
+@@ -48,7 +47,6 @@
+ /**/ INF = {{0x00000000, 0x7ff00000}}, /* INF */
+ /**/ nINF = {{0x00000000, 0xfff00000}}, /* -INF */
+ /**/ NaNQ = {{0x00000000, 0x7ff80000}}, /* NaNQ */
+-/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e}}, /* sqrt(2) */
+ /**/ ln2a = {{0xfefa3800, 0x3fe62e42}}, /* ln(2) 43 bits */
+ /**/ ln2b = {{0x93c76730, 0x3d2ef357}}, /* ln(2)-ln2a */
+ /**/ bigu = {{0xfffffd2c, 0x4297ffff}}, /* 1.5*2**42 -724*2**-10 */
+diff --git a/sysdeps/ieee754/flt-32/e_log10f.c b/sysdeps/ieee754/flt-32/e_log10f.c
+index 96f0e81..1daeef7 100644
+--- a/sysdeps/ieee754/flt-32/e_log10f.c
++++ b/sysdeps/ieee754/flt-32/e_log10f.c
+@@ -22,8 +22,6 @@ ivln10 = 4.3429449201e-01, /* 0x3ede5bd9 */
+ log10_2hi = 3.0102920532e-01, /* 0x3e9a2080 */
+ log10_2lo = 7.9034151668e-07; /* 0x355427db */
+
+-static const float zero = 0.0;
+-
+ float
+ __ieee754_log10f(float x)
+ {
+diff --git a/sysdeps/ieee754/flt-32/s_cosf.c b/sysdeps/ieee754/flt-32/s_cosf.c
+index 864ab27..0affd40 100644
+--- a/sysdeps/ieee754/flt-32/s_cosf.c
++++ b/sysdeps/ieee754/flt-32/s_cosf.c
+@@ -21,12 +21,6 @@ static char rcsid[] = "$NetBSD: s_cosf.c,v 1.4 1995/05/10 20:47:03 jtc Exp $";
+ #include "math.h"
+ #include "math_private.h"
+
+-#ifdef __STDC__
+-static const float one=1.0;
+-#else
+-static float one=1.0;
+-#endif
+-
+ #ifdef __STDC__
+ float __cosf(float x)
+ #else
+diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
+index 500aacc..ab5a96e 100644
+--- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
++++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
+@@ -82,7 +82,6 @@ DIAG_IGNORE_NEEDS_COMMENT (4.6, "-Woverflow");
+ static const long double PIL = 3.1415926535897932384626433832795028841972E0L;
+ static const long double MAXLGM = 1.0485738685148938358098967157129705071571E4928L;
+ static const long double one = 1.0L;
+-static const long double zero = 0.0L;
+ static const long double huge = 1.0e4000L;
+
+ /* log gamma(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x P(1/x^2)
+diff --git a/sysdeps/ieee754/ldbl-128/s_erfl.c b/sysdeps/ieee754/ldbl-128/s_erfl.c
+index fa4609f..08c80a3 100644
+--- a/sysdeps/ieee754/ldbl-128/s_erfl.c
++++ b/sysdeps/ieee754/ldbl-128/s_erfl.c
+@@ -140,7 +140,6 @@ deval (long double x, const long double *p, int n)
+ static long double
+ #endif
+ tiny = 1e-4931L,
+- half = 0.5L,
+ one = 1.0L,
+ two = 2.0L,
+ /* 2/sqrt(pi) - 1 */
+diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c
+index ff759bc..9609550 100644
+--- a/sysdeps/ieee754/ldbl-128/s_log1pl.c
++++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c
+@@ -117,7 +117,6 @@ static const long double C2 = 1.428606820309417232121458176568075500134E-6L;
+
+ static const long double sqrth = 0.7071067811865475244008443621048490392848L;
+ /* ln (2^16384 * (1 - 2^-113)) */
+-static const long double maxlog = 1.1356523406294143949491931077970764891253E4L;
+ static const long double zero = 0.0L;
+
+ long double
diff --git a/packages/glibc/2.15/105-misleading-indentation.patch b/packages/glibc/2.15/105-misleading-indentation.patch
new file mode 100644
index 0000000..1dd8d85
--- /dev/null
+++ b/packages/glibc/2.15/105-misleading-indentation.patch
@@ -0,0 +1,24 @@
+commit 976ef870542580cf5fed896c2c652b3e1a95f9da
+Author: Steve Ellcey <sellcey@mips.com>
+Date: Fri Dec 11 09:19:37 2015 -0800
+
+ Fix indentation.
+
+ * sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f):
+ Fix indentation.
+
+diff --git a/sysdeps/ieee754/flt-32/k_rem_pio2f.c b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
+index 0c7685c..392afdb 100644
+--- a/sysdeps/ieee754/flt-32/k_rem_pio2f.c
++++ b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
+@@ -65,7 +65,9 @@ int __kernel_rem_pio2f(float *x, float *y, int e0, int nx, int prec, const int32
+
+ /* compute q[0],q[1],...q[jk] */
+ for (i=0;i<=jk;i++) {
+- for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw;
++ for(j=0,fw=0.0;j<=jx;j++)
++ fw += x[j]*f[jx+i-j];
++ q[i] = fw;
+ }
+
+ jz = jk;
diff --git a/packages/glibc/2.15/106-dl-open-array-bounds.patch b/packages/glibc/2.15/106-dl-open-array-bounds.patch
new file mode 100644
index 0000000..bdb5c19
--- /dev/null
+++ b/packages/glibc/2.15/106-dl-open-array-bounds.patch
@@ -0,0 +1,27 @@
+commit 328c44c3670ebf6c1bd790acddce65a12998cd6c
+Author: Roland McGrath <roland@hack.frob.com>
+Date: Fri Apr 17 12:11:58 2015 -0700
+
+ Fuller check for invalid NSID in _dl_open.
+
+diff --git a/elf/dl-open.c b/elf/dl-open.c
+index 0dbe07f..2d0e082 100644
+--- a/elf/dl-open.c
++++ b/elf/dl-open.c
+@@ -619,8 +619,14 @@ no more namespaces available for dlmopen()"));
+ /* Never allow loading a DSO in a namespace which is empty. Such
+ direct placements is only causing problems. Also don't allow
+ loading into a namespace used for auditing. */
+- else if (__builtin_expect (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER, 0)
+- && (GL(dl_ns)[nsid]._ns_nloaded == 0
++ else if ((nsid != LM_ID_BASE && nsid != __LM_ID_CALLER)
++ && ((nsid < 0 || nsid >= GL(dl_nns))
++ /* This prevents the [NSID] index expressions from being
++ evaluated, so the compiler won't think that we are
++ accessing an invalid index here in the !SHARED case where
++ DL_NNS is 1 and so any NSID != 0 is invalid. */
++ || DL_NNS == 1
++ || GL(dl_ns)[nsid]._ns_nloaded == 0
+ || GL(dl_ns)[nsid]._ns_loaded->l_auditing))
+ _dl_signal_error (EINVAL, file, NULL,
+ N_("invalid target namespace in dlmopen()"));
diff --git a/packages/glibc/2.15/140-Fix-combreloc-test-BSD-grep.patch b/packages/glibc/2.15/140-Fix-combreloc-test-BSD-grep.patch
new file mode 100644
index 0000000..c36cdf4
--- /dev/null
+++ b/packages/glibc/2.15/140-Fix-combreloc-test-BSD-grep.patch
@@ -0,0 +1,44 @@
+From 61d5f9c09b3157db76bd1a393e248c262a8d9dd4 Mon Sep 17 00:00:00 2001
+From: Alexey Neyman <stilor@att.net>
+Date: Wed, 8 Mar 2017 14:31:10 -0800
+Subject: [PATCH] Fix combreloc test with BSD grep
+
+The test for "-z combreloc" fails when cross-compiling on a machine
+that uses BSD grep (e.g. on macos). grep complains about empty
+subexpression and exits with non-zero status, which is interpreted
+by configure as "not found". As a result, support for "-z combreloc"
+(HAVE_Z_COMBRELOC) is not detected, leading to link failure on SPARC.
+
+ * configure.ac: Avoid empty subexpression in grep.
+
+Signed-off-by: Alexey Neyman <stilor@att.net>
+---
+ ChangeLog | 5 +++++
+ configure | 2 +-
+ configure.ac | 2 +-
+ 3 files changed, 7 insertions(+), 2 deletions(-)
+
+diff -urpN glibc-2.15.orig/configure glibc-2.15/configure
+--- glibc-2.15.orig/configure 2012-03-19 07:56:58.000000000 -0700
++++ glibc-2.15/configure 2017-03-08 21:02:21.000000000 -0800
+@@ -6566,7 +6566,7 @@ EOF
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+ then
+- if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
++ if $READELF -S conftest.so | grep '\.\(rel\|rela\)\.dyn' > /dev/null; then
+ libc_cv_z_combreloc=yes
+ else
+ libc_cv_z_combreloc=no
+diff -urpN glibc-2.15.orig/configure.in glibc-2.15/configure.in
+--- glibc-2.15.orig/configure.in 2012-01-01 04:16:32.000000000 -0800
++++ glibc-2.15/configure.in 2017-03-08 21:01:54.000000000 -0800
+@@ -1716,7 +1716,7 @@ dnl cross-platform since the gcc used ca
+ dnl introducing new options this is not easily doable. Instead use a tool
+ dnl which always is cross-platform: readelf. To detect whether -z combreloc
+ dnl look for a section named .rel.dyn.
+- if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
++ if $READELF -S conftest.so | grep '\.\(rel\|rela\)\.dyn' > /dev/null; then
+ libc_cv_z_combreloc=yes
+ else
+ libc_cv_z_combreloc=no
diff --git a/packages/glibc/2.15/300-macos-cross-rpcgen.patch b/packages/glibc/2.15/300-macos-cross-rpcgen.patch
new file mode 100644
index 0000000..e654644
--- /dev/null
+++ b/packages/glibc/2.15/300-macos-cross-rpcgen.patch
@@ -0,0 +1,32 @@
+commit ae7080d30c68cfa0c81ce3422dca948f64a94f50
+Author: Jia Liu <proljc@gmail.com>
+Date: Sat Sep 7 00:01:08 2013 +0800
+
+ sunrpc/rpc/types.h: fix OS X and FreeBSD build problems
+
+ When I build arm-linux-gcc on OS X, I find glibc will get a build error
+ in sunrpc/rpc/types.h, so I add __APPLE_CC__ to make OS X build OK.
+ For FreeBSD, Add __FreeBSD__ to make it build OK, too.
+
+ URL: http://sourceware.org/ml/libc-alpha/2013-09/msg00155.html
+ URL: http://sourceware.org/ml/libc-alpha/2013-09/msg00217.html
+ URL: http://sourceware.org/ml/libc-alpha/2013-09/msg00240.html
+ Signed-off-by: Jia Liu <proljc@gmail.com>
+ Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+
+diff --git a/sunrpc/rpc/types.h b/sunrpc/rpc/types.h
+index 3dca5c4..beded52 100644
+--- a/sunrpc/rpc/types.h
++++ b/sunrpc/rpc/types.h
+@@ -69,6 +69,11 @@ typedef unsigned long rpcport_t;
+ #include <sys/types.h>
+ #endif
+
++#if defined __APPLE_CC__ || defined __FreeBSD__
++# define __u_char_defined
++# define __daddr_t_defined
++#endif
++
+ #ifndef __u_char_defined
+ typedef __u_char u_char;
+ typedef __u_short u_short;
diff --git a/packages/glibc/2.15/900-cpuid-include.patch b/packages/glibc/2.15/900-cpuid-include.patch
new file mode 100644
index 0000000..29edf7b
--- /dev/null
+++ b/packages/glibc/2.15/900-cpuid-include.patch
@@ -0,0 +1,548 @@
+[As applied to 2.15]
+
+This patch fixes another configure test issue when bootstrapping.
+sysdeps/i386/configure.in uses the obsolete AC_HEADER_CHECK macro to
+test for cpuid.h, and that macro tries to include various other
+standard headers (which come from the library, unlike cpuid.h which
+comes from the compiler, so aren't available when bootstrapping) in
+the test code it compiles. This patch changes the code to use
+AC_CHECK_HEADER, with the fourth argument used to prevent any default
+includes being used in the test.
+
+Tested x86_64 (native).
+
+2012-03-07 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/i386/configure.in (cpuid.h): Use AC_CHECK_HEADER with no
+ default includes instead of AC_HEADER_CHECK.
+ * sysdeps/i386/configure: Regenerated.
+
+Origin: http://sourceware.org/ml/libc-alpha/2012-03/msg00177.html
+
+diff -urpN '--exclude=autom4te.cache' glibc-2.15.orig/sysdeps/i386/configure glibc-2.15/sysdeps/i386/configure
+--- glibc-2.15.orig/sysdeps/i386/configure 2017-02-08 14:28:19.947516097 -0800
++++ glibc-2.15/sysdeps/i386/configure 2017-02-08 17:25:19.756462280 -0800
+@@ -16,23 +16,6 @@ as_fn_exit ()
+ as_fn_set_status $1
+ exit $1
+ } # as_fn_exit
+-# as_fn_arith ARG...
+-# ------------------
+-# Perform arithmetic evaluation on the ARGs, and store the result in the
+-# global $as_val. Take advantage of shells that can avoid forks. The arguments
+-# must be portable across $(()) and expr.
+-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+- eval 'as_fn_arith ()
+- {
+- as_val=$(( $* ))
+- }'
+-else
+- as_fn_arith ()
+- {
+- as_val=`expr "$@" || test $? -eq 1`
+- }
+-fi # as_fn_arith
+-
+ if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+@@ -97,42 +80,6 @@ $as_echo X/"$0" |
+ exit
+ }
+
+-# Factoring default headers for most tests.
+-ac_includes_default="\
+-#include <stdio.h>
+-#ifdef HAVE_SYS_TYPES_H
+-# include <sys/types.h>
+-#endif
+-#ifdef HAVE_SYS_STAT_H
+-# include <sys/stat.h>
+-#endif
+-#ifdef STDC_HEADERS
+-# include <stdlib.h>
+-# include <stddef.h>
+-#else
+-# ifdef HAVE_STDLIB_H
+-# include <stdlib.h>
+-# endif
+-#endif
+-#ifdef HAVE_STRING_H
+-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+-# include <memory.h>
+-# endif
+-# include <string.h>
+-#endif
+-#ifdef HAVE_STRINGS_H
+-# include <strings.h>
+-#endif
+-#ifdef HAVE_INTTYPES_H
+-# include <inttypes.h>
+-#endif
+-#ifdef HAVE_STDINT_H
+-# include <stdint.h>
+-#endif
+-#ifdef HAVE_UNISTD_H
+-# include <unistd.h>
+-#endif"
+-
+
+ # ac_fn_c_try_compile LINENO
+ # --------------------------
+@@ -172,172 +119,6 @@ fi
+
+ } # ac_fn_c_try_compile
+
+-# ac_fn_c_try_cpp LINENO
+-# ----------------------
+-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+-ac_fn_c_try_cpp ()
+-{
+- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+- if { { ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+-$as_echo "$ac_try_echo"; } >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+- ac_status=$?
+- if test -s conftest.err; then
+- grep -v '^ *+' conftest.err >conftest.er1
+- cat conftest.er1 >&5
+- mv -f conftest.er1 conftest.err
+- fi
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; } > conftest.i && {
+- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+- test ! -s conftest.err
+- }; then :
+- ac_retval=0
+-else
+- $as_echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_retval=1
+-fi
+- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+- as_fn_set_status $ac_retval
+-
+-} # ac_fn_c_try_cpp
+-
+-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+-# -------------------------------------------------------
+-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+-# the include files in INCLUDES and setting the cache variable VAR
+-# accordingly.
+-ac_fn_c_check_header_mongrel ()
+-{
+- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+- if eval \${$3+:} false; then :
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+-$as_echo_n "checking for $2... " >&6; }
+-if eval \${$3+:} false; then :
+- $as_echo_n "(cached) " >&6
+-fi
+-eval ac_res=\$$3
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+-$as_echo "$ac_res" >&6; }
+-else
+- # Is the header compilable?
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+-$as_echo_n "checking $2 usability... " >&6; }
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-$4
+-#include <$2>
+-_ACEOF
+-if ac_fn_c_try_compile "$LINENO"; then :
+- ac_header_compiler=yes
+-else
+- ac_header_compiler=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+-$as_echo "$ac_header_compiler" >&6; }
+-
+-# Is the header present?
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+-$as_echo_n "checking $2 presence... " >&6; }
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <$2>
+-_ACEOF
+-if ac_fn_c_try_cpp "$LINENO"; then :
+- ac_header_preproc=yes
+-else
+- ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.i conftest.$ac_ext
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+-$as_echo "$ac_header_preproc" >&6; }
+-
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+- yes:no: )
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+- ;;
+- no:yes:* )
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+- ;;
+-esac
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+-$as_echo_n "checking for $2... " >&6; }
+-if eval \${$3+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- eval "$3=\$ac_header_compiler"
+-fi
+-eval ac_res=\$$3
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+-$as_echo "$ac_res" >&6; }
+-fi
+- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+-
+-} # ac_fn_c_check_header_mongrel
+-
+-# ac_fn_c_try_run LINENO
+-# ----------------------
+-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+-# that executables *can* be run.
+-ac_fn_c_try_run ()
+-{
+- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+- if { { ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+-$as_echo "$ac_try_echo"; } >&5
+- (eval "$ac_link") 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+- { { case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+-$as_echo "$ac_try_echo"; } >&5
+- (eval "$ac_try") 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }; }; then :
+- ac_retval=0
+-else
+- $as_echo "$as_me: program exited with status $ac_status" >&5
+- $as_echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_retval=$ac_status
+-fi
+- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+- as_fn_set_status $ac_retval
+-
+-} # ac_fn_c_try_run
+-
+ # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+ # -------------------------------------------------------
+ # Tests whether HEADER exists and can be compiled using the include files in
+@@ -372,267 +153,8 @@ $as_echo "$ac_res" >&6; }
+ # Local configure fragment for sysdeps/i386.
+
+
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+-if ${ac_cv_path_GREP+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- if test -z "$GREP"; then
+- ac_path_GREP_found=false
+- # Loop through the user's path and test for each of PROGNAME-LIST
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in grep ggrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+-# Check for GNU ac_path_GREP and select it if it is found.
+- # Check for GNU $ac_path_GREP
+-case `"$ac_path_GREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+-*)
+- ac_count=0
+- $as_echo_n 0123456789 >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- $as_echo 'GREP' >> "conftest.nl"
+- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- as_fn_arith $ac_count + 1 && ac_count=$as_val
+- if test $ac_count -gt ${ac_path_GREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_GREP="$ac_path_GREP"
+- ac_path_GREP_max=$ac_count
+- fi
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+- $ac_path_GREP_found && break 3
+- done
+- done
+- done
+-IFS=$as_save_IFS
+- if test -z "$ac_cv_path_GREP"; then
+- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+- fi
+-else
+- ac_cv_path_GREP=$GREP
+-fi
+-
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+-$as_echo "$ac_cv_path_GREP" >&6; }
+- GREP="$ac_cv_path_GREP"
+-
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+-$as_echo_n "checking for egrep... " >&6; }
+-if ${ac_cv_path_EGREP+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+- then ac_cv_path_EGREP="$GREP -E"
+- else
+- if test -z "$EGREP"; then
+- ac_path_EGREP_found=false
+- # Loop through the user's path and test for each of PROGNAME-LIST
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_prog in egrep; do
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+-# Check for GNU ac_path_EGREP and select it if it is found.
+- # Check for GNU $ac_path_EGREP
+-case `"$ac_path_EGREP" --version 2>&1` in
+-*GNU*)
+- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+-*)
+- ac_count=0
+- $as_echo_n 0123456789 >"conftest.in"
+- while :
+- do
+- cat "conftest.in" "conftest.in" >"conftest.tmp"
+- mv "conftest.tmp" "conftest.in"
+- cp "conftest.in" "conftest.nl"
+- $as_echo 'EGREP' >> "conftest.nl"
+- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+- as_fn_arith $ac_count + 1 && ac_count=$as_val
+- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+- # Best one so far, save it but keep looking for a better one
+- ac_cv_path_EGREP="$ac_path_EGREP"
+- ac_path_EGREP_max=$ac_count
+- fi
+- # 10*(2^10) chars as input seems more than enough
+- test $ac_count -gt 10 && break
+- done
+- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+-esac
+-
+- $ac_path_EGREP_found && break 3
+- done
+- done
+- done
+-IFS=$as_save_IFS
+- if test -z "$ac_cv_path_EGREP"; then
+- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+- fi
+-else
+- ac_cv_path_EGREP=$EGREP
+-fi
+-
+- fi
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+-$as_echo "$ac_cv_path_EGREP" >&6; }
+- EGREP="$ac_cv_path_EGREP"
+-
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+-$as_echo_n "checking for ANSI C header files... " >&6; }
+-if ${ac_cv_header_stdc+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_compile "$LINENO"; then :
+- ac_cv_header_stdc=yes
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <string.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "memchr" >/dev/null 2>&1; then :
+-
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f conftest*
+-
+-fi
+-
+-if test $ac_cv_header_stdc = yes; then
+- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "free" >/dev/null 2>&1; then :
+-
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f conftest*
+-
+-fi
+-
+-if test $ac_cv_header_stdc = yes; then
+- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+- if test "$cross_compiling" = yes; then :
+- :
+-else
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-#include <ctype.h>
+-#include <stdlib.h>
+-#if ((' ' & 0x0FF) == 0x020)
+-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+-#else
+-# define ISLOWER(c) \
+- (('a' <= (c) && (c) <= 'i') \
+- || ('j' <= (c) && (c) <= 'r') \
+- || ('s' <= (c) && (c) <= 'z'))
+-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+-#endif
+-
+-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+-int
+-main ()
+-{
+- int i;
+- for (i = 0; i < 256; i++)
+- if (XOR (islower (i), ISLOWER (i))
+- || toupper (i) != TOUPPER (i))
+- return 2;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_run "$LINENO"; then :
+-
+-else
+- ac_cv_header_stdc=no
+-fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+- conftest.$ac_objext conftest.beam conftest.$ac_ext
+-fi
+-
+-fi
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+-$as_echo "$ac_cv_header_stdc" >&6; }
+-if test $ac_cv_header_stdc = yes; then
+-
+-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+-
+-fi
+-
+-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+- inttypes.h stdint.h unistd.h
+-do :
+- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
++ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "/* No default includes. */
+ "
+-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+- cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+-_ACEOF
+-
+-fi
+-
+-done
+-
+-
+-ac_fn_c_check_header_mongrel "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "$ac_includes_default"
+ if test "x$ac_cv_header_cpuid_h" = xyes; then :
+
+ else
+diff -urpN '--exclude=autom4te.cache' glibc-2.15.orig/sysdeps/i386/configure.in glibc-2.15/sysdeps/i386/configure.in
+--- glibc-2.15.orig/sysdeps/i386/configure.in 2017-02-08 14:28:19.951516034 -0800
++++ glibc-2.15/sysdeps/i386/configure.in 2017-02-08 17:24:29.995973278 -0800
+@@ -1,8 +1,9 @@
+ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+ # Local configure fragment for sysdeps/i386.
+
+-AC_HEADER_CHECK([cpuid.h], ,
+- [AC_MSG_ERROR([gcc must provide the <cpuid.h> header])])
++AC_CHECK_HEADER([cpuid.h], ,
++ [AC_MSG_ERROR([gcc must provide the <cpuid.h> header])],
++ [/* No default includes. */])
+
+ AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
+ libc_cv_cpp_asm_debuginfo, [dnl
diff --git a/packages/glibc/2.15/910-asm-i686.patch b/packages/glibc/2.15/910-asm-i686.patch
new file mode 100644
index 0000000..b049887
--- /dev/null
+++ b/packages/glibc/2.15/910-asm-i686.patch
@@ -0,0 +1,50 @@
+Submitted By: Matt Burgess <matthew_at_linuxfromscratch_dot_org>
+Date: 2010-04-18
+Initial Package Version: 2.11.1
+Upstream Status: Not Submitted
+Origin: http://www.eglibc.org/archives/patches/msg00073.html
+Description: Fixes the following build problem with GCC-4.5.0:
+
+/mnt/lfs/sources/libc-build/math/s_frexp.os.dt -MT /mnt/lfs/sources/libc-build/math/s_frexp.os
+./sysdeps/i386/fpu/s_frexp.S: Assembler messages:
+./sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier for ".ifdef"
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first unrecognized character is `.'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of line, first unrecognized character is `1'
+./sysdeps/i386/fpu/s_frexp.S:66: Error: expected comma after name `' in .size directive
+./sysdeps/i386/fpu/s_frexp.S:66: Error: ".endif" without ".if"
+./sysdeps/i386/fpu/s_frexp.S:66: Error: junk `.get_pc_thunk.dx' after expression
+make[2]: *** [/mnt/lfs/sources/libc-build/math/s_frexp.os] Error 1
+
+diff -Naur glibc-2.11.1.orig/nptl/sysdeps/pthread/pt-initfini.c glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c
+--- glibc-2.11.1.orig/nptl/sysdeps/pthread/pt-initfini.c 2009-12-08 20:10:20.000000000 +0000
++++ glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c 2010-04-17 11:34:06.882681001 +0000
+@@ -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 -Naur glibc-2.11.1.orig/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h
+--- glibc-2.11.1.orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2009-12-08 20:10:20.000000000 +0000
++++ glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h 2010-04-17 11:34:06.882681001 +0000
+@@ -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/packages/glibc/2.15/920-fix-rpc_parse-format.patch b/packages/glibc/2.15/920-fix-rpc_parse-format.patch
new file mode 100644
index 0000000..37e58da
--- /dev/null
+++ b/packages/glibc/2.15/920-fix-rpc_parse-format.patch
@@ -0,0 +1,60 @@
+commit 5874510faaf3cbd0bb112aaacab9f225002beed1
+Author: Joseph Myers <joseph@codesourcery.com>
+Date: Tue Nov 8 23:44:51 2016 +0000
+
+ Fix rpcgen buffer overrun (bug 20790).
+
+ Building with GCC 7 produces an error building rpcgen:
+
+ rpc_parse.c: In function 'get_prog_declaration':
+ rpc_parse.c:543:25: error: may write a terminating nul past the end of the destination [-Werror=format-length=]
+ sprintf (name, "%s%d", ARGNAME, num); /* default name of argument */
+ ~~~~^
+ rpc_parse.c:543:5: note: format output between 5 and 14 bytes into a destination of size 10
+ sprintf (name, "%s%d", ARGNAME, num); /* default name of argument */
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ That buffer overrun is for the case where the .x file declares a
+ program with a million arguments. The strcpy two lines above can
+ generate a buffer overrun much more simply for a long argument name.
+
+ The limit on length of line read by rpcgen (MAXLINESIZE == 1024)
+ provides a bound on the buffer size needed, so this patch just changes
+ the buffer size to MAXLINESIZE to avoid both possible buffer
+ overruns. A testcase is added that rpcgen does not crash with a
+ 500-character argument name, where it previously crashed.
+
+ It would not at all surprise me if there are many other ways of
+ crashing rpcgen with either valid or invalid input; fuzz testing would
+ likely find various such bugs, though I don't think they are that
+ important to fix (rpcgen is not that likely to be used with untrusted
+ .x files as input). (As well as fuzz-findable bugs there are probably
+ also issues when various int variables get overflowed on very large
+ input.) The test infrastructure for rpcgen-not-crashing tests would
+ need extending if tests are to be added for cases where rpcgen should
+ produce an error, as opposed to cases where it should succeed.
+
+ Tested for x86_64 and x86.
+
+ [BZ #20790]
+ * sunrpc/rpc_parse.c (get_prog_declaration): Increase buffer size
+ to MAXLINESIZE.
+ * sunrpc/bug20790.x: New file.
+ * sunrpc/Makefile [$(run-built-tests) = yes] (rpcgen-tests): New
+ variable.
+ [$(run-built-tests) = yes] (tests-special): Add $(rpcgen-tests).
+ [$(run-built-tests) = yes] ($(rpcgen-tests)): New rule.
+
+diff --git a/sunrpc/rpc_parse.c b/sunrpc/rpc_parse.c
+index 1a1df6d8c2..505a6554cf 100644
+--- a/sunrpc/rpc_parse.c
++++ b/sunrpc/rpc_parse.c
+@@ -521,7 +521,7 @@ static void
+ get_prog_declaration (declaration * dec, defkind dkind, int num /* arg number */ )
+ {
+ token tok;
+- char name[10]; /* argument name */
++ char name[MAXLINESIZE]; /* argument name */
+
+ if (dkind == DEF_PROGRAM)
+ {
diff --git a/packages/glibc/2.15/940-nis-bogus-conditional.patch b/packages/glibc/2.15/940-nis-bogus-conditional.patch
new file mode 100644
index 0000000..09b38cf
--- /dev/null
+++ b/packages/glibc/2.15/940-nis-bogus-conditional.patch
@@ -0,0 +1,62 @@
+commit f88759ea9bd3c8d8fef28f123ba9767cb0e421a3
+Author: Joseph Myers <joseph@codesourcery.com>
+Date: Wed Dec 21 23:44:01 2016 +0000
+
+ Fix nss_nisplus build with mainline GCC (bug 20978).
+
+ glibc build with current mainline GCC fails because
+ nis/nss_nisplus/nisplus-alias.c contains code
+
+ if (name != NULL)
+ {
+ *errnop = EINVAL;
+ return NSS_STATUS_UNAVAIL;
+ }
+
+ char buf[strlen (name) + 9 + tablename_len];
+
+ producing an error about strlen being called on a pointer that is
+ always NULL (and a subsequent use of that pointer with a %s format in
+ snprintf).
+
+ As Andreas noted, the bogus conditional comes from a 1997 change:
+
+ - if (name == NULL || strlen(name) > 8)
+ - return NSS_STATUS_NOTFOUND;
+ - else
+ + if (name != NULL || strlen(name) <= 8)
+
+ So the intention is clearly to return an error for NULL name.
+
+ This patch duly inverts the sense of the conditional. It fixes the
+ build with GCC mainline, and passes usual glibc testsuite testing for
+ x86_64. However, I have not tried any actual substantive nisplus
+ testing, do not have an environment for such testing, and do not know
+ whether it is possible that strlen (name) or tablename_len might be
+ large so that the VLA for buf is actually a security issue. However,
+ if it is a security issue, there are plenty of other similar instances
+ in the nisplus code (that haven't been hidden by a bogus comparison
+ with NULL) - and nis_table.c:__create_ib_request uses strdupa on the
+ string passed to nis_list, so a local fix in the caller wouldn't
+ suffice anyway (see bug 20987). (Calls to strdupa and other such
+ macros that use alloca must be considered equally questionable
+ regarding stack overflow issues as direct calls to alloca and VLA
+ declarations.)
+
+ [BZ #20978]
+ * nis/nss_nisplus/nisplus-alias.c (_nss_nisplus_getaliasbyname_r):
+ Compare name == NULL, not name != NULL.
+
+diff --git a/nis/nss_nisplus/nisplus-alias.c b/nis/nss_nisplus/nisplus-alias.c
+index 7f698b4e6d..cb5acce01d 100644
+--- a/nis/nss_nisplus/nisplus-alias.c
++++ b/nis/nss_nisplus/nisplus-alias.c
+@@ -291,7 +291,7 @@ _nss_nisplus_getaliasbyname_r (const char *name, struct aliasent *alias,
+ return status;
+ }
+
+- if (name != NULL)
++ if (name == NULL)
+ {
+ *errnop = EINVAL;
+ return NSS_STATUS_UNAVAIL;
diff --git a/packages/glibc/2.15/990-try-link-static.patch b/packages/glibc/2.15/990-try-link-static.patch
new file mode 100644
index 0000000..a0ffadd
--- /dev/null
+++ b/packages/glibc/2.15/990-try-link-static.patch
@@ -0,0 +1,171 @@
+[Patch modified to apply to 2.15]
+
+commit 07037eeb43ca1e0ac2802e3a1492cecf869c63c6
+Author: Joseph Myers <joseph@codesourcery.com>
+Date: Thu Mar 8 00:17:27 2012 +0000
+
+ Fix .ctors/.dtors header configure test for bootstrapping.
+
+diff -urpN glibc-2.15.orig/aclocal.m4 glibc-2.15/aclocal.m4
+--- glibc-2.15.orig/aclocal.m4 2017-02-08 11:27:28.445657746 -0800
++++ glibc-2.15/aclocal.m4 2017-02-08 11:37:25.818463475 -0800
+@@ -114,3 +114,17 @@ AC_CACHE_CHECK(whether $LD is GNU ld, li
+ [LIBC_PROG_FOO_GNU($LD, libc_cv_prog_ld_gnu=yes, libc_cv_prog_ld_gnu=no)])
+ gnu_ld=$libc_cv_prog_ld_gnu
+ ])
++
++dnl Run a static link test with -nostdlib -nostartfiles.
++dnl LIBC_TRY_LINK_STATIC([code], [action-if-true], [action-if-false])
++AC_DEFUN([LIBC_TRY_LINK_STATIC],
++[cat > conftest.c <<EOF
++int _start (void) { return 0; }
++int __start (void) { return 0; }
++$1
++EOF
++AS_IF([AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest
++ conftest.c -static -nostartfiles -nostdlib
++ 1>&AS_MESSAGE_LOG_FD])],
++ [$2], [$3])
++rm -f conftest*])
+diff -urpN glibc-2.15.orig/configure glibc-2.15/configure
+--- glibc-2.15.orig/configure 2017-02-08 11:27:28.453657802 -0800
++++ glibc-2.15/configure 2017-02-08 11:47:36.184360147 -0800
+@@ -6147,29 +6147,32 @@ $as_echo_n "checking for .preinit_array/
+ if ${libc_cv_initfini_array+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+- cat > conftest.c <<EOF
++ cat > conftest.c <<EOF
+ int _start (void) { return 0; }
+ int __start (void) { return 0; }
++
+ int foo (void) { return 1; }
+ int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
++
+ EOF
+- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
+- -static -nostartfiles -nostdlib 1>&5'
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest
++ conftest.c -static -nostartfiles -nostdlib
++ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }; }
+- then
+- if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
+- libc_cv_initfini_array=yes
+- else
+- libc_cv_initfini_array=no
+- fi
++ test $ac_status = 0; }; }; then :
++ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
++ libc_cv_initfini_array=yes
+ else
+ libc_cv_initfini_array=no
+ fi
+- rm -f conftest*
++else
++ libc_cv_initfini_array=no
++fi
++rm -f conftest*
++
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_initfini_array" >&5
+ $as_echo "$libc_cv_initfini_array" >&6; }
+@@ -6183,21 +6186,22 @@ if ${libc_cv_ctors_header+:} false; then
+ $as_echo_n "(cached) " >&6
+ else
+ libc_cv_ctors_header=yes
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
++ cat > conftest.c <<EOF
++int _start (void) { return 0; }
++int __start (void) { return 0; }
++
++__attribute__ ((constructor)) void ctor (void) { asm (""); }
++__attribute__ ((destructor)) void dtor (void) { asm (""); }
+
+-int
+-main ()
+-{
+-
+-__attribute__ ((constructor)) void ctor (void) { puts("ctor"); }
+-__attribute__ ((destructor)) void dtor (void) { puts("dtor"); }
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
++EOF
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest
++ conftest.c -static -nostartfiles -nostdlib
++ 1>&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }; }; then :
+ if $READELF -WS conftest$ac_exeext | $AWK '
+ { gsub(/\[ */, "[") }
+ $2 == ".ctors" || $2 == ".dtors" {
+@@ -6219,8 +6223,7 @@ else
+ as_fn_error $? "missing __attribute__ ((constructor)) support??" "$LINENO" 5
+
+ fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
++rm -f conftest*
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ctors_header" >&5
+diff -urpN glibc-2.15.orig/configure.in glibc-2.15/configure.in
+--- glibc-2.15.orig/configure.in 2017-02-08 11:27:28.433657663 -0800
++++ glibc-2.15/configure.in 2017-02-08 11:46:58.994915812 -0800
+@@ -1439,24 +1439,17 @@ EOF
+
+ AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
+ libc_cv_initfini_array, [dnl
+- cat > conftest.c <<EOF
+-int _start (void) { return 0; }
+-int __start (void) { return 0; }
++LIBC_TRY_LINK_STATIC([
+ int foo (void) { return 1; }
+ int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
+-EOF
+- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
+- -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
+- then
+- if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
+- libc_cv_initfini_array=yes
+- else
+- libc_cv_initfini_array=no
+- fi
++],
++ [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
++ libc_cv_initfini_array=yes
+ else
+ libc_cv_initfini_array=no
+- fi
+- rm -f conftest*])
++ fi],
++ [libc_cv_initfini_array=no])
++])
+ if test $libc_cv_initfini_array != yes; then
+ AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
+ fi
+@@ -1464,9 +1457,9 @@ EOF
+ AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
+ libc_cv_ctors_header, [dnl
+ libc_cv_ctors_header=yes
+- AC_TRY_LINK([], [
+-__attribute__ ((constructor)) void ctor (void) { puts("ctor"); }
+-__attribute__ ((destructor)) void dtor (void) { puts("dtor"); }
++ LIBC_TRY_LINK_STATIC([
++__attribute__ ((constructor)) void ctor (void) { asm (""); }
++__attribute__ ((destructor)) void dtor (void) { asm (""); }
+ ],
+ [dnl
+ AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
diff --git a/packages/glibc/2.15/991-builtin_expect.patch b/packages/glibc/2.15/991-builtin_expect.patch
new file mode 100644
index 0000000..8a327fa
--- /dev/null
+++ b/packages/glibc/2.15/991-builtin_expect.patch
@@ -0,0 +1,82 @@
+[As applied to 2.15]
+
+commit 3857022a761ea7251f8e5c0e45d382ebc3e34cf9
+Author: Ulrich Drepper <drepper@gmail.com>
+Date: Sun Jan 8 09:21:09 2012 -0500
+
+ No need for test for __builtin_expect
+
+diff -urpN glibc-2.15.orig/configure glibc-2.15/configure
+--- glibc-2.15.orig/configure 2017-02-08 12:47:52.580858002 -0800
++++ glibc-2.15/configure 2017-02-08 13:01:40.682870318 -0800
+@@ -7185,38 +7185,6 @@ if test "$libc_cv_c_asmcr0_bug" != 'no';
+ fi
+ fi
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5
+-$as_echo_n "checking for __builtin_expect... " >&6; }
+-if ${libc_cv_gcc_builtin_expect+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- cat > conftest.c <<EOF
+-#line $LINENO "configure"
+-int foo (int a)
+-{
+- a = __builtin_expect (a, 10);
+- return a == 10 ? 0 : 1;
+-}
+-EOF
+-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
+- -o conftest conftest.c -lgcc >&5'
+- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }; }; then
+- libc_cv_gcc_builtin_expect=yes
+-else
+- libc_cv_gcc_builtin_expect=no
+-fi
+-rm -f conftest*
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_builtin_expect" >&5
+-$as_echo "$libc_cv_gcc_builtin_expect" >&6; }
+-if test "$libc_cv_gcc_builtin_expect" = no; then
+- as_fn_error $? "support for __builtin_expect needed" "$LINENO" 5
+-fi
+-
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_memset" >&5
+ $as_echo_n "checking for __builtin_memset... " >&6; }
+ if ${libc_cv_gcc_builtin_memset+:} false; then :
+diff -urpN glibc-2.15.orig/configure.in glibc-2.15/configure.in
+--- glibc-2.15.orig/configure.in 2017-02-08 12:47:52.580858002 -0800
++++ glibc-2.15/configure.in 2017-02-08 13:01:17.638580410 -0800
+@@ -2098,28 +2098,6 @@ if test "$libc_cv_c_asmcr0_bug" != 'no';
+ fi
+ fi
+
+-dnl Check whether compiler understands __builtin_expect.
+-AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
+-[cat > conftest.c <<EOF
+-#line $LINENO "configure"
+-int foo (int a)
+-{
+- a = __builtin_expect (a, 10);
+- return a == 10 ? 0 : 1;
+-}
+-EOF
+-dnl No \ in command here because it ends up inside ''.
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
+- -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
+- libc_cv_gcc_builtin_expect=yes
+-else
+- libc_cv_gcc_builtin_expect=no
+-fi
+-rm -f conftest*])
+-if test "$libc_cv_gcc_builtin_expect" = no; then
+- AC_MSG_ERROR([support for __builtin_expect needed])
+-fi
+-
+ AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
+ cat > conftest.c <<\EOF
+ void zero (void *x)
diff --git a/packages/glibc/2.15/992-gcc_s-suffix.patch b/packages/glibc/2.15/992-gcc_s-suffix.patch
new file mode 100644
index 0000000..6dbc70f
--- /dev/null
+++ b/packages/glibc/2.15/992-gcc_s-suffix.patch
@@ -0,0 +1,108 @@
+[As applied to 2.15]
+commit 3a533ca370725b68b516e6b74adf4727d17ed28a
+Author: Joseph Myers <joseph@codesourcery.com>
+Date: Tue Apr 24 10:22:45 2012 +0000
+
+ Don't handle libgcc_s suffixes.
+
+diff -urpN glibc-2.15.orig/config.make.in glibc-2.15/config.make.in
+--- glibc-2.15.orig/config.make.in 2017-02-08 13:24:23.338055977 -0800
++++ glibc-2.15/config.make.in 2017-02-08 13:25:21.810625337 -0800
+@@ -50,7 +50,6 @@ have-z-execstack = @libc_cv_z_execstack@
+ have-initfini = @libc_cv_have_initfini@
+ have-Bgroup = @libc_cv_Bgroup@
+ have-as-needed = @libc_cv_as_needed@
+-libgcc_s_suffix = @libc_cv_libgcc_s_suffix@
+ need-nopic-initfini = @nopic_initfini@
+ with-fp = @with_fp@
+ old-glibc-headers = @old_glibc_headers@
+diff -urpN glibc-2.15.orig/configure glibc-2.15/configure
+--- glibc-2.15.orig/configure 2017-02-08 13:24:23.346056054 -0800
++++ glibc-2.15/configure 2017-02-08 13:27:07.327670602 -0800
+@@ -654,7 +654,6 @@ libc_cv_z_execstack
+ libc_cv_z_combreloc
+ ASFLAGS_config
+ libc_cv_as_needed
+-libc_cv_libgcc_s_suffix
+ libc_cv_Bgroup
+ libc_cv_cc_with_libunwind
+ VERSIONING
+@@ -6465,24 +6464,6 @@ fi
+ $as_echo "$libc_cv_Bgroup" >&6; }
+
+
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgcc_s suffix" >&5
+-$as_echo_n "checking for libgcc_s suffix... " >&6; }
+-if ${libc_cv_libgcc_s_suffix+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- cat > conftest.c <<EOF
+-int main (void) { return 0; }
+-EOF
+- libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+- -fPIC -shared -shared-libgcc -o conftest.so \
+- conftest.c -v 2>&1 >/dev/null \
+- | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
+- rm -f conftest*
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_libgcc_s_suffix" >&5
+-$as_echo "$libc_cv_libgcc_s_suffix" >&6; }
+-
+-
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --as-needed option" >&5
+ $as_echo_n "checking for --as-needed option... " >&6; }
+ if ${libc_cv_as_needed+:} false; then :
+@@ -6493,7 +6474,7 @@ int main (void) { return 0; }
+ EOF
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -fPIC -shared -o conftest.so conftest.c
+- -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
++ -lgcc_s -Wl,--as-needed
+ -nostdlib 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+diff -urpN glibc-2.15.orig/configure.in glibc-2.15/configure.in
+--- glibc-2.15.orig/configure.in 2017-02-08 13:24:23.346056054 -0800
++++ glibc-2.15/configure.in 2017-02-08 13:26:44.383441535 -0800
+@@ -1639,20 +1639,6 @@ EOF
+ rm -f conftest*])
+ AC_SUBST(libc_cv_Bgroup)
+
+- AC_CACHE_CHECK(for libgcc_s suffix,
+- libc_cv_libgcc_s_suffix, [dnl
+- cat > conftest.c <<EOF
+-int main (void) { return 0; }
+-EOF
+-changequote(,)dnl
+- libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+- -fPIC -shared -shared-libgcc -o conftest.so \
+- conftest.c -v 2>&1 >/dev/null \
+- | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
+-changequote([,])dnl
+- rm -f conftest*])
+- AC_SUBST(libc_cv_libgcc_s_suffix)
+-
+ AC_CACHE_CHECK(for --as-needed option,
+ libc_cv_as_needed, [dnl
+ cat > conftest.c <<EOF
+@@ -1660,7 +1646,7 @@ int main (void) { return 0; }
+ EOF
+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -fPIC -shared -o conftest.so conftest.c
+- -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
++ -lgcc_s -Wl,--as-needed
+ -nostdlib 1>&AS_MESSAGE_LOG_FD])
+ then
+ libc_cv_as_needed=yes
+diff -urpN glibc-2.15.orig/Makeconfig glibc-2.15/Makeconfig
+--- glibc-2.15.orig/Makeconfig 2017-02-08 13:24:23.338055977 -0800
++++ glibc-2.15/Makeconfig 2017-02-08 13:24:31.262132679 -0800
+@@ -565,7 +565,7 @@ endif
+ ifneq ($(have-as-needed),yes)
+ libgcc_eh := -lgcc_eh $(libunwind)
+ else
+- libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl,--no-as-needed
++ libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
+ endif
+ gnulib := -lgcc $(libgcc_eh)
+ static-gnulib := -lgcc -lgcc_eh $(libunwind)
diff --git a/packages/glibc/2.15/999-new-tools.patch b/packages/glibc/2.15/999-new-tools.patch
new file mode 100644
index 0000000..e0632a3
--- /dev/null
+++ b/packages/glibc/2.15/999-new-tools.patch
@@ -0,0 +1,69 @@
+diff -urpN glibc-2.15.orig/configure glibc-2.15/configure
+--- glibc-2.15.orig/configure 2012-03-19 07:56:58.000000000 -0700
++++ glibc-2.15/configure 2017-02-08 00:38:53.578049806 -0800
+@@ -4922,7 +4922,7 @@ $as_echo_n "checking version of $CC... "
+ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 3.4* | 4.[0-9]* )
++ 3.4* | [4-9].* )
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+@@ -4985,7 +4985,7 @@ $as_echo_n "checking version of $MAKE...
+ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 3.79* | 3.[89]*)
++ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+@@ -5112,7 +5112,7 @@ $as_echo_n "checking version of $MAKEINF
+ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 4.*)
++ [4-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+@@ -5172,7 +5172,7 @@ else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $SED" >&5
+ $as_echo_n "checking version of $SED... " >&6; }
+- ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed[^0-9]* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 3.0[2-9]*|3.[1-9]*|[4-9]*)
+diff -urpN glibc-2.15.orig/configure.in glibc-2.15/configure.in
+--- glibc-2.15.orig/configure.in 2012-01-01 04:16:32.000000000 -0800
++++ glibc-2.15/configure.in 2017-02-08 00:30:47.440841480 -0800
+@@ -1000,11 +1000,11 @@ fi
+ # These programs are version sensitive.
+ AC_CHECK_TOOL_PREFIX
+ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
+- [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
++ [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | [4-9].* ],
+ critic_missing="$critic_missing gcc")
+ AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
+ [GNU Make[^0-9]*\([0-9][0-9.]*\)],
+- [3.79* | 3.[89]*], critic_missing="$critic_missing make")
++ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
+
+ AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
+ [GNU gettext.* \([0-9]*\.[0-9.]*\)],
+@@ -1012,10 +1012,10 @@ AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsg
+ MSGFMT=: aux_missing="$aux_missing msgfmt")
+ AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
+ [GNU texinfo.* \([0-9][0-9.]*\)],
+- [4.*],
++ [[4-9].*],
+ MAKEINFO=: aux_missing="$aux_missing makeinfo")
+ AC_CHECK_PROG_VER(SED, sed, --version,
+- [GNU sed version \([0-9]*\.[0-9.]*\)],
++ [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
+ [3.0[2-9]*|3.[1-9]*|[4-9]*],
+ SED=: aux_missing="$aux_missing sed")
+
diff --git a/packages/glibc/2.15/version.desc b/packages/glibc/2.15/version.desc
new file mode 100644
index 0000000..026d275
--- /dev/null
+++ b/packages/glibc/2.15/version.desc
@@ -0,0 +1 @@
+obsolete="yes"