packages: glibc/glibc-git.patch, glibc/glibc.spec - rel 9; fixes from git (...
arekm
arekm at pld-linux.org
Thu Jun 23 12:52:08 CEST 2011
Author: arekm Date: Thu Jun 23 10:52:08 2011 GMT
Module: packages Tag: HEAD
---- Log message:
- rel 9; fixes from git (first our 2.14 candidate for pld-main repo)
---- Files affected:
packages/glibc:
glibc-git.patch (1.5 -> 1.6) , glibc.spec (1.917 -> 1.918)
---- Diffs:
================================================================
Index: packages/glibc/glibc-git.patch
diff -u packages/glibc/glibc-git.patch:1.5 packages/glibc/glibc-git.patch:1.6
--- packages/glibc/glibc-git.patch:1.5 Mon Jun 13 22:23:05 2011
+++ packages/glibc/glibc-git.patch Thu Jun 23 12:52:02 2011
@@ -4,19 +4,6 @@
Don't free non-malloced memory and fix memory leak
-diff --git a/ChangeLog b/ChangeLog
-index 3a6abda..eee3d1b 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,8 @@
-+2011-05-31 Andreas Schwab <schwab at redhat.com>
-+
-+ * nscd/nscd_getserv_r.c (nscd_getserv_r): Don't free non-malloced
-+ memory. Use alloca_account. Fix memory leak when retrying.
-+
- 2011-05-31 Ulrich Drepper <drepper at gmail.com>
-
- * version.h (RELEASE): Bump for 2.14 release.
diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c
index de96a57..f9ef056 100644
--- a/nscd/nscd_getserv_r.c
@@ -71,19 +58,6 @@
Fix typo in stack guard setup code for old kernels
-diff --git a/ChangeLog b/ChangeLog
-index eee3d1b..2aca74a 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,8 @@
-+2011-05-31 Ulrich Drepper <drepper at gmail.com>
-+
-+ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): Fix
-+ typo.
-+
- 2011-05-31 Andreas Schwab <schwab at redhat.com>
-
- * nscd/nscd_getserv_r.c (nscd_getserv_r): Don't free non-malloced
diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h
index eb7fedc..28fce4f 100644
--- a/sysdeps/unix/sysv/linux/dl-osinfo.h
@@ -115,3 +89,432 @@
tmpbuf = alloca_account (tmpbuflen, alloca_used);
else
{
+commit 3d29045b5e8329d97693eda8d98f1d1e60b99c8f
+Author: H.J. Lu <hongjiu.lu at intel.com>
+Date: Fri Jun 3 07:01:25 2011 -0400
+
+ Assume Intel Core i3/i5/i7 processor if AVX is available
+
+diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c
+index 34ec2df..809d105 100644
+--- a/sysdeps/x86_64/multiarch/init-arch.c
++++ b/sysdeps/x86_64/multiarch/init-arch.c
+@@ -74,6 +74,7 @@ __init_cpu_features (void)
+ }
+ else if (family == 0x06)
+ {
++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
+ model += extended_model;
+ switch (model)
+ {
+@@ -83,6 +84,12 @@ __init_cpu_features (void)
+ __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF;
+ break;
+
++ default:
++ /* Unknown family 0x06 processors. Assuming this is one
++ of Core i3/i5/i7 processors if AVX is available. */
++ if ((ecx & bit_AVX) == 0)
++ break;
++
+ case 0x1a:
+ case 0x1e:
+ case 0x1f:
+commit c71ca1f89c6e89d8c4145e4c2fdcce2fc78812bd
+Author: Andreas Jaeger <aj at suse.de>
+Date: Tue Jun 14 13:11:39 2011 -0700
+
+ Quash two memset undeclared warnings.
+
+diff --git a/nptl/pthread_rwlock_init.c b/nptl/pthread_rwlock_init.c
+index c0aa194..9ecd48c 100644
+--- a/nptl/pthread_rwlock_init.c
++++ b/nptl/pthread_rwlock_init.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
++/* Copyright (C) 2002,2007,2009,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper at redhat.com>, 2002.
+
+@@ -18,6 +18,7 @@
+ 02111-1307 USA. */
+
+ #include "pthreadP.h"
++#include <string.h>
+ #include <kernel-features.h>
+
+
+diff --git a/sysdeps/unix/sysv/linux/check_native.c b/sysdeps/unix/sysv/linux/check_native.c
+index 6e6624a..dedce34 100644
+--- a/sysdeps/unix/sysv/linux/check_native.c
++++ b/sysdeps/unix/sysv/linux/check_native.c
+@@ -1,5 +1,5 @@
+ /* Determine whether interfaces use native transport. Linux version.
+- Copyright (C) 2007 Free Software Foundation, Inc.
++ Copyright (C) 2007,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,6 +23,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <time.h>
+ #include <unistd.h>
+ #include <net/if.h>
+commit c5e3c2ae59cc8c5d3ad5e1adfd099c726baad862
+Author: Ulrich Drepper <drepper at gmail.com>
+Date: Tue Jun 21 13:06:42 2011 -0400
+
+ Minor optimization of getaddrinfo after recent patch
+
+diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
+index 469abe2..d68ac83 100644
+--- a/sysdeps/posix/getaddrinfo.c
++++ b/sysdeps/posix/getaddrinfo.c
+@@ -565,7 +565,6 @@ gaih_inet (const char *name, const struct gaih_service *service,
+ IPv6 scope ids. */
+ if (req->ai_family == AF_INET)
+ {
+- int family = req->ai_family;
+ size_t tmpbuflen = 512;
+ assert (tmpbuf == NULL);
+ tmpbuf = alloca_account (tmpbuflen, alloca_used);
+@@ -576,7 +575,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
+
+ while (1)
+ {
+- rc = __gethostbyname2_r (name, family, &th, tmpbuf,
++ rc = __gethostbyname2_r (name, AF_INET, &th, tmpbuf,
+ tmpbuflen, &h, &herrno);
+ if (rc != ERANGE || herrno != NETDB_INTERNAL)
+ break;
+@@ -638,18 +637,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
+ (*pat)->scopeid = 0;
+ }
+ (*pat)->next = NULL;
+- (*pat)->family = req->ai_family;
+- if (family == req->ai_family)
+- memcpy ((*pat)->addr, h->h_addr_list[i],
+- h->h_length);
+- else
+- {
+- uint32_t *addr = (uint32_t *) (*pat)->addr;
+- addr[3] = *(uint32_t *) h->h_addr_list[i];
+- addr[2] = htonl (0xffff);
+- addr[1] = 0;
+- addr[0] = 0;
+- }
++ (*pat)->family = AF_INET;
++ memcpy ((*pat)->addr, h->h_addr_list[i],
++ h->h_length);
+ pat = &((*pat)->next);
+ }
+ }
+commit c0244a9dedce43a4b950d91451b16a7cf5408476
+Author: Ulrich Drepper <drepper at gmail.com>
+Date: Tue Jun 21 17:03:38 2011 -0400
+
+ Fix IPv6-only lookups through getaddrinfo
+
+ A recent patch introduced a problem where IPv6 lookups happily returned
+ IPv4 addresses.
+
+diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
+index d68ac83..3a2737e 100644
+--- a/sysdeps/posix/getaddrinfo.c
++++ b/sysdeps/posix/getaddrinfo.c
+@@ -871,16 +871,44 @@ gaih_inet (const char *name, const struct gaih_service *service,
+ }
+ }
+
+- no_inet6_data = no_data;
+-
+ if (status == NSS_STATUS_SUCCESS)
+ {
++ assert (!no_data);
++ no_data = 1;
++
+ if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL)
+ canon = (*pat)->name;
+
+ while (*pat != NULL)
+- pat = &((*pat)->next);
++ {
++ if ((*pat)->family == AF_INET
++ && req->ai_family == AF_INET6
++ && (req->ai_flags & AI_V4MAPPED) != 0)
++ {
++ uint32_t *pataddr = (*pat)->addr;
++ (*pat)->family = AF_INET6;
++ pataddr[3] = pataddr[0];
++ pataddr[2] = htonl (0xffff);
++ pataddr[1] = 0;
++ pataddr[0] = 0;
++ pat = &((*pat)->next);
++ no_data = 0;
++ }
++ else if ((*pat)->family == AF_UNSPEC
++ || (*pat)->family == req->ai_family)
++ {
++ pat = &((*pat)->next);
++
++ no_data = 0;
++ if (req->ai_family == AF_INET6)
++ got_ipv6 = true;
++ }
++ else
++ *pat = ((*pat)->next);
++ }
+ }
++
++ no_inet6_data = no_data;
+ }
+ else
+ {
+commit 6e502e19455c6110dd4487d91b7b7d6d8121f9ba
+Author: Ulrich Drepper <drepper at gmail.com>
+Date: Wed Jun 22 08:32:55 2011 -0400
+
+ Clean up after kernel sigcontext header mess
+
+diff --git a/sysdeps/unix/sysv/linux/bits/sigcontext.h b/sysdeps/unix/sysv/linux/bits/sigcontext.h
+index 67dcf94..0f5b607 100644
+--- a/sysdeps/unix/sysv/linux/bits/sigcontext.h
++++ b/sysdeps/unix/sysv/linux/bits/sigcontext.h
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,4 +26,8 @@
+ # define sigcontext_struct sigcontext
+
+ # include <asm/sigcontext.h>
++
++/* The Linux kernel headers redefine NULL wrongly, so cleanup afterwards. */
++# define __need_NULL
++# include <stddef.h>
+ #endif
+commit 852eb34d5c56bc75bdd82327fcf310d98655f6b0
+Author: Ulrich Drepper <drepper at gmail.com>
+Date: Wed Jun 22 09:50:39 2011 -0400
+
+ Rate limit expensive _SC_NPROCESSORS_ONLN computation
+
+diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
+index af454b6..a13b6e3 100644
+--- a/sysdeps/unix/sysv/linux/getsysstats.c
++++ b/sysdeps/unix/sysv/linux/getsysstats.c
+@@ -1,5 +1,5 @@
+ /* Determine various system internal values, Linux version.
+- Copyright (C) 1996-2003,2006,2007,2009,2010 Free Software Foundation, Inc.
++ Copyright (C) 1996-2003,2006,2007,2009,2010,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper at cygnus.com>, 1996.
+
+@@ -35,6 +35,16 @@
+
+ #include <atomic.h>
+ #include <not-cancel.h>
++#include <kernel-features.h>
++
++#ifndef HAVE_CLOCK_GETTIME_VSYSCALL
++# undef INTERNAL_VSYSCALL
++# define INTERNAL_VSYSCALL INTERNAL_SYSCALL
++# undef INLINE_VSYSCALL
++# define INLINE_VSYSCALL INLINE_SYSCALL
++#else
++# include <bits/libc-vdso.h>
++#endif
+
+
+ /* How we can determine the number of available processors depends on
+@@ -128,6 +138,22 @@ next_line (int fd, char *const buffer, char **cp, char **re,
+ int
+ __get_nprocs ()
+ {
++ static int cached_result;
++ static time_t timestamp;
++
++#ifdef __ASSUME_POSIX_TIMERS
++ struct timespec ts;
++ INTERNAL_SYSCALL_DECL (err);
++ INTERNAL_VSYSCALL (clock_gettime, err, 2, CLOCK_REALTIME, &ts);
++#else
++ struct timeval ts;
++ gettimeofday (&ts, NULL);
++#endif
++ time_t prev = timestamp;
++ atomic_read_barrier ();
++ if (ts.tv_sec == prev)
++ return cached_result;
++
+ /* XXX Here will come a test for the new system call. */
+
+ const size_t buffer_size = __libc_use_alloca (8192) ? 8192 : 512;
+@@ -169,6 +195,10 @@ __get_nprocs ()
+ }
+ }
+
++ cached_result = result;
++ atomic_write_barrier ();
++ timestamp = ts.tv_sec;
++
+ return result;
+ }
+ weak_alias (__get_nprocs, get_nprocs)
+commit 84e2a551a72c79b020694bb327e33b6d71b09b63
+Author: Ulrich Drepper <drepper at gmail.com>
+Date: Wed Jun 22 10:32:07 2011 -0400
+
+ Use a /sys/devices/system/cpu/online for _SC_NPROCESSORS_ONLN implementation
+
+diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
+index a13b6e3..b74774f 100644
+--- a/sysdeps/unix/sysv/linux/getsysstats.c
++++ b/sysdeps/unix/sysv/linux/getsysstats.c
+@@ -161,20 +161,65 @@ __get_nprocs ()
+ char *buffer_end = buffer + buffer_size;
+ char *cp = buffer_end;
+ char *re = buffer_end;
+- int result = 1;
+
+ #ifdef O_CLOEXEC
+ const int flags = O_RDONLY | O_CLOEXEC;
+ #else
+ const int flags = O_RDONLY;
+ #endif
++ int fd = open_not_cancel_2 ("/sys/devices/system/cpu/online", flags);
++ char *l;
++ int result = 0;
++ if (fd != -1)
++ {
++ l = next_line (fd, buffer, &cp, &re, buffer_end);
++ if (l != NULL)
++ do
++ {
++ char *endp;
++ unsigned long int n = strtoul (l, &endp, 10);
++ if (l == endp)
++ {
++ result = 0;
++ break;
++ }
++
++ unsigned long int m = n;
++ if (*endp == '-')
++ {
++ l = endp + 1;
++ m = strtoul (l, &endp, 10);
++ if (l == endp)
++ {
++ result = 0;
++ break;
++ }
++ }
++
++ result += m - n + 1;
++
++ l = endp;
++ while (l < re && isspace (*l))
++ ++l;
++ }
++ while (l < re);
++
++ close_not_cancel_no_status (fd);
++
++ if (result > 0)
++ goto out;
++ }
++
++ cp = buffer_end;
++ re = buffer_end;
++ result = 1;
++
+ /* The /proc/stat format is more uniform, use it by default. */
+- int fd = open_not_cancel_2 ("/proc/stat", flags);
++ fd = open_not_cancel_2 ("/proc/stat", flags);
+ if (fd != -1)
+ {
+ result = 0;
+
+- char *l;
+ while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL)
+ /* The current format of /proc/stat has all the cpu* entries
+ at the front. We assume here that stays this way. */
+@@ -195,6 +240,7 @@ __get_nprocs ()
+ }
+ }
+
++ out:
+ cached_result = result;
+ atomic_write_barrier ();
+ timestamp = ts.tv_sec;
+commit e12df166d37522c2ed434c2d70a1b04640d2d7c6
+Author: Andreas Schwab <schwab at redhat.com>
+Date: Wed Jun 22 14:35:49 2011 -0400
+
+ Fix Ipv4&IPv6 lookup in getaddrinfo
+
+ Problem introduced in the last patch.
+
+diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
+index 3a2737e..14e9270 100644
+--- a/sysdeps/posix/getaddrinfo.c
++++ b/sysdeps/posix/getaddrinfo.c
+@@ -894,7 +894,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
+ pat = &((*pat)->next);
+ no_data = 0;
+ }
+- else if ((*pat)->family == AF_UNSPEC
++ else if (req->ai_family == AF_UNSPEC
+ || (*pat)->family == req->ai_family)
+ {
+ pat = &((*pat)->next);
+commit fa3fc0fe5f452d0aa7e435d8f32e992958683819
+Author: Ulrich Drepper <drepper at gmail.com>
+Date: Wed Jun 22 15:00:54 2011 -0400
+
+ Avoid __check_pf calls in getaddrinfo unless really needed
+
+diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
+index 14e9270..05c883d 100644
+--- a/sysdeps/posix/getaddrinfo.c
++++ b/sysdeps/posix/getaddrinfo.c
+@@ -2352,14 +2352,17 @@ getaddrinfo (const char *name, const char *service,
+ size_t in6ailen = 0;
+ bool seen_ipv4 = false;
+ bool seen_ipv6 = false;
+- /* We might need information about what interfaces are available.
+- Also determine whether we have IPv4 or IPv6 interfaces or both. We
+- cannot cache the results since new interfaces could be added at
+- any time. */
+- __check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
++ bool check_pf_called = false;
+
+ if (hints->ai_flags & AI_ADDRCONFIG)
+ {
++ /* We might need information about what interfaces are available.
++ Also determine whether we have IPv4 or IPv6 interfaces or both. We
++ cannot cache the results since new interfaces could be added at
++ any time. */
++ __check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
++ check_pf_called = true;
++
+ /* Now make a decision on what we return, if anything. */
+ if (hints->ai_family == PF_UNSPEC && (seen_ipv4 || seen_ipv6))
+ {
+@@ -2441,6 +2444,10 @@ getaddrinfo (const char *name, const char *service,
+ struct addrinfo *last = NULL;
+ char *canonname = NULL;
+
++ /* Now we definitely need the interface information. */
++ if (! check_pf_called)
++ __check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
++
+ /* If we have information about deprecated and temporary addresses
+ sort the array now. */
+ if (in6ai != NULL)
================================================================
Index: packages/glibc/glibc.spec
diff -u packages/glibc/glibc.spec:1.917 packages/glibc/glibc.spec:1.918
--- packages/glibc/glibc.spec:1.917 Sun Jun 12 11:50:34 2011
+++ packages/glibc/glibc.spec Thu Jun 23 12:52:02 2011
@@ -34,7 +34,7 @@
Summary(uk.UTF-8): GNU libc версії
Name: glibc
Version: 2.14
-Release: 8
+Release: 9
Epoch: 6
License: LGPL v2.1+
Group: Libraries
@@ -1758,6 +1758,9 @@
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log$
+Revision 1.918 2011/06/23 10:52:02 arekm
+- rel 9; fixes from git (first our 2.14 candidate for pld-main repo)
+
Revision 1.917 2011/06/12 09:50:34 qboosh
- release 8
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/glibc/glibc-git.patch?r1=1.5&r2=1.6&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/glibc/glibc.spec?r1=1.917&r2=1.918&f=u
More information about the pld-cvs-commit
mailing list