forked from pool/glibc
This commit is contained in:
parent
8bdfceb16b
commit
2c4ebaeca6
33
ARM_glibc-2.10.1-local-eabi-wchar.diff
Normal file
33
ARM_glibc-2.10.1-local-eabi-wchar.diff
Normal 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 */
|
43
ARM_glibc-2.10.1-local-hwcap-updates.diff
Normal file
43
ARM_glibc-2.10.1-local-hwcap-updates.diff
Normal 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__
|
||||
|
14
ARM_glibc-2.10.1-local-lowlevellock.diff
Normal file
14
ARM_glibc-2.10.1-local-lowlevellock.diff
Normal 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
|
19
ARM_glibc-2.10.1-local-no-hwcap.diff
Normal file
19
ARM_glibc-2.10.1-local-no-hwcap.diff
Normal 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))
|
@ -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
|
||||
|
@ -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) {
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
@ -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;
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
@ -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;
|
@ -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
|
@ -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"
|
3
glibc-2.10.1-e38af591a8.tar.bz2
Normal file
3
glibc-2.10.1-e38af591a8.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:05810d4e4256a3be2582b0bfb9cda3332a4710beeb20fbe90c41c306c4b9ee48
|
||||
size 15588510
|
@ -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 $
|
||||
+
|
||||
|
@ -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;
|
||||
|
@ -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,
|
@ -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>
|
@ -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
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:adabcdd26bd71d7cb15bfc2fbb3efc29ad9d166a2a3f25bed097e14489264de8
|
||||
size 15308055
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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);
|
@ -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)) \
|
159
glibc-mtfsf.diff
159
glibc-mtfsf.diff
@ -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
100
glibc-nis-splitgroups.diff
Normal 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");
|
@ -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
12
glibc-nscd-prune-ret.diff
Normal 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.
|
||||
|
@ -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
|
||||
|
||||
|
3
glibc-ports-2.10.1-2b2b217196.tar.bz2
Normal file
3
glibc-ports-2.10.1-2b2b217196.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:efc4a2a614a97203c3c9847db37f40e52596776439b512b57f1606a12361b8f2
|
||||
size 585531
|
@ -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\
|
||||
|
@ -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
|
||||
|
||||
|
230
glibc.spec
230
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
|
||||
|
Loading…
Reference in New Issue
Block a user