Author: sthibault
Date: 2013-06-11 02:26:23 +0000 (Tue, 11 Jun 2013)
New Revision: 5628

Added:
   glibc-package/trunk/debian/patches/hurd-i386/libpthread_ctypes.diff
   glibc-package/trunk/debian/patches/hurd-i386/submitted-handle-eprototype.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
   glibc-package/trunk/debian/patches/series.hurd-i386
Log:
* hurd-i386/libpthread_ctypes.diff: Fix ctypes initialization.
* hurd-i386/submitted-handle-eprototype.diff: Fix DNS lookups.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog        2013-06-08 22:10:51 UTC (rev 
5627)
+++ glibc-package/trunk/debian/changelog        2013-06-11 02:26:23 UTC (rev 
5628)
@@ -4,6 +4,10 @@
   * control.in/main, sysdeps/mips.mk, sysdeps/mipsel.mk: build the libc
     back with gcc-4.7, but using -mno-plt.
 
+  [ Samuel Thibault ]
+  * hurd-i386/libpthread_ctypes.diff: Fix ctypes initialization.
+  * hurd-i386/submitted-handle-eprototype.diff: Fix DNS lookups.
+
  -- Aurelien Jarno <aure...@debian.org>  Wed, 05 Jun 2013 09:46:30 +0200
 
 eglibc (2.17-5) unstable; urgency=low

Added: glibc-package/trunk/debian/patches/hurd-i386/libpthread_ctypes.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/libpthread_ctypes.diff         
                (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/libpthread_ctypes.diff 
2013-06-11 02:26:23 UTC (rev 5628)
@@ -0,0 +1,37 @@
+commit ff1ae3d79b2d103f211ad4c600e144ad448a98e6
+Author: Samuel Thibault <samuel.thiba...@ens-lyon.org>
+Date:   Tue Jun 11 03:57:44 2013 +0200
+
+    Initialize ctype
+    
+    * pthread/pt-create.c (entry_point) [IS_IN_libpthread]: Call __ctype_init.
+
+---
+ pt-create.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/libpthread/pthread/pt-create.c b/libpthread/pthread/pt-create.c
+index 25a3607..9ce0be8 100644
+--- a/libpthread/pthread/pt-create.c
++++ b/libpthread/pthread/pt-create.c
+@@ -26,6 +26,9 @@
+ 
+ #include <pt-internal.h>
+ 
++#ifdef IS_IN_libpthread
++# include <ctype.h>
++#endif
+ #ifdef HAVE_USELOCALE
+ # include <locale.h>
+ #endif
+@@ -44,6 +47,10 @@ entry_point (struct __pthread *self, void 
*(*start_routine)(void *), void *arg)
+ static void
+ entry_point (void *(*start_routine)(void *), void *arg)
+ {
++#ifdef IS_IN_libpthread
++  /* Initialize pointers to locale data.  */
++  __ctype_init ();
++#endif
+ #ifdef HAVE_USELOCALE
+   /* A fresh thread needs to be bound to the global locale.  */
+   uselocale (LC_GLOBAL_LOCALE);

Added: 
glibc-package/trunk/debian/patches/hurd-i386/submitted-handle-eprototype.diff
===================================================================
--- 
glibc-package/trunk/debian/patches/hurd-i386/submitted-handle-eprototype.diff   
                            (rev 0)
+++ 
glibc-package/trunk/debian/patches/hurd-i386/submitted-handle-eprototype.diff   
    2013-06-11 02:26:23 UTC (rev 5628)
@@ -0,0 +1,118 @@
+http://sourceware.org/ml/libc-alpha/2013-02/msg00092.html
+
+From: Pino Toscano <toscano dot pino at tiscali dot it>
+To: libc-alpha at sourceware dot org
+Subject: [PATCH] handle EPROTOTYPE for socket invocations with SOCK_* flags
+Date: Wed, 6 Feb 2013 20:48:18 +0100
+
+Hi,
+
+since glibc 2.16, Hurd's bits/socket.h provides SOCK_CLOEXEC and=20
+SOCK_NONBLOCK (which accept4 handles), but __ASSUME_SOCK_CLOEXEC is not=20
+defined since socket and socketpair do not handle them, yet.
+
+The snippets of fallback code that handle failures of invocation of=20
+socket with SOCK_CLOEXEC or SOCK_NONBLOCK seem to not correctly disable=20
+have_sock_cloexec/__have_sock_cloexec if errno is EPROTOTYPE, as=20
+returned when the socket type (like "SOCK_STREAM | SOCK_CLOEXEC" for=20
+socket with no handling of flags) is unknown.
+
+The attached patch handles EPROTOTYPE as if it was EINVAL, disabling=20
+have_sock_cloexec/__have_sock_cloexec if socket does not handle SOCK_*=20
+flags.
+
+(OTOH, it seems that there are few Linux archs -- like mips*, arm, hppa,=20
+m68k -- which don't have __ASSUME_SOCK_CLOEXEC enabled in their
+kernel-features.h at all: does it mean the Linux kernel really returns=20
+EINVAL for unknown values as socket types?)
+
+Thanks,
+=2D-=20
+Pino Toscano
+
+Handle EPROTOTYPE for socket invocations with SOCK_* flags
+
+If SOCK_CLOEXEC and SOCK_NONBLOCK are defined but not __ASSUME_SOCK_CLOEXEC,
+trying to use them as socket type in invocations of socket will return
+EPROTOTYPE if socket and socketpair do not handle those flags; EPROTOTYPE is
+not considered properly, behaving as if those flags were actually supported.
+
+Checking for the EPROTOTYPE errno in addition to EINVAL handles the situation.
+
+2013-02-06  Pino Toscano  <toscano.p...@tiscali.it>
+
+       * nscd/connections.c (nscd_init) [!defined __ASSUME_SOCK_CLOEXEC]:
+       Check for EPROTOTYPE in addition to EINVAL.
+       * nscd/nscd_helper.c (open_socket) [defined SOCK_CLOEXEC]
+       [!defined __ASSUME_SOCK_CLOEXEC]: Likewise.
+       * resolv/res_send.c (reopen) [!defined __ASSUME_SOCK_CLOEXEC]: Likewise.
+       * sunrpc/clnt_udp.c (__libc_clntudp_bufcreate) [defined SOCK_NONBLOCK]
+       [!defined __ASSUME_SOCK_CLOEXEC]: Likewise.
+       * misc/syslog.c (openlog_internal) [defined SOCK_CLOEXEC]
+       [!defined __ASSUME_SOCK_CLOEXEC]: Likewise.
+
+--- a/nscd/connections.c
++++ b/nscd/connections.c
+@@ -856,7 +856,7 @@ cannot set socket to close on exec: %s;
+       sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0);
+ #ifndef __ASSUME_SOCK_CLOEXEC
+       if (have_sock_cloexec == 0)
+-      have_sock_cloexec = sock != -1 || errno != EINVAL ? 1 : -1;
++      have_sock_cloexec = sock != -1 || (errno != EINVAL && errno != 
EPROTOTYPE) ? 1 : -1;
+ #endif
+     }
+ #ifndef __ASSUME_SOCK_CLOEXEC
+--- a/nscd/nscd_helper.c
++++ b/nscd/nscd_helper.c
+@@ -172,7 +172,7 @@ open_socket (request_type type, const ch
+       sock = __socket (PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 
0);
+ # ifndef __ASSUME_SOCK_CLOEXEC
+       if (__have_sock_cloexec == 0)
+-      __have_sock_cloexec = sock != -1 || errno != EINVAL ? 1 : -1;
++      __have_sock_cloexec = sock != -1 || (errno != EINVAL && errno != 
EPROTOTYPE) ? 1 : -1;
+ # endif
+     }
+ #endif
+--- a/resolv/res_send.c
++++ b/resolv/res_send.c
+@@ -925,7 +925,7 @@ reopen (res_state statp, int *terrno, in
+                               if (__have_o_nonblock == 0)
+                                       __have_o_nonblock
+                                         = (EXT(statp).nssocks[ns] == -1
+-                                           && errno == EINVAL ? -1 : 1);
++                                           && (errno == EINVAL || errno == 
EPROTOTYPE) ? -1 : 1);
+ #endif
+                       }
+                       if (__builtin_expect (__have_o_nonblock < 0, 0))
+@@ -943,7 +943,7 @@ reopen (res_state statp, int *terrno, in
+                               if (__have_o_nonblock == 0)
+                                       __have_o_nonblock
+                                         = (EXT(statp).nssocks[ns] == -1
+-                                           && errno == EINVAL ? -1 : 1);
++                                           && (errno == EINVAL || errno == 
EPROTOTYPE) ? -1 : 1);
+ #endif
+                       }
+                       if (__builtin_expect (__have_o_nonblock < 0, 0))
+--- a/sunrpc/clnt_udp.c
++++ b/sunrpc/clnt_udp.c
+@@ -179,7 +179,7 @@ __libc_clntudp_bufcreate (struct sockadd
+                            IPPROTO_UDP);
+ # ifndef __ASSUME_SOCK_CLOEXEC
+         if (__have_sock_cloexec == 0)
+-          __have_sock_cloexec = *sockp >= 0 || errno != EINVAL ? 1 : -1;
++          __have_sock_cloexec = *sockp >= 0 || (errno != EINVAL && errno != 
EPROTOTYPE) ? 1 : -1;
+ # endif
+       }
+ #endif
+--- a/misc/syslog.c
++++ b/misc/syslog.c
+@@ -357,7 +357,7 @@ openlog_internal(const char *ident, int
+                                       if (__have_sock_cloexec == 0)
+                                               __have_sock_cloexec
+                                                 = ((LogFile != -1
+-                                                    || errno != EINVAL)
++                                                    || (errno != EINVAL && 
errno != EPROTOTYPE))
+                                                    ? 1 : -1);
+                               }
+ # endif
+

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series   2013-06-08 22:10:51 UTC (rev 
5627)
+++ glibc-package/trunk/debian/patches/series   2013-06-11 02:26:23 UTC (rev 
5628)
@@ -122,6 +122,7 @@
 hurd-i386/tg-nice.diff
 hurd-i386/tg-exec-static.diff
 hurd-i386/tg-EIEIO-fr.diff
+hurd-i386/libpthread_ctypes.diff
 
 i386/local-biarch.diff
 i386/local-cmov.diff

Modified: glibc-package/trunk/debian/patches/series.hurd-i386
===================================================================
--- glibc-package/trunk/debian/patches/series.hurd-i386 2013-06-08 22:10:51 UTC 
(rev 5627)
+++ glibc-package/trunk/debian/patches/series.hurd-i386 2013-06-11 02:26:23 UTC 
(rev 5628)
@@ -10,3 +10,4 @@
 hurd-i386/tg-fcntl-internal.h.diff
 hurd-i386/tg-pagesize.diff
 hurd-i386/local-disable-tst-xmmymm.diff
+hurd-i386/submitted-handle-eprototype.diff


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1umehv-0007dx...@vasks.debian.org

Reply via email to