diff --git a/ARM_glibc-2.10.1-local-eabi-wchar.diff b/ARM_glibc-2.10.1-local-eabi-wchar.diff new file mode 100644 index 0000000..a5fa3e4 --- /dev/null +++ b/ARM_glibc-2.10.1-local-eabi-wchar.diff @@ -0,0 +1,33 @@ +--- + ports/sysdeps/arm/eabi/bits/wchar.h | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +--- /dev/null ++++ ports/sysdeps/arm/eabi/bits/wchar.h +@@ -0,0 +1,26 @@ ++/* wchar_t type related definitions. ++ Copyright (C) 2000 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, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_WCHAR_H ++#define _BITS_WCHAR_H 1 ++ ++#define __WCHAR_MIN ( 0 ) ++#define __WCHAR_MAX ( (wchar_t) - 1 ) ++ ++#endif /* bits/wchar.h */ diff --git a/ARM_glibc-2.10.1-local-hwcap-updates.diff b/ARM_glibc-2.10.1-local-hwcap-updates.diff new file mode 100644 index 0000000..fedcd9d --- /dev/null +++ b/ARM_glibc-2.10.1-local-hwcap-updates.diff @@ -0,0 +1,43 @@ +diff -Naur _ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.c ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.c +--- _ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2006-09-21 20:39:51.000000000 +0200 ++++ ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2009-05-15 21:23:43.166714113 +0200 +@@ -47,12 +47,12 @@ + #if !defined PROCINFO_DECL && defined SHARED + ._dl_arm_cap_flags + #else +-PROCINFO_CLASS const char _dl_arm_cap_flags[10][10] ++PROCINFO_CLASS const char _dl_arm_cap_flags[13][10] + #endif + #ifndef PROCINFO_DECL + = { + "swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp", +- "java", "iwmmxt", ++ "java", "iwmmxt", "crunch", "thumbee", "neon", + } + #endif + #if !defined SHARED || defined PROCINFO_DECL +diff -Naur _ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.h ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.h +--- _ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.h 2006-09-21 20:39:51.000000000 +0200 ++++ ports//sysdeps/unix/sysv/linux/arm/dl-procinfo.h 2009-05-15 21:23:43.166714113 +0200 +@@ -24,7 +24,7 @@ + #include + #include + +-#define _DL_HWCAP_COUNT 10 ++#define _DL_HWCAP_COUNT 13 + + /* The kernel provides platform data but it is not interesting. */ + #define _DL_HWCAP_PLATFORM 0 +diff -Naur _ports//sysdeps/unix/sysv/linux/arm/sysdep.h ports//sysdeps/unix/sysv/linux/arm/sysdep.h +--- _ports//sysdeps/unix/sysv/linux/arm/sysdep.h 2009-05-15 18:56:52.000000000 +0200 ++++ ports//sysdeps/unix/sysv/linux/arm/sysdep.h 2009-05-15 21:23:43.166714113 +0200 +@@ -55,6 +55,9 @@ + #define HWCAP_ARM_EDSP 128 + #define HWCAP_ARM_JAVA 256 + #define HWCAP_ARM_IWMMXT 512 ++#define HWCAP_ARM_CRUNCH 1024 ++#define HWCAP_ARM_THUMBEE 2048 ++#define HWCAP_ARM_NEON 4096 + + #ifdef __ASSEMBLER__ + diff --git a/ARM_glibc-2.10.1-local-lowlevellock.diff b/ARM_glibc-2.10.1-local-lowlevellock.diff new file mode 100644 index 0000000..615b818 --- /dev/null +++ b/ARM_glibc-2.10.1-local-lowlevellock.diff @@ -0,0 +1,14 @@ +--- + ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h | 1 + + 1 file changed, 1 insertion(+) + +--- ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h ++++ ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include /* Need THREAD_*, and header.*. */ + + #define FUTEX_WAIT 0 + #define FUTEX_WAKE 1 diff --git a/ARM_glibc-2.10.1-local-no-hwcap.diff b/ARM_glibc-2.10.1-local-no-hwcap.diff new file mode 100644 index 0000000..cefbb2c --- /dev/null +++ b/ARM_glibc-2.10.1-local-no-hwcap.diff @@ -0,0 +1,19 @@ +# DP: Restricted hardware caps for ARM +# needs corresponding kernel-support +# see https://bugs.launchpad.net/ubuntu/+source/linux/+bug/343602 + +--- + ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h ++++ ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h +@@ -54,7 +54,7 @@ + return GLRO(dl_arm_cap_flags)[idx]; + }; + +-#define HWCAP_IMPORTANT (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT) ++#define HWCAP_IMPORTANT (HWCAP_ARM_VFP | HWCAP_ARM_NEON) + + static inline int + __attribute__ ((unused)) diff --git a/crypt_blowfish-glibc-2.3.diff b/crypt_blowfish-glibc-2.3.diff index a8abbcd..e46ffcd 100644 --- a/crypt_blowfish-glibc-2.3.diff +++ b/crypt_blowfish-glibc-2.3.diff @@ -35,15 +35,14 @@ #endif /* crypt-private.h */ --- crypt/Makefile~ 2007-11-06 05:27:13.635014000 +0100 +++ crypt/Makefile 2007-11-06 05:27:27.500142000 +0100 -@@ -27,7 +27,8 @@ +@@ -27,7 +27,7 @@ extra-libs-others := $(extra-libs) - libcrypt-routines := crypt-entry md5-crypt md5 sha256-crypt sha256 \ -- sha512-crypt sha512 crypt crypt_util -+ sha512-crypt sha512 crypt crypt_util \ -+ crypt_blowfish crypt_gensalt wrapper + libcrypt-routines := crypt-entry md5-crypt sha256-crypt sha512-crypt crypt \ +- crypt_util ++ crypt_util crypt_blowfish crypt_gensalt wrapper - tests := cert md5test md5c-test sha256test sha256c-test sha512test sha512c-test + tests := cert md5c-test sha256c-test sha512c-test --- crypt/ow-crypt.h 2001-05-01 13:14:31.000000000 +0200 +++ crypt/ow-crypt.h 2003-10-01 11:23:27.000000000 +0200 diff --git a/glibc-2.10-dns-fixpack.diff b/glibc-2.10-dns-fixpack.diff deleted file mode 100644 index 88318d6..0000000 --- a/glibc-2.10-dns-fixpack.diff +++ /dev/null @@ -1,169 +0,0 @@ -2008-11-26 Ulrich Drepper - - * sysdeps/posix/getaddrinfo.c (getaddrinfo): Only restrict search - to IPv4 or IPv6 if an interface has been found. - ---- sysdeps/posix/getaddrinfo.c 30 Jul 2008 19:14:22 -0000 1.136 -+++ sysdeps/posix/getaddrinfo.c 3 Dec 2008 07:04:10 -0000 1.139 -@@ -2108,7 +2110,7 @@ getaddrinfo (const char *name, const cha - { - /* If we haven't seen both IPv4 and IPv6 interfaces we can - narrow down the search. */ -- if (! seen_ipv4 || ! seen_ipv6) -+ if ((! seen_ipv4 || ! seen_ipv6) && (seen_ipv4 || seen_ipv6)) - { - local_hints = *hints; - local_hints.ai_family = seen_ipv4 ? PF_INET : PF_INET6; - - -2008-12-02 Ulrich Drepper - - * sysdeps/posix/getaddrinfo.c (gaih_inet): In case we use - gethostbyname4_r, we don't have a separate IPv6 status, so copy - the no_data variable. - ---- sysdeps/posix/getaddrinfo.c 30 Jul 2008 19:14:22 -0000 1.136 -+++ sysdeps/posix/getaddrinfo.c 3 Dec 2008 07:04:10 -0000 1.139 -@@ -733,6 +733,8 @@ gaih_inet (const char *name, const struc - tmpbuflen, 2 * tmpbuflen); - } - -+ no_inet6_data = no_data; -+ - if (status == NSS_STATUS_SUCCESS) - { - if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL) - - -2008-12-02 Ulrich Drepper - - * resolv/res_init.c (__res_vinit): Initialize nscount to zero. - - * resolv/res_init.c (__res_vinit): Fill in IPv4 name server - information at the correct index. - -2008-12-07 Ulrich Drepper - - * resolv/res_init.c (__res_vinit): Always assign to statp->nscount - after reading name server list. - ---- resolv/res_init.c 7 Apr 2008 17:20:25 -0000 1.47 -+++ resolv/res_init.c 8 Dec 2008 03:59:05 -0000 1.50 -@@ -183,7 +183,7 @@ __res_vinit(res_state statp, int preinit - #endif - statp->nsaddr.sin_family = AF_INET; - statp->nsaddr.sin_port = htons(NAMESERVER_PORT); -- statp->nscount = 1; -+ statp->nscount = 0; - statp->ndots = 1; - statp->pfcode = 0; - statp->_vcsock = -1; -@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit - cp++; - if ((*cp != '\0') && (*cp != '\n') - && __inet_aton(cp, &a)) { -- statp->nsaddr_list[nserv].sin_addr = a; -- statp->nsaddr_list[nserv].sin_family = AF_INET; -- statp->nsaddr_list[nserv].sin_port = -+ statp->nsaddr_list[nservall].sin_addr = a; -+ statp->nsaddr_list[nservall].sin_family = AF_INET; -+ statp->nsaddr_list[nservall].sin_port = - htons(NAMESERVER_PORT); - nserv++; - #ifdef _LIBC -@@ -420,8 +420,7 @@ __res_vinit(res_state statp, int preinit - continue; - } - } -- if (nserv > 1) -- statp->nscount = nserv; -+ statp->nscount = nserv; - #ifdef _LIBC - if (nservall - nserv > 0) { - statp->_u._ext.nscount6 = nservall - nserv; - - -2008-12-02 Ulrich Drepper - - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname3_r): Recognize - ESRCH return value. - (_nss_dns_gethostbyname4_r): Likewise. - ---- resolv/nss_dns/dns-host.c 12 Nov 2008 07:52:20 -0000 1.54 -+++ resolv/nss_dns/dns-host.c 3 Dec 2008 07:09:26 -0000 1.55 -@@ -198,8 +198,14 @@ _nss_dns_gethostbyname3_r (const char *n - 1024, &host_buffer.ptr, NULL, NULL, NULL); - if (n < 0) - { -- status = (errno == ECONNREFUSED -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); -+ if (errno == ESRCH) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ h_errno = TRY_AGAIN; -+ } -+ else -+ status = (errno == ECONNREFUSED -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); - *h_errnop = h_errno; - if (h_errno == TRY_AGAIN) - *errnop = EAGAIN; -@@ -304,8 +310,14 @@ _nss_dns_gethostbyname4_r (const char *n - &ans2p, &nans2p, &resplen2); - if (n < 0) - { -- status = (errno == ECONNREFUSED -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); -+ if (errno == ESRCH) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ h_errno = TRY_AGAIN; -+ } -+ else -+ status = (errno == ECONNREFUSED -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); - *herrnop = h_errno; - if (h_errno == TRY_AGAIN) - *errnop = EAGAIN; - - -2008-12-29 Ulrich Drepper - - * resolv/res_init.c (__res_vinit): Count all servers in statp->nscount. - -diff -u -r1.50 -r1.51 ---- resolv/res_init.c 2008/12/08 03:59:05 1.50 -+++ resolv/res_init.c 2008/12/29 19:53:31 1.51 -@@ -420,7 +420,7 @@ - continue; - } - } -- statp->nscount = nserv; -+ statp->nscount = nservall; - #ifdef _LIBC - if (nservall - nserv > 0) { - statp->_u._ext.nscount6 = nservall - nserv; - - -2009-01-16 Petr Baudis - - * resolv/res_libc (__res_maybe_init): Call __res_vinit() - even if we currently have zero nscount. - -diff --git a/resolv/res_libc.c b/resolv/res_libc.c -index 8af57f7..810fbc8 100644 ---- resolv/res_libc.c -+++ resolv/res_libc.c -@@ -96,10 +96,9 @@ __res_maybe_init (res_state resp, int preinit) - { - if (resp->options & RES_INIT) { - if (__res_initstamp != resp->_u._ext.initstamp) { -- if (resp->nscount > 0) { -+ if (resp->nscount > 0) - __res_iclose (resp, true); -- return __res_vinit (resp, 1); -- } -+ return __res_vinit (resp, 1); - } - return 0; - } else if (preinit) { diff --git a/glibc-2.10-dns-no-gethostbyname4.diff b/glibc-2.10-dns-no-gethostbyname4.diff deleted file mode 100644 index 30f37a6..0000000 --- a/glibc-2.10-dns-no-gethostbyname4.diff +++ /dev/null @@ -1,26 +0,0 @@ -The gethostbyname4() lookup method is problematic since it fires out both -the A and AAAA DNS queries in parallel and over the same socket. This -should work in theory, but it turns out that many cheap DSL modems and -similar devices have buggy DNS servers - if the AAAA query arrives too -quickly after the A query, the server will generate only a single reply -with the A query id but returning an error for the AAAA query; we get -stuck waiting for the second reply. - -For gethostbyname4() users affected, disabling IPv6 in the system might -work around the issue, unfortunately it only helps with applications -using AI_ADDRCONFIG (e.g. Firefox); some (notably e.g. Pidgin) neglect -to do that. - -Real fix should be using separate ports for the A and AAAA queries. - ---- resolv/Versions 2008-08-02 10:26:09.000000000 +0200 -+++ resolv/Versions 2008-12-08 12:51:53.000000000 +0100 -@@ -102,7 +102,7 @@ libnss_dns { - _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r; - _nss_dns_getnetbyname_r; _nss_dns_getcanonname_r; - _nss_dns_gethostbyaddr2_r; -- _nss_dns_gethostbyname4_r; -+# _nss_dns_gethostbyname4_r; - } - } - diff --git a/glibc-2.10-locale-tuesday.diff b/glibc-2.10-locale-tuesday.diff deleted file mode 100644 index 4795094..0000000 --- a/glibc-2.10-locale-tuesday.diff +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/localedata/locales/csb_PL b/localedata/locales/csb_PL -index 663fd6c..93c9ae2 100644 ---- localedata/locales/csb_PL -+++ localedata/locales/csb_PL -@@ -184,7 +184,7 @@ t_fmt_ampm "" - date_fmt "/ - / - " --week 7;19971201;4 -+week 7;19971130;4 - first_weekday 2 - first_workday 2 - END LC_TIME -diff --git a/localedata/locales/en_GB b/localedata/locales/en_GB -index fe58f1f..6a81d6d 100644 ---- localedata/locales/en_GB -+++ localedata/locales/en_GB -@@ -121,7 +121,7 @@ t_fmt_ampm "" - date_fmt "/ - / - " --week 7;19971201;4 -+week 7;19971130;4 - first_weekday 2 - first_workday 2 - END LC_TIME diff --git a/glibc-2.10-nis-hosts.diff b/glibc-2.10-nis-hosts.diff deleted file mode 100644 index b421637..0000000 --- a/glibc-2.10-nis-hosts.diff +++ /dev/null @@ -1,84 +0,0 @@ -=================================================================== -RCS file: /cvs/glibc/libc/nis/nss_nis/nis-hosts.c,v -retrieving revision 1.29 -retrieving revision 1.31 -diff -u -r1.29 -r1.31 ---- nis/nss_nis/nis-hosts.c 2008/05/10 23:23:25 1.29 -+++ nis/nss_nis/nis-hosts.c 2008/12/07 17:06:43 1.31 -@@ -485,24 +485,6 @@ - return retval; - } - -- struct parser_data data; -- struct hostent host; -- int parse_res = parse_line (result, &host, &data, buflen, errnop, AF_UNSPEC, -- 0); -- if (__builtin_expect (parse_res < 1, 0)) -- { -- if (parse_res == -1) -- { -- *herrnop = NETDB_INTERNAL; -- return NSS_STATUS_TRYAGAIN; -- } -- else -- { -- *herrnop = HOST_NOT_FOUND; -- return NSS_STATUS_NOTFOUND; -- } -- } -- - if (*pat == NULL) - { - uintptr_t pad = (-(uintptr_t) buffer -@@ -524,16 +506,47 @@ - buflen -= sizeof (struct gaih_addrtuple); - } - -- (*pat)->next = NULL; -- size_t h_name_len = strlen (host.h_name); -- if (h_name_len >= buflen) -+ uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct parser_data); -+ buffer += pad; -+ -+ struct parser_data *data = (void *) buffer; -+ -+ if (__builtin_expect (buflen < sizeof *data + 1 + pad, 0)) - goto erange; -- (*pat)->name = memcpy (buffer, host.h_name, h_name_len + 1); -+ buflen -= pad; -+ -+ struct hostent host; -+ int parse_res = parse_line (result, &host, data, buflen, errnop, AF_UNSPEC, -+ 0); -+ if (__builtin_expect (parse_res < 1, 0)) -+ { -+ if (parse_res == -1) -+ { -+ *herrnop = NETDB_INTERNAL; -+ return NSS_STATUS_TRYAGAIN; -+ } -+ else -+ { -+ *herrnop = HOST_NOT_FOUND; -+ return NSS_STATUS_NOTFOUND; -+ } -+ } -+ -+ (*pat)->next = NULL; - (*pat)->family = host.h_addrtype; - memcpy ((*pat)->addr, host.h_addr_list[0], host.h_length); - (*pat)->scopeid = 0; - assert (host.h_addr_list[1] == NULL); - -+ /* Undo the alignment for parser_data. */ -+ buffer -= pad; -+ buflen += pad; -+ -+ size_t h_name_len = strlen (host.h_name) + 1; -+ if (h_name_len >= buflen) -+ goto erange; -+ (*pat)->name = memcpy (buffer, host.h_name, h_name_len); -+ - free (result); - - return NSS_STATUS_SUCCESS; diff --git a/glibc-2.10-nscd-gc-dataofs.diff b/glibc-2.10-nscd-gc-dataofs.diff deleted file mode 100644 index 6ac0b70..0000000 --- a/glibc-2.10-nscd-gc-dataofs.diff +++ /dev/null @@ -1,15 +0,0 @@ -http://sourceware.org/bugzilla/show_bug.cgi?id=9741 - -diff --git a/nscd/mem.c b/nscd/mem.c -index e821729..1f7215e 100644 ---- nscd/mem.c -+++ nscd/mem.c -@@ -163,7 +163,7 @@ gc (struct database_dyn *db) - else - { - he = xmalloc (memory_needed); -- he_data = &he[db->head->nentries * sizeof (struct hashentry *)]; -+ he_data = &he[db->head->nentries]; - he_use_malloc = true; - } - diff --git a/glibc-2.10-nscd-meminflight.diff b/glibc-2.10-nscd-meminflight.diff deleted file mode 100644 index b224e62..0000000 --- a/glibc-2.10-nscd-meminflight.diff +++ /dev/null @@ -1,86 +0,0 @@ ---- nscd/mem.c~ 2008-11-23 12:59:15.000000000 +0100 -+++ nscd/mem.c 2008-11-23 13:52:01.000000000 +0100 -@@ -392,6 +392,7 @@ - moves = moves->next = new_move; - } - -+ ref_t off_alloc_start = off_alloc; - /* The following loop will prepare to move this much data. */ - off_free += off_allocend - off_alloc; - -@@ -410,23 +411,60 @@ - else - { -- assert (next_data < &he_data[db->head->nentries]); -- assert ((*next_data)->packet == off_alloc); - -- struct datahead *dh = (struct datahead *) (db->data + off_alloc); -- do -- { -- assert ((*next_data)->key >= (*next_data)->packet); -- assert ((*next_data)->key + (*next_data)->len -- <= (*next_data)->packet + dh->allocsize); -- -- (*next_data)->packet -= disp; -- (*next_data)->key -= disp; -- ++next_data; -+ if (next_data < &he_data[db->head->nentries] && (*next_data)->packet == off_alloc) -+ { -+ struct datahead *dh = (struct datahead *) (db->data + off_alloc); -+ do -+ { -+ assert ((*next_data)->key >= (*next_data)->packet); -+ assert ((*next_data)->key + (*next_data)->len -+ <= (*next_data)->packet + dh->allocsize); -+ -+ (*next_data)->packet -= disp; -+ (*next_data)->key -= disp; -+ ++next_data; -+ } -+ while (next_data < &he_data[db->head->nentries] -+ && (*next_data)->packet == off_alloc); -+ -+ off_alloc += (dh->allocsize + BLOCK_ALIGN_M1) & ~BLOCK_ALIGN_M1; - } -- while (next_data < &he_data[db->head->nentries] -- && (*next_data)->packet == off_alloc); -+ else -+ { -+ /* This is not yet a hashed element but an in-flight -+ * mempool allocation. We cannot displace it, so we -+ * reset the shake-down at this point; typically, -+ * the in-flight allocations will be at the top of -+ * the pool, thus nothing will be above it and we will -+ * shake it down in the next gc run. In theory, we can -+ * grow the pool indefinitely if we always hit gc at -+ * the point we have an in-flight allocation, but -+ * that does not seem to be a realistic scenario. */ -+ nscd_ssize_t blocklen = 0; -+ struct mem_in_flight *mrunp = mem_in_flight_list; -+ -+ /* See the first mem_in_flight_list loop above -+ * for correctness considerations. */ -+ /* Typically, we have only tiny number of in_flight -+ * records so we don't need to bother pre-sorting -+ * the list. */ -+ while (!blocklen && mrunp != NULL) -+ { -+ for (enum in_flight idx = IDX_result_data; -+ idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx) -+ if (mrunp->block[idx].blockoff == off_alloc) -+ blocklen = mrunp->block[idx].blocklen; -+ -+ mrunp = mrunp->next; -+ } -+ assert(blocklen > 0); -+ -+ moves->size = off_alloc - off_alloc_start; -+ off_free = off_allocend; -+ disp = 0; - -- off_alloc += (dh->allocsize + BLOCK_ALIGN_M1) & ~BLOCK_ALIGN_M1; -+ off_alloc += blocklen; -+ } - } - } - assert (off_alloc == off_allocend); diff --git a/glibc-2.10-nscd-prunerace.diff b/glibc-2.10-nscd-prunerace.diff deleted file mode 100644 index 6df9c79..0000000 --- a/glibc-2.10-nscd-prunerace.diff +++ /dev/null @@ -1,88 +0,0 @@ -diff --git a/nscd/connections.c b/nscd/connections.c -index e3a6738..597e1a7 100644 ---- nscd/connections.c -+++ nscd/connections.c -@@ -109,6 +109,7 @@ struct database_dyn dbs[lastdb] = - [pwddb] = { - .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, - .prune_lock = PTHREAD_MUTEX_INITIALIZER, -+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER, - .enabled = 0, - .check_file = 1, - .persistent = 0, -@@ -129,6 +130,7 @@ struct database_dyn dbs[lastdb] = - [grpdb] = { - .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, - .prune_lock = PTHREAD_MUTEX_INITIALIZER, -+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER, - .enabled = 0, - .check_file = 1, - .persistent = 0, -@@ -149,6 +151,7 @@ struct database_dyn dbs[lastdb] = - [hstdb] = { - .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, - .prune_lock = PTHREAD_MUTEX_INITIALIZER, -+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER, - .enabled = 0, - .check_file = 1, - .persistent = 0, -@@ -169,6 +172,7 @@ struct database_dyn dbs[lastdb] = - [servdb] = { - .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, - .prune_lock = PTHREAD_MUTEX_INITIALIZER, -+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER, - .enabled = 0, - .check_file = 1, - .persistent = 0, -@@ -975,9 +979,9 @@ invalidate_cache (char *key, int fd) - - if (dbs[number].enabled) - { -- pthread_mutex_lock (&dbs[number].prune_lock); -+ pthread_mutex_lock (&dbs[number].prune_run_lock); - prune_cache (&dbs[number], LONG_MAX, fd); -- pthread_mutex_unlock (&dbs[number].prune_lock); -+ pthread_mutex_unlock (&dbs[number].prune_run_lock); - } - else - { -@@ -1492,6 +1496,7 @@ nscd_run_prune (void *p) - dbs[my_number].wakeup_time = now + CACHE_PRUNE_INTERVAL + my_number; - - pthread_mutex_t *prune_lock = &dbs[my_number].prune_lock; -+ pthread_mutex_t *prune_run_lock = &dbs[my_number].prune_run_lock; - pthread_cond_t *prune_cond = &dbs[my_number].prune_cond; - - pthread_mutex_lock (prune_lock); -@@ -1523,7 +1528,10 @@ nscd_run_prune (void *p) - time_t prune_now = dbs[my_number].clear_cache ? LONG_MAX : now; - dbs[my_number].clear_cache = 0; - -+ /* prune_cache() must be run with prune_lock off since -+ cache_add() needs to take the lock. */ - pthread_mutex_unlock (prune_lock); -+ pthread_mutex_lock (prune_run_lock); - - next_wait = prune_cache (&dbs[my_number], prune_now, -1); - -@@ -1538,6 +1546,7 @@ nscd_run_prune (void *p) - dbs[my_number].head->timestamp = now; - } - -+ pthread_mutex_unlock (prune_run_lock); - pthread_mutex_lock (prune_lock); - - /* Make it known when we will wake up again. */ -diff --git a/nscd/nscd.h b/nscd/nscd.h -index 5c77dd3..a828f3e 100644 ---- nscd/nscd.h -+++ nscd/nscd.h -@@ -68,7 +68,7 @@ struct database_dyn - { - pthread_rwlock_t lock; - pthread_cond_t prune_cond; -- pthread_mutex_t prune_lock; -+ pthread_mutex_t prune_lock, prune_run_lock; - time_t wakeup_time; - - int enabled; diff --git a/glibc-2.10-ppc32-setcontext-fp.diff b/glibc-2.10-ppc32-setcontext-fp.diff deleted file mode 100644 index cbadcff..0000000 --- a/glibc-2.10-ppc32-setcontext-fp.diff +++ /dev/null @@ -1,29 +0,0 @@ -20090108 Ryan S. Arnold - - * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S - (__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0. - * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S - (__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0. - ---- sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2009-01-08 10:01:44.000000000 -0600 -+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2009-01-08 16:54:10.000000000 -0600 -@@ -202,7 +202,7 @@ - lfd fp0,_UC_FREGS+(0*8)(r31) - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -- mtfsf 0xff,fp0,1,0 -+ mtfsf 0xff,fp31,1,0 - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r7,PPC_FEATURE_HAS_DFP ---- sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2009-01-08 10:01:44.000000000 -0600 -+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2009-01-08 16:54:17.000000000 -0600 -@@ -428,7 +428,7 @@ - lfd fp0,_UC_FREGS+(0*8)(r31) - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -- mtfsf 0xff,fp0,1,0 -+ mtfsf 0xff,fp31,1,0 - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r7,PPC_FEATURE_HAS_DFP diff --git a/glibc-2.10-unsetenv.diff b/glibc-2.10-unsetenv.diff deleted file mode 100644 index bede175..0000000 --- a/glibc-2.10-unsetenv.diff +++ /dev/null @@ -1,69 +0,0 @@ -2008-12-01 Ulrich Drepper - - * stdlib/setenv.c (unsetenv): Don't search environment if it does - not exist. - * stdlib/Makefile (tests): Add tst-unsetenv1. - * stdlib/tst-unsetenv1.c: New file. - ---- stdlib/Makefile 8 Mar 2008 21:31:19 -0000 1.122 -+++ stdlib/Makefile 2 Dec 2008 02:27:21 -0000 1.123 -@@ -69,7 +69,7 @@ tests := tst-strtol tst-strtod testmb t - test-a64l tst-qsort tst-system testmb2 bug-strtod2 \ - tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \ - tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \ -- tst-makecontext2 tst-strtod6 -+ tst-makecontext2 tst-strtod6 tst-unsetenv1 - - include ../Makeconfig - ---- stdlib/setenv.c 14 Dec 2005 10:44:05 -0000 1.1 -+++ stdlib/setenv.c 2 Dec 2008 01:39:44 -0000 1.2 -@@ -292,19 +292,20 @@ unsetenv (name) - LOCK; - - ep = __environ; -- 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 (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; - - UNLOCK; - ---- stdlib/tst-unsetenv1.c 1 Jan 1970 00:00:00 -0000 -+++ stdlib/tst-unsetenv1.c 2 Dec 2008 02:27:12 -0000 1.1 -@@ -0,0 +1,12 @@ -+#include -+ -+static int -+do_test (void) -+{ -+ clearenv (); -+ unsetenv ("FOO"); -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/glibc-2.10.1-e38af591a8.tar.bz2 b/glibc-2.10.1-e38af591a8.tar.bz2 new file mode 100644 index 0000000..0c6c8ad --- /dev/null +++ b/glibc-2.10.1-e38af591a8.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05810d4e4256a3be2582b0bfb9cda3332a4710beeb20fbe90c41c306c4b9ee48 +size 15588510 diff --git a/glibc-2.3.3-amd64-string.diff b/glibc-2.3.3-amd64-string.diff index 7bcd51a..ccfb162 100644 --- a/glibc-2.3.3-amd64-string.diff +++ b/glibc-2.3.3-amd64-string.diff @@ -3,10 +3,10 @@ Index: sysdeps/x86_64/strlen.S =================================================================== --- sysdeps/x86_64/strlen.S.orig 2003-04-30 00:47:18.000000000 +0200 +++ sysdeps/x86_64/strlen.S 2009-03-23 16:32:42.000000000 +0100 -@@ -1,139 +1,405 @@ +@@ -1,54 +1,405 @@ -/* strlen(str) -- determine the length of the string STR. -- Copyright (C) 2002, 2003 Free Software Foundation, Inc. -- Based on i486 version contributed by Ulrich Drepper . +- Copyright (C) 2009 Free Software Foundation, Inc. +- Contributed by Ulrich Drepper . - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or @@ -25,121 +25,36 @@ Index: sysdeps/x86_64/strlen.S - 02111-1307 USA. */ - -#include --#include "asm-syntax.h" --#include "bp-sym.h" --#include "bp-asm.h" - - - .text --ENTRY (strlen) -- movq %rdi, %rcx /* Duplicate source pointer. */ -- andl $7, %ecx /* mask alignment bits */ -- movq %rdi, %rax /* duplicate destination. */ -- jz 1f /* aligned => start loop */ +-ENTRY(strlen) +- movq %rdi, %rcx +- movq %rdi, %r8 +- andq $~15, %rdi +- pxor %xmm1, %xmm1 +- orl $0xffffffff, %esi +- movdqa (%rdi), %xmm0 +- subq %rdi, %rcx +- leaq 16(%rdi), %rdi +- pcmpeqb %xmm1, %xmm0 +- shl %cl, %esi +- pmovmskb %xmm0, %edx +- xorl %eax, %eax +- negq %r8 +- andl %esi, %edx +- jnz 1f - -- neg %ecx /* We need to align to 8 bytes. */ -- addl $8,%ecx -- /* Search the first bytes directly. */ --0: cmpb $0x0,(%rax) /* is byte NUL? */ -- je 2f /* yes => return */ -- incq %rax /* increment pointer */ -- decl %ecx -- jnz 0b +-2: movdqa (%rdi), %xmm0 +- leaq 16(%rdi), %rdi +- pcmpeqb %xmm1, %xmm0 +- pmovmskb %xmm0, %edx +- testl %edx, %edx +- jz 2b - --1: movq $0xfefefefefefefeff,%r8 /* Save magic. */ -- -- .p2align 4 /* Align loop. */ --4: /* Main Loop is unrolled 4 times. */ -- /* First unroll. */ -- movq (%rax), %rcx /* get double word (= 8 bytes) in question */ -- addq $8,%rax /* adjust pointer for next word */ -- movq %r8, %rdx /* magic value */ -- addq %rcx, %rdx /* add the magic value to the word. We get -- carry bits reported for each byte which -- is *not* 0 */ -- jnc 3f /* highest byte is NUL => return pointer */ -- xorq %rcx, %rdx /* (word+magic)^word */ -- orq %r8, %rdx /* set all non-carry bits */ -- incq %rdx /* add 1: if one carry bit was *not* set -- the addition will not result in 0. */ -- jnz 3f /* found NUL => return pointer */ -- -- /* Second unroll. */ -- movq (%rax), %rcx /* get double word (= 8 bytes) in question */ -- addq $8,%rax /* adjust pointer for next word */ -- movq %r8, %rdx /* magic value */ -- addq %rcx, %rdx /* add the magic value to the word. We get -- carry bits reported for each byte which -- is *not* 0 */ -- jnc 3f /* highest byte is NUL => return pointer */ -- xorq %rcx, %rdx /* (word+magic)^word */ -- orq %r8, %rdx /* set all non-carry bits */ -- incq %rdx /* add 1: if one carry bit was *not* set -- the addition will not result in 0. */ -- jnz 3f /* found NUL => return pointer */ -- -- /* Third unroll. */ -- movq (%rax), %rcx /* get double word (= 8 bytes) in question */ -- addq $8,%rax /* adjust pointer for next word */ -- movq %r8, %rdx /* magic value */ -- addq %rcx, %rdx /* add the magic value to the word. We get -- carry bits reported for each byte which -- is *not* 0 */ -- jnc 3f /* highest byte is NUL => return pointer */ -- xorq %rcx, %rdx /* (word+magic)^word */ -- orq %r8, %rdx /* set all non-carry bits */ -- incq %rdx /* add 1: if one carry bit was *not* set -- the addition will not result in 0. */ -- jnz 3f /* found NUL => return pointer */ -- -- /* Fourth unroll. */ -- movq (%rax), %rcx /* get double word (= 8 bytes) in question */ -- addq $8,%rax /* adjust pointer for next word */ -- movq %r8, %rdx /* magic value */ -- addq %rcx, %rdx /* add the magic value to the word. We get -- carry bits reported for each byte which -- is *not* 0 */ -- jnc 3f /* highest byte is NUL => return pointer */ -- xorq %rcx, %rdx /* (word+magic)^word */ -- orq %r8, %rdx /* set all non-carry bits */ -- incq %rdx /* add 1: if one carry bit was *not* set -- the addition will not result in 0. */ -- jz 4b /* no NUL found => continue loop */ -- -- .p2align 4 /* Align, it's a jump target. */ --3: subq $8,%rax /* correct pointer increment. */ -- -- testb %cl, %cl /* is first byte NUL? */ -- jz 2f /* yes => return */ -- incq %rax /* increment pointer */ -- -- testb %ch, %ch /* is second byte NUL? */ -- jz 2f /* yes => return */ -- incq %rax /* increment pointer */ -- -- testl $0x00ff0000, %ecx /* is third byte NUL? */ -- jz 2f /* yes => return pointer */ -- incq %rax /* increment pointer */ -- -- testl $0xff000000, %ecx /* is fourth byte NUL? */ -- jz 2f /* yes => return pointer */ -- incq %rax /* increment pointer */ -- -- shrq $32, %rcx /* look at other half. */ -- -- testb %cl, %cl /* is first byte NUL? */ -- jz 2f /* yes => return */ -- incq %rax /* increment pointer */ -- -- testb %ch, %ch /* is second byte NUL? */ -- jz 2f /* yes => return */ -- incq %rax /* increment pointer */ -- -- testl $0xff0000, %ecx /* is third byte NUL? */ -- jz 2f /* yes => return pointer */ -- incq %rax /* increment pointer */ --2: -- subq %rdi, %rax /* compute difference to string start */ +-1: leaq -16(%rdi,%r8), %rdi +- bsfl %edx, %eax +- addq %rdi, %rax - ret +# $Header: /K8_Projects/Glibc/amd64strlen.S 3 10/06/03 11:00 Emenezes $ + diff --git a/glibc-2.3.5-nscd-zeronegtimeout.diff b/glibc-2.3.5-nscd-zeronegtimeout.diff index 744c1b7..99abb31 100644 --- a/glibc-2.3.5-nscd-zeronegtimeout.diff +++ b/glibc-2.3.5-nscd-zeronegtimeout.diff @@ -2,12 +2,11 @@ Index: nscd/aicache.c =================================================================== --- nscd/aicache.c.orig +++ nscd/aicache.c -@@ -515,10 +515,15 @@ next_nip: +@@ -515,9 +515,15 @@ next_nip: if (fd != -1) TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- IDX_result_data); +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) + if (db->negtimeout == 0) @@ -17,7 +16,7 @@ Index: nscd/aicache.c + dh->usable = false; + dataset = NULL; + } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL) ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) == NULL) { dataset->head.allocsize = sizeof (struct dataset) + req->key_len; dataset->head.recsize = total; @@ -30,7 +29,7 @@ Index: nscd/grpcache.c MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- IDX_result_data); +- 1); /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) + if (db->negtimeout == 0) @@ -39,7 +38,7 @@ Index: nscd/grpcache.c + if (dh != NULL) + dh->usable = false; + } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL) ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) == NULL) { dataset->head.allocsize = sizeof (struct dataset) + req->key_len; dataset->head.recsize = total; @@ -52,7 +51,7 @@ Index: nscd/hstcache.c all_written = false; - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- IDX_result_data); +- 1); /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) + if (db->negtimeout == 0) @@ -61,7 +60,7 @@ Index: nscd/hstcache.c + if (dh != NULL) + dh->usable = false; + } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL) ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) == NULL) { dataset->head.allocsize = sizeof (struct dataset) + req->key_len; dataset->head.recsize = total; @@ -74,7 +73,7 @@ Index: nscd/initgrcache.c MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- IDX_result_data); +- 1); /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) + if (db->negtimeout == 0) @@ -83,7 +82,7 @@ Index: nscd/initgrcache.c + if (dh != NULL) + dh->usable = false; + } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL) ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) == NULL) { dataset->head.allocsize = sizeof (struct dataset) + req->key_len; dataset->head.recsize = total; @@ -96,7 +95,7 @@ Index: nscd/pwdcache.c MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- IDX_result_data); +- 1); /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) + if (db->negtimeout == 0) @@ -105,7 +104,7 @@ Index: nscd/pwdcache.c + if (dh != NULL) + dh->usable = false; + } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL) ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) == NULL) { dataset->head.allocsize = sizeof (struct dataset) + req->key_len; dataset->head.recsize = total; diff --git a/glibc-2.4.90-mdns-resolver.diff b/glibc-2.4.90-mdns-resolver.diff deleted file mode 100644 index 106d9b5..0000000 --- a/glibc-2.4.90-mdns-resolver.diff +++ /dev/null @@ -1,456 +0,0 @@ ---- resolv/res_hconf.c -+++ resolv/res_hconf.c 2006/06/06 16:08:34 -@@ -58,6 +58,7 @@ - #define ENV_TRIM_ADD "RESOLV_ADD_TRIM_DOMAINS" - #define ENV_MULTI "RESOLV_MULTI" - #define ENV_REORDER "RESOLV_REORDER" -+#define ENV_MDNS "RESOLV_MDNS" - - enum parse_cbs - { -@@ -80,7 +81,8 @@ - {"multi", CB_arg_bool, HCONF_FLAG_MULTI}, - {"nospoof", CB_arg_bool, HCONF_FLAG_SPOOF}, - {"spoofalert", CB_arg_bool, HCONF_FLAG_SPOOFALERT}, -- {"reorder", CB_arg_bool, HCONF_FLAG_REORDER} -+ {"reorder", CB_arg_bool, HCONF_FLAG_REORDER}, -+ {"mdns", CB_arg_bool, HCONF_FLAG_MDNS} - }; - - /* Structure containing the state. */ -@@ -304,6 +306,9 @@ - - memset (&_res_hconf, '\0', sizeof (_res_hconf)); - -+ /* Default for mdns is "on". */ -+ _res_hconf.flags |= HCONF_FLAG_MDNS; -+ - hconf_name = getenv (ENV_HOSTCONF); - if (hconf_name == NULL) - hconf_name = _PATH_HOSTCONF; -@@ -346,6 +351,10 @@ - arg_trimdomain_list (ENV_TRIM_OVERR, 1, envval); - } - -+ envval = getenv (ENV_MDNS); -+ if (envval) -+ arg_bool (ENV_MDNS, 1, envval, HCONF_FLAG_MDNS); -+ - _res_hconf.initialized = 1; - } - ---- resolv/res_hconf.h -+++ resolv/res_hconf.h 2006/06/06 16:06:46 -@@ -37,6 +37,7 @@ - # define HCONF_FLAG_SPOOFALERT (1 << 2) /* syslog warning of spoofed */ - # define HCONF_FLAG_REORDER (1 << 3) /* list best address first */ - # define HCONF_FLAG_MULTI (1 << 4) /* see comments for gethtbyname() */ -+# define HCONF_FLAG_MDNS (1 << 5) /* Disable MDNS support */ - }; - extern struct hconf _res_hconf; - ---- resolv/res_query.c -+++ resolv/res_query.c 2006/06/06 16:06:46 -@@ -83,6 +83,8 @@ - #include - #include - -+#include "res_hconf.h" -+ - /* Options. Leave them on. */ - /* #undef DEBUG */ - -@@ -286,6 +288,13 @@ - *domain && !done; - domain++) { - -+ if ((_res_hconf.flags & HCONF_FLAG_MDNS) != 0) { -+ /* don't add "local" domain if query contains a dot */ -+ if (dots && (!__strcasecmp(*domain, "local") || -+ !__strcasecmp(*domain, "local."))) -+ continue; -+ } -+ - if (domain[0][0] == '\0' || - (domain[0][0] == '.' && domain[0][1] == '\0')) - root_on_list++; ---- resolv/res_send.c -+++ resolv/res_send.c 2006/06/06 16:06:46 -@@ -85,6 +85,9 @@ - #include - #include - #include -+#if defined(_LIBC) && defined(linux) -+#include -+#endif - - #include - #include -@@ -96,6 +99,8 @@ - #include - #include - -+#include "res_hconf.h" -+ - #if PACKETSZ > 65536 - #define MAXPACKET PACKETSZ - #else -@@ -180,6 +185,9 @@ - static int send_dg(res_state, const u_char *, int, - u_char **, int *, int *, int, - int *, int *, u_char **); -+static int send_dg_mdns(res_state, const u_char *, int, -+ u_char **, int *, int *, struct sockaddr_in6 *, -+ int *, int *, u_char **); - #ifdef DEBUG - static void Aerror(const res_state, FILE *, const char *, int, - const struct sockaddr *); -@@ -337,6 +345,35 @@ - u_char *ans, int anssiz, u_char **ansp) - { - int gotsomewhere, terrno, try, v_circuit, resplen, ns, n; -+ int usemdns; -+ HEADER *qhp = (HEADER *) buf; -+ -+ usemdns = 0; -+ if ((_res_hconf.flags & HCONF_FLAG_MDNS) != 0 && -+ qhp->qr == 0 && qhp->opcode == QUERY && qhp->qdcount == htons(1)) { -+ /* got one simple query */ -+ const u_char *bp, *be; -+ be = buf + buflen; -+ for (bp = buf + NS_HFIXEDSZ; bp < be; ) -+ if ((*bp & NS_CMPRSFLGS) != 0) -+ break; -+ else if (*bp) { -+ if (*bp == 5 && !strncasecmp(bp, "\005local\000", 7)) { -+ usemdns = 1; -+ break; -+ } -+ if (*bp == 3 && !strncasecmp(bp, "\003254\003169\007in-addr\004arpa\000", 22)) { -+ usemdns = 1; -+ break; -+ } -+ if (*bp == 1 && !strncasecmp(bp, "\0010\0018\001e\001f\003ip6\004arpa\000", 18)) { -+ usemdns = 2; -+ break; -+ } -+ bp += *bp + 1; -+ } else -+ break; -+ } - - if (statp->nscount == 0) { - __set_errno (ESRCH); -@@ -470,9 +507,24 @@ - * Send request, RETRY times, or until successful. - */ - for (try = 0; try < statp->retry; try++) { -- for (ns = 0; ns < MAXNS; ns++) -+ for (ns = 0; ns < (usemdns ? 1 : MAXNS); ns++) - { - struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns]; -+ if (usemdns == 1) { -+ static struct sockaddr_in mdns4; -+ mdns4.sin_family = AF_INET; -+ mdns4.sin_port = htons(5353); -+ mdns4.sin_addr.s_addr = htonl(0xe00000fb); -+ nsap = (struct sockaddr_in6 *)&mdns4; -+ } -+ if (usemdns == 2) { -+ static struct sockaddr_in6 mdns6; -+ mdns6.sin6_family = AF_INET6; -+ mdns6.sin6_port = htons(5353); -+ mdns6.sin6_addr.s6_addr32[0] = htonl(0xff020000); -+ mdns6.sin6_addr.s6_addr32[3] = htonl(0x000000fb); -+ nsap = &mdns6; -+ } - - if (nsap == NULL) - goto next_ns; -@@ -530,8 +582,11 @@ - resplen = n; - } else { - /* Use datagrams. */ -- n = send_dg(statp, buf, buflen, &ans, &anssiz, &terrno, -- ns, &v_circuit, &gotsomewhere, ansp); -+ if (usemdns) -+ n = send_dg_mdns(statp, buf, buflen, &ans, &anssiz, &terrno, nsap, &v_circuit, &gotsomewhere, ansp); -+ else -+ n = send_dg(statp, buf, buflen, &ans, &anssiz, &terrno, -+ ns, &v_circuit, &gotsomewhere, ansp); - if (n < 0) - return (-1); - if (n == 0) -@@ -598,8 +653,15 @@ - if (!v_circuit) { - if (!gotsomewhere) - __set_errno (ECONNREFUSED); /* no nameservers found */ -- else -+ else if (!usemdns) { - __set_errno (ETIMEDOUT); /* no answer obtained */ -+ } else { -+ /* treat timeout as host not found */ -+ HEADER *anhp = (HEADER *) ans; -+ memset(ans, 0, HFIXEDSZ); -+ anhp->rcode = NXDOMAIN; -+ return HFIXEDSZ; -+ } - } else - __set_errno (terrno); - return (-1); -@@ -1045,6 +1107,255 @@ - } - } - -+static int -+send_dg_mdns(res_state statp, -+ const u_char *buf, int buflen, u_char **ansp, int *anssizp, -+ int *terrno, struct sockaddr_in6 *nsap, int *v_circuit, int *gotsomewhere, u_char **anscp) -+{ -+ const HEADER *hp = (HEADER *) buf; -+ u_char *ans = *ansp; -+ int anssiz = *anssizp; -+ HEADER *anhp = (HEADER *) ans; -+ struct timespec now, timeout, finish; -+ struct pollfd pfd[32]; -+ int ptimeout; -+ int fromlen, resplen, seconds, n, s; -+ int on = 1; -+ struct msghdr mhdr; -+ struct iovec iov; -+ u_char cmsgbuf[CMSG_SPACE(sizeof(int))]; -+ struct cmsghdr *cmsg; -+ int ttl; -+ struct ifconf ifconf; -+ struct ifreq ifreq[64]; -+ int ifreqn; -+ int i, j; -+ int ifidx[32], ifidxn; -+ struct ip_mreqn mreqn; -+ -+ s = socket(nsap->sin6_family == AF_INET ? PF_INET : PF_INET6, SOCK_DGRAM, 0); -+ if (s < 0) { -+ *terrno = errno; -+ Perror(statp, stderr, "socket(dg)", errno); -+ return (-1); -+ } -+ ifconf.ifc_len = sizeof(ifreq); -+ ifconf.ifc_req = ifreq; -+ ifidxn = 0; -+ if (ioctl(s, SIOCGIFCONF, &ifconf) == 0) { -+ ifreqn = ifconf.ifc_len / sizeof(*ifreq); -+ for (i = 0 ; i < ifreqn; i++) { -+ if (ioctl(s, SIOCGIFFLAGS, ifreq + i)) -+ continue; -+ if (!(ifreq[i].ifr_flags & IFF_MULTICAST)) -+ continue; -+ if (ioctl(s, SIOCGIFINDEX, ifreq + i)) -+ continue; -+ for (j = 0; j < ifidxn; j++) -+ if (ifidx[j] == ifreq[i].ifr_ifindex) -+ break; -+ if (j < ifidxn) -+ continue; -+ ifidx[ifidxn++] = ifreq[i].ifr_ifindex; -+ if (ifidxn == sizeof(ifidx)/sizeof(*ifidx)) -+ break; -+ } -+ } -+ j = 0; -+ for (i = 0; i < (ifidxn ? ifidxn : 1); i++) { -+ if (i) { -+ s = socket(nsap->sin6_family == AF_INET ? PF_INET : PF_INET6, SOCK_DGRAM, 0); -+ if (!s) -+ continue; -+ } -+ if (setsockopt(s, SOL_IP, IP_RECVTTL, &on, sizeof(on))) { -+ *terrno = errno; -+ Perror(statp, stderr, "IP_RECVTTL(dg)", errno); -+ close(s); -+ continue; -+ } -+ if (ifidxn) { -+ memset(&mreqn, 0, sizeof(mreqn)); -+ mreqn.imr_ifindex = ifidx[i]; -+ if (setsockopt(s, SOL_IP, IP_MULTICAST_IF, &mreqn, sizeof(mreqn))) { -+ *terrno = errno; -+ Perror(statp, stderr, "IP_MULTICAST_IF", errno); -+ close(s); -+ continue; -+ } -+ } -+ if (sendto(s, (char*)buf, buflen, 0, -+ (struct sockaddr *)nsap, sizeof *nsap) != buflen) { -+ Aerror(statp, stderr, "sendto", errno, *(struct sockaddr_in *)nsap); -+ close(s); -+ continue; -+ } -+ pfd[j].fd = s; -+ pfd[j].events = POLLIN; -+ j++; -+ } -+ /* -+ * Wait for reply. -+ */ -+ seconds = statp->retrans; -+ if (seconds <= 0) -+ seconds = 1; -+ evNowTime(&now); -+ evConsTime(&timeout, seconds, 0); -+ evAddTime(&finish, &now, &timeout); -+ wait: -+ if (j == 0) { -+ return (0); -+ } -+ -+ /* Convert struct timespec in milliseconds. */ -+ ptimeout = timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000; -+ n = __poll (pfd, j, ptimeout); -+ if (n == 0) { -+ Dprint(statp->options & RES_DEBUG, (stdout, ";; timeout\n")); -+ *gotsomewhere = 1; -+ for (i = 0; i < j; i++) -+ close(pfd[i].fd); -+ return (0); -+ } -+ if (n < 0) { -+ if (errno == EINTR) { -+ evNowTime(&now); -+ if (evCmpTime(finish, now) > 0) { -+ evSubTime(&timeout, &finish, &now); -+ goto wait; -+ } -+ } -+ Perror(statp, stderr, "select", errno); -+ for (i = 0; i < j; i++) -+ close(pfd[i].fd); -+ res_nclose(statp); -+ return (0); -+ } -+ for (i = 0; i < j - 1; i++) -+ if (pfd[i].revents == POLLIN) -+ break; -+ s = pfd[i].fd; -+ __set_errno (0); -+ fromlen = sizeof(struct sockaddr_in6); -+ if (anssiz < MAXPACKET -+ && anscp -+ && (ioctl (s, FIONREAD, &resplen) < 0 -+ || anssiz < resplen)) { -+ ans = malloc (MAXPACKET); -+ if (ans == NULL) -+ ans = *ansp; -+ else { -+ anssiz = MAXPACKET; -+ *anssizp = MAXPACKET; -+ *ansp = ans; -+ *anscp = ans; -+ anhp = (HEADER *) ans; -+ } -+ } -+ iov.iov_base = ans; -+ iov.iov_len = anssiz; -+ mhdr.msg_name = 0; -+ mhdr.msg_namelen = 0; -+ mhdr.msg_iov = &iov; -+ mhdr.msg_iovlen = 1; -+ mhdr.msg_control = cmsgbuf; -+ mhdr.msg_controllen = sizeof(cmsgbuf); -+ mhdr.msg_flags = 0; -+ resplen = recvmsg(s, &mhdr, 0); -+ if (resplen <= 0) { -+ if (errno == EAGAIN) -+ goto wait; -+ Perror(statp, stderr, "recvfrom", errno); -+wait2: -+ close(s); -+ if (i < j - 1) -+ memmove(pfd + i, pfd + i + 1, sizeof(*pfd) * (j - i - 1)); -+ j--; -+ goto wait; -+ } -+ cmsg = CMSG_FIRSTHDR(&mhdr); -+ for (cmsg = CMSG_FIRSTHDR(&mhdr); cmsg; CMSG_NXTHDR(&mhdr, cmsg)) -+ if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_TTL) -+ break; -+ if (!cmsg) { -+ Dprint(statp->options & RES_DEBUG, -+ (stdout, ";; no TTL found\n")); -+ goto wait2; -+ } -+ ttl = *(int *)CMSG_DATA(cmsg); -+ if (ttl != 255) { -+ Dprint(statp->options & RES_DEBUG, -+ (stdout, ";; answer with bad TTL: %d \n", ttl)); -+ goto wait; -+ } -+ *gotsomewhere = 1; -+ if (resplen < HFIXEDSZ) { -+ /* -+ * Undersized message. -+ */ -+ Dprint(statp->options & RES_DEBUG, -+ (stdout, ";; undersized: %d\n", -+ resplen)); -+ *terrno = EMSGSIZE; -+ goto wait; -+ } -+ if (hp->id != anhp->id) { -+ /* -+ * response from old query, ignore it. -+ * XXX - potential security hazard could -+ * be detected here. -+ */ -+ DprintQ((statp->options & RES_DEBUG) || -+ (statp->pfcode & RES_PRF_REPLY), -+ (stdout, ";; old answer:\n"), -+ ans, (resplen > anssiz) ? anssiz : resplen); -+ goto wait; -+ } -+ if (!(statp->options & RES_INSECURE2) && -+ !res_queriesmatch(buf, buf + buflen, -+ ans, ans + anssiz)) { -+ /* -+ * response contains wrong query? ignore it. -+ * XXX - potential security hazard could -+ * be detected here. -+ */ -+ DprintQ((statp->options & RES_DEBUG) || -+ (statp->pfcode & RES_PRF_REPLY), -+ (stdout, ";; wrong query name:\n"), -+ ans, (resplen > anssiz) ? anssiz : resplen); -+ goto wait; -+ } -+ if (anhp->rcode == SERVFAIL || -+ anhp->rcode == NOTIMP || -+ anhp->rcode == REFUSED) { -+ DprintQ(statp->options & RES_DEBUG, -+ (stdout, "server rejected query:\n"), -+ ans, (resplen > anssiz) ? anssiz : resplen); -+ goto wait; -+ } -+ for (i = 0; i < j; i++) -+ close(pfd[i].fd); -+#if 0 -+ if (!(statp->options & RES_IGNTC) && anhp->tc) { -+ /* -+ * To get the rest of answer, -+ * use TCP with same server. -+ */ -+ Dprint(statp->options & RES_DEBUG, -+ (stdout, ";; truncated answer\n")); -+ *v_circuit = 1; -+ res_nclose(statp); -+ return (1); -+ } -+#endif -+ /* -+ * All is well, or the error is fatal. Signal that the -+ * next nameserver ought not be tried. -+ */ -+ return (resplen); -+} -+ - #ifdef DEBUG - static void - Aerror(const res_state statp, FILE *file, const char *string, int error, diff --git a/glibc-2.8-dlosinfo.diff b/glibc-2.8-dlosinfo.diff deleted file mode 100644 index de6c06b..0000000 --- a/glibc-2.8-dlosinfo.diff +++ /dev/null @@ -1,14 +0,0 @@ -Compilation fix - -diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h -index b13b6cf..8d22a69 100644 ---- sysdeps/unix/sysv/linux/dl-osinfo.h -+++ sysdeps/unix/sysv/linux/dl-osinfo.h -@@ -17,6 +17,7 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#include - #include - #include - #include diff --git a/glibc-2.8-revert-nscleanup.diff b/glibc-2.8-revert-nscleanup.diff index 1f6c319..91fb6ce 100644 --- a/glibc-2.8-revert-nscleanup.diff +++ b/glibc-2.8-revert-nscleanup.diff @@ -1,3 +1,7 @@ +** TEMPORARY ** + +We should delete this patch again very soon. --pasky + diff --git a/inet/netinet/in.h b/inet/netinet/in.h index e3446a9..1366198 100644 --- inet/netinet/in.h diff --git a/glibc-2.9-2008111711.tar.bz2 b/glibc-2.9-2008111711.tar.bz2 deleted file mode 100644 index 4d0f2fc..0000000 --- a/glibc-2.9-2008111711.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:adabcdd26bd71d7cb15bfc2fbb3efc29ad9d166a2a3f25bed097e14489264de8 -size 15308055 diff --git a/glibc-2.9-fortify.diff b/glibc-2.9-fortify.diff deleted file mode 100644 index 7dc6f0b..0000000 --- a/glibc-2.9-fortify.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- misc/sys/cdefs.h.orig 2009-02-27 16:05:10.000000000 +0100 -+++ misc/sys/cdefs.h 2009-02-27 16:06:32.000000000 +0100 -@@ -303,7 +303,12 @@ - # endif - # else - # define __extern_inline extern __inline --# define __extern_always_inline extern __always_inline -+# if __GNUC_PREREQ (4,3) -+# define __extern_always_inline \ -+ extern __always_inline __attribute__ ((__artificial__)) -+# else -+# define __extern_always_inline extern __always_inline -+# endif - # endif - #endif - diff --git a/missing-include-build-fix.diff b/glibc-check-native-missing-include.diff similarity index 100% rename from missing-include-build-fix.diff rename to glibc-check-native-missing-include.diff diff --git a/glibc-compiled-binaries.diff b/glibc-compiled-binaries.diff index 95fee92..a66c7ca 100644 --- a/glibc-compiled-binaries.diff +++ b/glibc-compiled-binaries.diff @@ -19,7 +19,7 @@ # Build tools. --- configure +++ configure -@@ -567,6 +567,7 @@ ac_clean_files= +@@ -590,6 +590,7 @@ ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no @@ -27,15 +27,15 @@ subdirs= MFLAGS= MAKEFLAGS= -@@ -687,6 +688,7 @@ ac_ct_CC - OBJEXT - BUILD_CC +@@ -745,6 +746,7 @@ ac_ct_CC + CXX + CPP cross_compiling +compiled_binaries_can_run_on_buildhost - CPP - CXX - CXXFLAGS -@@ -1180,6 +1182,13 @@ do + BUILD_CC + OBJEXT + ac_ct_CC +@@ -1280,6 +1282,13 @@ do { (exit 1); exit 1; }; } done @@ -67,23 +67,6 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -@@ -9212,6 +9225,7 @@ ac_ct_CC!$ac_ct_CC$ac_delim - OBJEXT!$OBJEXT$ac_delim - BUILD_CC!$BUILD_CC$ac_delim - cross_compiling!$cross_compiling$ac_delim -+compiled_binaries_can_run_on_buildhost!$compiled_binaries_can_run_on_buildhost$ac_delim - CPP!$CPP$ac_delim - CXX!$CXX$ac_delim - CXXFLAGS!$CXXFLAGS$ac_delim -@@ -9240,7 +9254,7 @@ PERL!$PERL$ac_delim - INSTALL_INFO!$INSTALL_INFO$ac_delim - _ACEOF - -- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then -+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 98; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 --- configure.in +++ configure.in @@ -835,6 +835,7 @@ if test $host != $build; then diff --git a/glibc-fix-nscd.diff b/glibc-fix-nscd.diff deleted file mode 100644 index d639f5a..0000000 --- a/glibc-fix-nscd.diff +++ /dev/null @@ -1,49 +0,0 @@ -diff -urp nscd.mm/cache.c nscd/cache.c ---- nscd.mm/cache.c 2008-10-13 13:09:35.120009000 +0000 -+++ nscd/cache.c 2008-10-13 15:11:17.629844982 +0000 -@@ -300,7 +300,7 @@ prune_cache (struct database_dyn *table, - - /* now == 0 means just check for changed files */ - if (now == (time_t)0) -- return; -+ return 0; - - /* We run through the table and find values which are not valid anymore. - -diff -urp nscd.mm/connections.c nscd/connections.c ---- nscd.mm/connections.c 2008-10-13 13:09:35.120009000 +0000 -+++ nscd/connections.c 2008-10-13 14:55:22.417018210 +0000 -@@ -1816,22 +1816,5 @@ main_loop_poll (void) - /* We have a new incoming connection. Accept the connection. */ - int fd; - --#ifndef __ASSUME_PACCEPT -- fd = -1; -- if (have_paccept >= 0) --#endif -- { --#if 0 -- fd = TEMP_FAILURE_RETRY (paccept (sock, NULL, NULL, NULL, -- SOCK_NONBLOCK)); --#ifndef __ASSUME_PACCEPT -- if (have_paccept == 0) -- have_paccept = fd != -1 || errno != ENOSYS ? 1 : -1; --#endif --#endif -- } --#ifndef __ASSUME_PACCEPT -- if (have_paccept < 0) -- fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL)); --#endif -+ fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL)); - - /* Use the descriptor if we have not reached the limit. */ - if (fd >= 0) ---- sysdeps/unix/sysv/linux/kernel-features.h.mm 2008-08-25 13:02:49.000000000 +0000 -+++ sysdeps/unix/sysv/linux/kernel-features.h 2008-10-13 14:27:31.357847116 +0000 -@@ -509,5 +509,4 @@ - # define __ASSUME_SOCK_CLOEXEC 1 - # define __ASSUME_IN_NONBLOCK 1 - # define __ASSUME_PIPE2 1 --# define __ASSUME_PACCEPT 1 - #endif diff --git a/glibc-getgroups-fortify.diff b/glibc-getgroups-fortify.diff deleted file mode 100644 index 554c859..0000000 --- a/glibc-getgroups-fortify.diff +++ /dev/null @@ -1,14 +0,0 @@ -Index: glibc/posix/bits/unistd.h -=================================================================== ---- posix/bits/unistd.h 2007-10-16 14:58:46.000000000 +0200 -+++ posix/bits/unistd.h 2008-09-18 11:38:25.000000000 +0200 -@@ -270,7 +270,8 @@ __NTH (getgroups (int __size, __gid_t __ - if (!__builtin_constant_p (__size)) - return __getgroups_chk (__size, __list, __bos (__list)); - -- if (__size * sizeof (__gid_t) > __bos (__list)) -+ if (__size > 0 -+ && __size * sizeof (__gid_t) > __bos (__list)) - return __getgroups_chk_warn (__size, __list, __bos (__list)); - } - return __getgroups_alias (__size, __list); diff --git a/glibc-ldscript.diff b/glibc-ldscript.diff deleted file mode 100644 index 2134050..0000000 --- a/glibc-ldscript.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- elf/Makefile 03 Nov 2008 15:06:11 +0100 1.330 -+++ elf/Makefile 21 Jan 2009 19:25:29 +0100 -@@ -304,7 +304,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld - $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \ - LC_ALL=C \ - sed -e '/^=========/,/^=========/!d;/^=========/d' \ -- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ -+ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ - > $@.lds - $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ - $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \ diff --git a/glibc-mtfsf.diff b/glibc-mtfsf.diff deleted file mode 100644 index a2cdb1f..0000000 --- a/glibc-mtfsf.diff +++ /dev/null @@ -1,159 +0,0 @@ ---- sysdeps/powerpc/fpu/fenv_libc.h.~1.5.~ 2008-11-17 10:44:10.000000000 +0100 -+++ sysdeps/powerpc/fpu/fenv_libc.h 2009-01-22 14:23:37.000000000 +0100 -@@ -39,7 +39,7 @@ libm_hidden_proto (__fe_nomask_env) - do { \ - double d = (env); \ - if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \ -- asm volatile ("mtfsf 0xff,%0,1,0" : : "f" (d)); \ -+ asm volatile (".machine push; .machine power6; mtfsf 0xff,%0,1,0; .machine pop" : : "f" (d)); \ - else \ - asm volatile ("mtfsf 0xff,%0" : : "f" (d)); \ - } while(0) -@@ -53,7 +53,7 @@ libm_hidden_proto (__fe_nomask_env) - #define relax_fenv_state() \ - do { \ - if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \ -- asm ("mtfsfi 7,0,1"); \ -+ asm (".machine push; .machine power6; mtfsfi 7,0,1; .machine pop"); \ - asm ("mtfsfi 7,0"); \ - } while(0) - ---- sysdeps/powerpc/fpu/tst-setcontext-fpscr.c.~1.1.~ 2008-11-17 02:34:02.000000000 +0100 -+++ sysdeps/powerpc/fpu/tst-setcontext-fpscr.c 2009-01-22 14:24:33.000000000 +0100 -@@ -109,7 +109,7 @@ typedef unsigned int si_fpscr_t __attrib - tmp __attribute__ ((__aligned__(8))); \ - tmp.fpscr = __fpscr; \ - /* Set the entire 64-bit FPSCR. */ \ -- __asm__ ("lfd%U0 0,%0; mtfsf 255,0,1,0" : : "m" (tmp.d) : "fr0"); \ -+ __asm__ ("lfd%U0 0,%0; .machine push; .machine power6; mtfsf 255,0,1,0; .machine pop" : : "m" (tmp.d) : "fr0"); \ - } - - # define _GET_SI_FPSCR(__fpscr) ({ \ ---- sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S.~1.4.~ 2008-11-17 10:44:18.000000000 +0100 -+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2009-01-22 15:42:24.000000000 +0100 -@@ -202,13 +202,19 @@ ENTRY(__CONTEXT_FUNC_NAME) - lfd fp0,_UC_FREGS+(0*8)(r31) - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp31,1,0 -+ .machine pop - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r7,PPC_FEATURE_HAS_DFP - beq 7f - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp31,1,0 -+ .machine pop - b 8f - /* Continue to operate on the FPSCR as if it were 32-bits. */ - 7: mtfsf 0xff,fp31 ---- sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S.~1.3.~ 2008-11-17 10:44:18.000000000 +0100 -+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2009-01-22 15:42:37.000000000 +0100 -@@ -428,13 +428,19 @@ ENTRY(__CONTEXT_FUNC_NAME) - lfd fp0,_UC_FREGS+(0*8)(r31) - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp31,1,0 -+ .machine pop - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r7,PPC_FEATURE_HAS_DFP - beq 7f - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp31,1,0 -+ .machine pop - b 8f - /* Continue to operate on the FPSCR as if it were 32-bits. */ - 7: mtfsf 0xff,fp31 ---- sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S.~1.14.~ 2008-11-17 10:44:18.000000000 +0100 -+++ sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S 2009-01-22 15:43:05.000000000 +0100 -@@ -84,13 +84,19 @@ ENTRY(__novec_setcontext) - - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r5,PPC_FEATURE_HAS_DFP - beq 5f - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - b 6f - /* Continue to operate on the FPSCR as if it were 32-bits. */ - 5: -@@ -372,13 +378,19 @@ L(has_no_vec): - - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r5,PPC_FEATURE_HAS_DFP - beq 7f - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - b 8f - /* Continue to operate on the FPSCR as if it were 32-bits. */ - 7: ---- sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S.~1.17.~ 2008-11-17 10:44:18.000000000 +0100 -+++ sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S 2009-01-22 15:43:26.000000000 +0100 -@@ -178,13 +178,19 @@ ENTRY(__novec_swapcontext) - lfd fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r31) - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r8,PPC_FEATURE_HAS_DFP - beq 5f - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - b 6f - /* Continue to operate on the FPSCR as if it were 32-bits. */ - 5: -@@ -670,13 +676,19 @@ L(has_no_vec2): - lfd fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r31) - # ifdef _ARCH_PWR6 - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - # else - /* Availability of DFP indicates a 64-bit FPSCR. */ - andi. r6,r8,PPC_FEATURE_HAS_DFP - beq 7f - /* Use the extended four-operand version of the mtfsf insn. */ -+ .machine push -+ .machine power6 - mtfsf 0xff,fp0,1,0 -+ .machine pop - b 8f - /* Continue to operate on the FPSCR as if it were 32-bits. */ - 7: diff --git a/glibc-nis-splitgroups.diff b/glibc-nis-splitgroups.diff new file mode 100644 index 0000000..3254728 --- /dev/null +++ b/glibc-nis-splitgroups.diff @@ -0,0 +1,100 @@ +2009-04-19 Petr Baudis + + * nis/Makefile (libnss_compat-routines): Add build dependency + on nss-nis. + * nis/nss: New variable SPLIT_GROUPS. + * nis/libnsl.h: New flag NSS_FLAG_SPLIT_GROUPS. + * nis/nss-default.c: Likewise. + * nss_compat/compat-initgroups.c: Do not use initgroups_dyn + in case NSS_FLAG_SPLIT_GROUPS is set. + +diff --git a/nis/Makefile b/nis/Makefile +index 8083ee8..9814fce 100644 +--- nis/Makefile ++++ nis/Makefile +@@ -56,7 +56,8 @@ libnsl-routines = yp_xdr ypclnt ypupdate_xdr \ + nis_findserv nis_callback nis_clone_dir nis_clone_obj\ + nis_clone_res nss-default + +-libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) ++libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \ ++ nss-nis + libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes)) + + libnss_nis-routines := $(addprefix nis-,$(databases)) nis-initgroups \ +diff --git a/nis/libnsl.h b/nis/libnsl.h +index c6ceb32..77c34ef 100644 +--- nis/libnsl.h ++++ nis/libnsl.h +@@ -21,6 +21,7 @@ + #define NSS_FLAG_NETID_AUTHORITATIVE 1 + #define NSS_FLAG_SERVICES_AUTHORITATIVE 2 + #define NSS_FLAG_SETENT_BATCH_READ 4 ++#define NSS_FLAG_SPLIT_GROUPS 8 + + + /* Get current set of default flags. */ +diff --git a/nis/nss b/nis/nss +index aab40ab..4715ab5 100644 +--- nis/nss ++++ nis/nss +@@ -1,7 +1,7 @@ + # /etc/default/nss + # This file can theoretically contain a bunch of customization variables + # for Name Service Switch in the GNU C library. For now there are only +-# three variables: ++# four variables: + # + # NETID_AUTHORITATIVE + # If set to TRUE, the initgroups() function will accept the information +@@ -26,3 +26,11 @@ + # might result into a network communication with the server to get + # the next entry. + #SETENT_BATCH_READ=TRUE ++# ++# SPLIT_GROUPS ++# If set to TRUE, the nss_compat module's initgroups() function will ++# not use the NIS initgroups interface for retrieving group information. ++# This allows one NIS group to be split into multiple database entries ++# with same gid, a practice used to overcome entry length limitations. ++# The downside is a certain performance degradation. ++#SPLIT_GROUPS=TRUE +diff --git a/nis/nss-default.c b/nis/nss-default.c +index 046ddfe..d6141b9 100644 +--- nis/nss-default.c ++++ nis/nss-default.c +@@ -48,6 +48,7 @@ static const struct + { STRNLEN ("NETID_AUTHORITATIVE"), NSS_FLAG_NETID_AUTHORITATIVE }, + { STRNLEN ("SERVICES_AUTHORITATIVE"), NSS_FLAG_SERVICES_AUTHORITATIVE }, +- { STRNLEN ("SETENT_BATCH_READ"), NSS_FLAG_SETENT_BATCH_READ } ++ { STRNLEN ("SETENT_BATCH_READ"), NSS_FLAG_SETENT_BATCH_READ }, ++ { STRNLEN ("SPLIT_GROUPS"), NSS_FLAG_SPLIT_GROUPS }, + }; + #define nvars (sizeof (vars) / sizeof (vars[0])) + +diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c +index 76ca95d..14b0aac 100644 +--- nis/nss_compat/compat-initgroups.c ++++ nis/nss_compat/compat-initgroups.c +@@ -32,6 +32,9 @@ + #include + #include + ++/* Get the declaration of the NSS flags. */ ++#include ++ + static service_user *ni; + /* Type of the lookup function. */ + static enum nss_status (*nss_initgroups_dyn) (const char *, gid_t, +@@ -103,7 +106,10 @@ init_nss_interface (void) + if (ni == NULL + && __nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0) + { +- nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn"); ++ if (_nsl_default_nss () & NSS_FLAG_SPLIT_GROUPS) ++ nss_initgroups_dyn = NULL; ++ else ++ nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn"); + nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r"); + nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r"); + nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r"); diff --git a/glibc-nptl-2.9-2008111711.tar.bz2 b/glibc-nptl-2.9-2008111711.tar.bz2 deleted file mode 100644 index c45a964..0000000 --- a/glibc-nptl-2.9-2008111711.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfe11b1779ec269e02d4951c7364581ec5113ea3b17eed20341e5cf4cf57ff10 -size 330166 diff --git a/glibc-nscd-prune-ret.diff b/glibc-nscd-prune-ret.diff new file mode 100644 index 0000000..697a449 --- /dev/null +++ b/glibc-nscd-prune-ret.diff @@ -0,0 +1,12 @@ +diff -urp nscd.mm/cache.c nscd/cache.c +--- nscd.mm/cache.c 2008-10-13 13:09:35.120009000 +0000 ++++ nscd/cache.c 2008-10-13 15:11:17.629844982 +0000 +@@ -300,7 +300,7 @@ prune_cache (struct database_dyn *table, + + /* now == 0 means just check for changed files */ + if (now == (time_t)0) +- return; ++ return 0; + + /* We run through the table and find values which are not valid anymore. + diff --git a/glibc-nss-deepbind.diff b/glibc-nss-deepbind.diff index eae0472..4cdcce0 100644 --- a/glibc-nss-deepbind.diff +++ b/glibc-nss-deepbind.diff @@ -2,6 +2,10 @@ Use DEEPBIND to load the nss modules. Helps thunderbird (linked against its own version of the ldap libs) when using nss_ldap (linked against system libldap) leading to crashes due to incompatibilities. +This has a downside: Linking against libraries overriding malloc() and free() +will break (unless the malloc()'d pointers by glibc are free()able by these). +This is fixable in principle, just needs some work. + See https://bugzilla.novell.com/show_bug.cgi?id=157078 and http://sourceware.org/bugzilla/show_bug.cgi?id=6610 diff --git a/glibc-ports-2.10.1-2b2b217196.tar.bz2 b/glibc-ports-2.10.1-2b2b217196.tar.bz2 new file mode 100644 index 0000000..2eaca8b --- /dev/null +++ b/glibc-ports-2.10.1-2b2b217196.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efc4a2a614a97203c3c9847db37f40e52596776439b512b57f1606a12361b8f2 +size 585531 diff --git a/glibc-version.diff b/glibc-version.diff index 6f9945f..052c3ba 100644 --- a/glibc-version.diff +++ b/glibc-version.diff @@ -6,7 +6,7 @@ static const char banner[] = -"GNU C Library "RELEASE" release version "VERSION", by Roland McGrath et al.\n\ +"GNU C Library "RELEASE" release version "VERSION" ("CVSDATE"), by Roland McGrath et al.\n\ - Copyright (C) 2008 Free Software Foundation, Inc.\n\ + Copyright (C) 2009 Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions.\n\ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\ PARTICULAR PURPOSE.\n\ diff --git a/glibc.changes b/glibc.changes index 8eff749..2077d67 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,97 @@ +------------------------------------------------------------------- +Fri May 22 22:45:10 CEST 2009 - pbaudis@suse.cz + +- Update to glibc-2.10.1-e38af591a8 of glibc/pb-stable.git glibc-2.10-branch + maintained by me at repo.or.cz; contains backports of various bugfixes. + (Still the same source is used for glibc-ports.) +- Stop using separate tarball for nptl. + +------------------------------------------------------------------- +Fri May 15 22:13:33 CEST 2009 - pbaudis@suse.cz + +- Add support for multiple group records for a single group + when using nss_compat (configurable in /etc/default/nss) [bnc#480991] + +------------------------------------------------------------------- +Sun May 10 21:42:37 CEST 2009 - pbaudis@suse.cz + +- Update to 2009051021, glibc-2.10.1: + * Add missing cacheinfo entry for a recent Intel processor + * Fix ABI issue with the gshadow interface + +------------------------------------------------------------------- +Sun May 10 11:20:12 CEST 2009 - pbaudis@suse.cz + +- Upgrade to CVS HEAD as of 2009051010 - glibc-2.10: + * DNS IPv4-IPv6 lookup changed back to parallel version; with broken DNS + servers (the case e.g. for many ADSL users), you may experience long + timeouts, once for each process (but eventually your request will be + resolved) - the solution is to run nscd (default on SUSE) and/or + put 'options single-request' in /etc/resolv.conf. + + * New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info + Implemented by Ulrich Drepper. + + * New Linux interfaces: accept4, fallocate, fallocate64. + Implemented by Ulrich Drepper. + + * Correct declarations of string function when used in C++ code. This + could lead to compile errors for invalid C++ code. + + * XPG7/POSIX 2008 compilation environment. Many GNU-specific functions are + now in POSIX. + + * New POSIX 2008 interface: psiginfo + Implemented by Ulrich Drepper. + + * New ISO C++1x interfaces: quick_exit, at_quick_exit + Implemented by Ulrich Drepper. + + * Support for selecting between multiple function definitions at runtime + using STT_GNU_IFUNC symbols. Implemented by Ulrich Drepper. + + * The libcrypt library can now use the hash function implementations in + NSS. Implemented by Ulrich Drepper. + + * The malloc implementation can be compiled to be less memory efficient + but higher performing in multi-threaded programs. + Implemented by Ulrich Drepper. + + * New locales: nan_TW@latin, ks_IN + + * Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64. + Implemented by Ulrich Drepper. + + * Extended printf hook support. It is possible to use user-defined types + and extend existing format specifiers. + Implemented by Ulrich Drepper. + + * Handling for group shadow files has been added. + Implemented by Ulrich Drepper. +- Retired: + glibc-2.10-dns-fixpack.diff + glibc-2.10-dns-no-gethostbyname4.diff + glibc-2.10-locale-tuesday.diff + glibc-2.10-nscd-gc-dataofs.diff + glibc-2.10-nscd-prunerace.diff + glibc-2.10-ppc32-setcontext-fp.diff + glibc-2.10-unsetenv.diff + glibc-2.4.90-mdns-resolver.diff + glibc-2.9-fortify.diff + glibc-getgroups-fortify.diff + glibc-ldscript.diff + glibc-mtfsf.diff + glibc-2.10-nscd-meminflight.diff + getaddrinfo-ipv6-sanity.diff + glibc-2.10-nis-hosts.diff +- Several other modified + +------------------------------------------------------------------- +Fri Apr 17 16:49:52 CEST 2009 - pbaudis@suse.cz + +- Fix defaulting to localhost in case of no nameserver entries + in /etc/resolv.conf [bnc#473308] + ------------------------------------------------------------------- Mon Mar 23 15:32:01 CET 2009 - rguenther@suse.de diff --git a/glibc.spec b/glibc.spec index a032f5f..6a5e303 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,5 +1,5 @@ # -# spec file for package glibc (Version 2.9) +# spec file for package glibc (Version 2.10.1) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -68,14 +68,15 @@ Obsoletes: glibc-32bit %endif Provides: rtld(GNU_HASH) AutoReqProv: on -Version: 2.9 -Release: 15 -%define snapshot_date 2008111711 +Version: 2.10.1 +Release: 1 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source: glibc-%{version}-%{snapshot_date}.tar.bz2 -Source1: glibc-nptl-%{version}-%{snapshot_date}.tar.bz2 +# The glibc source comes from http://repo.or.cz/w/glibc/pb-stable.git +# glibc-2.10-branch. +Source: glibc-%{version}-e38af591a8.tar.bz2 +Source2: glibc-ports-%{version}-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 Source8: nsswitch.conf @@ -96,21 +97,21 @@ Patch1: glibc-2.3.90-noversion.diff Patch2: glibc-2.3.90-fnmatch.diff Patch3: resolv.dynamic.diff Patch4: glibc-2.3.locales.diff.bz2 -Patch5: crypt_blowfish-glibc-2.3.diff -Patch6: glibc-version.diff -Patch7: glibc-2.4.90-revert-only-euro.diff -Patch8: glibc-2.3-regcomp.diff -Patch9: glibc-2.3.2-revert_tcsetattr.diff -Patch10: glibc-2.3.1.localedef.diff -Patch11: glibc-2.3.2.no_archive.diff -Patch12: glibc-2.3.3-amd64-string.diff -Patch13: libm-x86-64.diff.bz2 -Patch14: glibc-2.3.90-bindresvport.blacklist.diff -Patch15: glibc-suse-note.diff -Patch16: glibc-2.4.90-no_NO.diff -Patch17: glibc-2.3.90-ld.so-madvise.diff -Patch18: glibc-2.3.3-amd64-s_ceil.diff -Patch19: glibc-2.4.90-mdns-resolver.diff +Patch5: crypt_blowfish-1.0.diff +Patch6: crypt_blowfish-glibc-2.3.diff +Patch7: glibc-version.diff +Patch8: glibc-2.4.90-revert-only-euro.diff +Patch9: glibc-2.3-regcomp.diff +Patch10: glibc-2.3.2-revert_tcsetattr.diff +Patch11: glibc-2.3.1.localedef.diff +Patch12: glibc-2.3.2.no_archive.diff +Patch13: glibc-2.3.3-amd64-string.diff +Patch14: libm-x86-64.diff.bz2 +Patch15: glibc-2.3.90-bindresvport.blacklist.diff +Patch16: glibc-suse-note.diff +Patch17: glibc-2.4.90-no_NO.diff +Patch18: glibc-2.3.90-ld.so-madvise.diff +Patch19: glibc-2.3.3-amd64-s_ceil.diff Patch20: glibc-2.3.3-execstack.diff Patch21: glibc-2.4-china.diff Patch22: glibc-2.3.4-gb18030-big5hkscs.diff.bz2 @@ -119,37 +120,27 @@ Patch24: glibc-2.3.3-nscd-db-path.diff Patch25: glibc-2.3.5-nscd-zeronegtimeout.diff Patch26: glibc-2.3.90-langpackdir.diff Patch27: glibc-nptl-2.4-nofixsyscallnr.diff -Patch28: crypt_blowfish-1.0.diff Patch29: glibc-2.5-ppc-llrintl.diff Patch30: glibc-2.6-configure.diff Patch31: glibc-2.2-sunrpc.diff Patch32: glibc-2.8-getconf.diff -Patch33: glibc-2.8-dlosinfo.diff -Patch34: getaddrinfo-ipv6-sanity.diff -Patch35: glibc-2.8-revert-nscleanup.diff -Patch36: ppc-atomic.diff -Patch37: glibc-2.8-clone.diff -Patch38: glibc-nss-deepbind.diff -Patch39: glibc-fix-nscd.diff -Patch40: glibc-compiled-binaries.diff -Patch41: glibc-selinux.diff -Patch42: glibc-getgroups-fortify.diff -Patch43: missing-include-build-fix.diff -Patch44: glibc-no-unwind-tables.diff -Patch45: glibc-2.10-nscd-meminflight.diff -Patch46: glibc-2.10-nscd-prunerace.diff -Patch47: glibc-2.10-locale-tuesday.diff -Patch48: glibc-2.10-nis-hosts.diff -Patch49: glibc-2.10-unsetenv.diff -Patch50: glibc-2.10-dns-fixpack.diff -Patch51: glibc-2.10-dns-no-gethostbyname4.diff -Patch52: glibc-2.10-ppc32-setcontext-fp.diff -Patch53: glibc-2.10-nscd-gc-dataofs.diff -Patch54: glibc-2.10-nscd-nostack.diff -Patch55: glibc-cpusetsize.diff -Patch56: glibc-ldscript.diff -Patch57: glibc-mtfsf.diff -Patch58: glibc-2.9-fortify.diff +Patch33: getaddrinfo-ipv6-sanity.diff +Patch34: glibc-2.8-revert-nscleanup.diff +Patch35: ppc-atomic.diff +Patch36: glibc-2.8-clone.diff +Patch37: glibc-nss-deepbind.diff +Patch38: glibc-nscd-prune-ret.diff +Patch39: glibc-compiled-binaries.diff +Patch40: glibc-selinux.diff +Patch41: glibc-check-native-missing-include.diff +Patch42: glibc-no-unwind-tables.diff +Patch43: glibc-2.10-nscd-nostack.diff +Patch44: glibc-cpusetsize.diff +Patch45: glibc-nis-splitgroups.diff +Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff +Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff +Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff +Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff %description The GNU C Library provides the most important standard libraries used @@ -295,13 +286,20 @@ versions of your software. %prep -%setup -n glibc-%{version} -q -a 1 -a 3 -a 4 -a 14 +%ifarch %arm armv5tel armv7l +# add glibc-ports for arm +%setup -n glibc-%{version} -q -a 2 -a 3 -a 4 -a 14 +%else +# any other leave out ports +%setup -n glibc-%{version} -q -a 3 -a 4 -a 14 +%endif %patch # libNoVersion part is only active on ix86 %patch1 %patch2 %patch3 %patch4 +%patch5 %patch6 %patch7 %patch8 @@ -309,18 +307,15 @@ versions of your software. %patch10 %patch11 %patch12 -# strncmp is broken, let's delete it for now this way -rm sysdeps/x86_64/strncmp.S -%patch13 -E +%patch13 +%patch14 -E # We have s_sincos.c in patch13, remove duplicate rm sysdeps/x86_64/fpu/s_sincos.S -%patch14 %patch15 %patch16 %patch17 %patch18 -#We have nss-mdns, why should we need this patch? -#%patch19 +%patch19 %patch20 %patch21 %patch22 @@ -329,7 +324,6 @@ rm sysdeps/x86_64/fpu/s_sincos.S %patch25 %patch26 %patch27 -%patch28 %patch29 %patch30 %patch31 @@ -347,20 +341,12 @@ rm sysdeps/x86_64/fpu/s_sincos.S %patch43 %patch44 %patch45 -%patch46 -%patch47 -%patch48 -%patch49 -%patch50 -%patch51 -%patch52 -%patch53 -%patch54 -%patch55 -%patch56 -%patch57 -%patch58 -%patch5 +%ifarch %arm armv5tel armv7l +%patch500 +%patch501 +%patch502 +%patch503 +%endif # # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed! # @@ -446,6 +432,12 @@ BuildFlags="$BuildFlags -DNDEBUG=1" %ifarch %ix86 add_ons=$add_ons,noversion %endif +%ifarch %arm armv5tel armv7l +add_ons=$add_ons,ports +BuildFlags="-march=armv5te -O2 -Wall" +# fails to build otherwise - need to recheck and fix +%define enable_stackguard_randomization 0 +%endif configure_and_build_glibc() { local cflags="$1" local addons="$2" @@ -458,7 +450,11 @@ configure_and_build_glibc() { %if %{enable_stackguard_randomization} --enable-stackguard-randomization \ %endif +%ifarch %arm armv5tel armv7l + --build=%{_target_cpu}-suse-linux-gnueabi \ +%else --build=%{_target_cpu}-suse-linux \ +%endif --with-tls --with-__thread --enable-kernel=2.6.4 make $PARALLEL } @@ -844,11 +840,15 @@ exit 0 %ifarch x86_64 /%{_lib}/ld-linux-x86-64.so.2 %else +%ifarch %arm armv5tel armv7l +/%{_lib}/ld-linux.so.3 +%else /%{_lib}/ld-linux.so.2 %endif %endif %endif %endif +%endif /%{_lib}/libBrokenLocale-%{version}.so /%{_lib}/libBrokenLocale.so.1 /%{_lib}/libSegFault.so @@ -1058,6 +1058,72 @@ exit 0 %{_libdir}/libdl_p.a %changelog +* Fri May 22 2009 pbaudis@suse.cz +- Update to glibc-2.10.1-e38af591a8 of glibc/pb-stable.git glibc-2.10-branch + maintained by me at repo.or.cz; contains backports of various bugfixes. + (Still the same source is used for glibc-ports.) +- Stop using separate tarball for nptl. +* Fri May 15 2009 pbaudis@suse.cz +- Add support for multiple group records for a single group + when using nss_compat (configurable in /etc/default/nss) [bnc#480991] +* Sun May 10 2009 pbaudis@suse.cz +- Update to 2009051021, glibc-2.10.1: + * Add missing cacheinfo entry for a recent Intel processor + * Fix ABI issue with the gshadow interface +* Sun May 10 2009 pbaudis@suse.cz +- Upgrade to CVS HEAD as of 2009051010 - glibc-2.10: + * DNS IPv4-IPv6 lookup changed back to parallel version; with broken DNS + servers (the case e.g. for many ADSL users), you may experience long + timeouts, once for each process (but eventually your request will be + resolved) - the solution is to run nscd (default on SUSE) and/or + put 'options single-request' in /etc/resolv.conf. + * New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info + Implemented by Ulrich Drepper. + * New Linux interfaces: accept4, fallocate, fallocate64. + Implemented by Ulrich Drepper. + * Correct declarations of string function when used in C++ code. This + could lead to compile errors for invalid C++ code. + * XPG7/POSIX 2008 compilation environment. Many GNU-specific functions are + now in POSIX. + * New POSIX 2008 interface: psiginfo + Implemented by Ulrich Drepper. + * New ISO C++1x interfaces: quick_exit, at_quick_exit + Implemented by Ulrich Drepper. + * Support for selecting between multiple function definitions at runtime + using STT_GNU_IFUNC symbols. Implemented by Ulrich Drepper. + * The libcrypt library can now use the hash function implementations in + NSS. Implemented by Ulrich Drepper. + * The malloc implementation can be compiled to be less memory efficient + but higher performing in multi-threaded programs. + Implemented by Ulrich Drepper. + * New locales: nan_TW@latin, ks_IN + * Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64. + Implemented by Ulrich Drepper. + * Extended printf hook support. It is possible to use user-defined types + and extend existing format specifiers. + Implemented by Ulrich Drepper. + * Handling for group shadow files has been added. + Implemented by Ulrich Drepper. +- Retired: + glibc-2.10-dns-fixpack.diff + glibc-2.10-dns-no-gethostbyname4.diff + glibc-2.10-locale-tuesday.diff + glibc-2.10-nscd-gc-dataofs.diff + glibc-2.10-nscd-prunerace.diff + glibc-2.10-ppc32-setcontext-fp.diff + glibc-2.10-unsetenv.diff + glibc-2.4.90-mdns-resolver.diff + glibc-2.9-fortify.diff + glibc-getgroups-fortify.diff + glibc-ldscript.diff + glibc-mtfsf.diff + glibc-2.10-nscd-meminflight.diff + getaddrinfo-ipv6-sanity.diff + glibc-2.10-nis-hosts.diff +- Several other modified +* Fri Apr 17 2009 pbaudis@suse.cz +- Fix defaulting to localhost in case of no nameserver entries + in /etc/resolv.conf [bnc#473308] * Mon Mar 23 2009 rguenther@suse.de - Add missing libc_hidden_builtin_def (memcmp) to glibc-2.3.3-amd64-string.diff. Fixes build with GCC 4.4. @@ -1127,7 +1193,7 @@ exit 0 - Update to trunk from 20081013, no longer export paccept, obsoletes some patches (lowlevellock and res_send). Fix overflow in nscd patch. -* Sun Oct 12 2008 dmueller@suse.de +* Mon Oct 13 2008 dmueller@suse.de - also strip .comment.SUSE.OPTs from the static libs - add missing-include-build-fix.diff * Tue Oct 07 2008 schwab@suse.de @@ -1522,7 +1588,7 @@ exit 0 - Fix asm-s390/setup.h for userspace inclusion - nsswitch.conf: Add nis to netgroup and automount entry - Fix sys/procfs.h for ppc64 -* Mon Jan 09 2006 kukuk@suse.de +* Tue Jan 10 2006 kukuk@suse.de - Update to current CVS (fix for pthread.h with -std=c99) - Define PAGE_SIZE on POWER - Don't include linux/sched.h in asm-power/elf.h @@ -1749,7 +1815,7 @@ exit 0 - Include own copy of texi2html - Add glibc_pst_upgrade program (based on version from FC3) - Update to current CVS -* Thu Jan 27 2005 kukuk@suse.de +* Fri Jan 28 2005 kukuk@suse.de - Re-add patch for timezone/zic.c (got lost with last merge) * Wed Jan 26 2005 kukuk@suse.de - Update timezone data to 2005c release (fixes zdump crash on @@ -1845,7 +1911,7 @@ exit 0 - Update to CVS: Fix nscd crash if one service is disabled - glob.h: Add workaround for invalid prototypes - nss_compat: Check that buffer is larger than 0 bytes -* Fri Sep 10 2004 kukuk@suse.de +* Sat Sep 11 2004 kukuk@suse.de - Update to CVS: Fix cdefs.h for C++ usage * Fri Sep 10 2004 kukuk@suse.de - Add lwres to hosts search order in nsswitch.conf @@ -1863,7 +1929,7 @@ exit 0 - Update to current CVS: - Use CVS version for last fix. - Add malloc sanity checks for double free. -* Fri Aug 20 2004 schwab@suse.de +* Sat Aug 21 2004 schwab@suse.de - Fix cancellable syscalls in librt w/ linuxthreads. * Fri Aug 20 2004 kukuk@suse.de - Update to current CVS [#43993] @@ -1941,19 +2007,19 @@ exit 0 * Thu Apr 15 2004 kukuk@suse.de - Add /etc/ld.so.conf.d/*.conf to /etc/ld.so.conf - Disable FUTEX_REQUEUE support in NPTL library [Bug #38882] -* Wed Apr 14 2004 schwab@suse.de +* Thu Apr 15 2004 schwab@suse.de - Remove /usr/i386-linux from ld.so.conf, * Wed Apr 14 2004 kukuk@suse.de - Fix linux/compiler.h for glibc inclusion - Really fix ffsl on s390x -* Fri Apr 09 2004 schwab@suse.de +* Sat Apr 10 2004 schwab@suse.de - Fix syntax error in memcmp. * Fri Apr 09 2004 kukuk@suse.de - Update from CVS: linuxthread debug fixes - Fix INLINE_SYSCALL on x86-64 and ia64 (fixes #38399) - Fix ffsl weak alias on s390x - Update to 2.6.5 kernel headers -* Wed Apr 07 2004 meissner@suse.de +* Thu Apr 08 2004 meissner@suse.de - forward umount to umount2 on ppc64 because umount syscall does not exist * Mon Apr 05 2004 kukuk@suse.de @@ -2476,7 +2542,7 @@ exit 0 - Update to current cvs snapshot * Fri Jan 03 2003 bg@suse.de - removed obsolete patch for hppa -* Fri Dec 20 2002 kukuk@suse.de +* Sat Dec 21 2002 kukuk@suse.de - Update to current cvs snapshot - Obsoletes glibc-2.3-setjmp-ppc64.diff - Obsoletes build-alpha.diff @@ -3053,7 +3119,7 @@ exit 0 - strip gconv modules * Fri Nov 24 2000 kukuk@suse.de - Fix typo in spec file -* Thu Nov 23 2000 kukuk@suse.de +* Fri Nov 24 2000 kukuk@suse.de - Add hack for POWER3 * Wed Nov 22 2000 kukuk@suse.de - Add strncat bugfix for S/390 @@ -3365,7 +3431,7 @@ exit 0 - don't use lx_hack for build * Tue Mar 16 1999 ro@suse.de - libc.texinfo: changed to build with stable texinfo version -* Mon Mar 15 1999 ro@suse.de +* Tue Mar 16 1999 ro@suse.de - update to 2.1.1 (cvs of Mar 15 1999) - update nssv1 to 2.0.2 * Sat Feb 20 1999 ro@suse.de @@ -3390,7 +3456,7 @@ exit 0 * Wed Sep 02 1998 ro@suse.de - build for 586 since egcs generates code for 686 that does NOT run on 586 !!! (eg strtok) -* Fri Aug 21 1998 ro@suse.de +* Sat Aug 22 1998 ro@suse.de - updated to cvs-version 20.8.98 added gettext as neededforbuild (so configure shuts up) glibc-linuxthreads is contained in main archive now