OBS User unknown 2009-05-27 10:39:38 +00:00 committed by Git OBS Bridge
parent 8bdfceb16b
commit 2c4ebaeca6
36 changed files with 530 additions and 1556 deletions

View File

@ -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 */

View File

@ -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 <ldsodefs.h>
#include <sysdep.h>
-#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__

View File

@ -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 <atomic.h>
#include <sysdep.h>
#include <kernel-features.h>
+#include <tls.h> /* Need THREAD_*, and header.*. */
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1

View File

@ -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))

View File

@ -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

View File

@ -1,169 +0,0 @@
2008-11-26 Ulrich Drepper <drepper@redhat.com>
* 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 <drepper@redhat.com>
* 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 <drepper@redhat.com>
* 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 <drepper@redhat.com>
* 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 <drepper@redhat.com>
* 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 <drepper@redhat.com>
* 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 <pasky@suse.cz>
* 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) {

View File

@ -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;
}
}

View File

@ -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 "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-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 "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME

View File

@ -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;

View File

@ -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;
}

View File

@ -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);

View File

@ -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;

View File

@ -1,29 +0,0 @@
20090108 Ryan S. Arnold <rsa@us.ibm.com>
* 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

View File

@ -1,69 +0,0 @@
2008-12-01 Ulrich Drepper <drepper@redhat.com>
* 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 <stdlib.h>
+
+static int
+do_test (void)
+{
+ clearenv ();
+ unsetenv ("FOO");
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:05810d4e4256a3be2582b0bfb9cda3332a4710beeb20fbe90c41c306c4b9ee48
size 15588510

View File

@ -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 <drepper@redhat.com>.
- Copyright (C) 2009 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@redhat.com>.
- 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 <sysdep.h>
-#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 $
+

View File

@ -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, &notfound, 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;

View File

@ -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 <stdlib.h>
#include <string.h>
+#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 <arpa/nameser.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
+#if defined(_LIBC) && defined(linux)
+#include <net/if.h>
+#endif
#include <errno.h>
#include <fcntl.h>
@@ -96,6 +99,8 @@
#include <string.h>
#include <unistd.h>
+#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,

View File

@ -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 <fcntl.h>
#include <kernel-features.h>
#include <dl-sysdep.h>
#include <stdint.h>

View File

@ -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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:adabcdd26bd71d7cb15bfc2fbb3efc29ad9d166a2a3f25bed097e14489264de8
size 15308055

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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)) \

View File

@ -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:

100
glibc-nis-splitgroups.diff Normal file
View File

@ -0,0 +1,100 @@
2009-04-19 Petr Baudis <pasky@suse.cz>
* 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 <bits/libc-lock.h>
#include <kernel-features.h>
+/* Get the declaration of the NSS flags. */
+#include <libnsl.h>
+
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");

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dfe11b1779ec269e02d4951c7364581ec5113ea3b17eed20341e5cf4cf57ff10
size 330166

12
glibc-nscd-prune-ret.diff Normal file
View File

@ -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.

View File

@ -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

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:efc4a2a614a97203c3c9847db37f40e52596776439b512b57f1606a12361b8f2
size 585531

View File

@ -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\

View File

@ -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

View File

@ -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