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  <[email protected]>
-+
-+      * 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  <[email protected]>
- 
-       * 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  <[email protected]>
-+
-+      * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): Fix
-+      typo.
-+
- 2011-05-31  Andreas Schwab  <[email protected]>
- 
-       * 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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>, 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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>, 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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>
+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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to