Author: aurel32 Date: 2007-10-28 19:40:34 +0000 (Sun, 28 Oct 2007) New Revision: 2630
Modified: glibc-package/branches/glibc-2.7/debian/patches/hurd-i386/submitted-libc_once.diff glibc-package/branches/glibc-2.7/debian/patches/series Log: Fix hurd-i386/submitted-libc_once.diff Modified: glibc-package/branches/glibc-2.7/debian/patches/hurd-i386/submitted-libc_once.diff =================================================================== --- glibc-package/branches/glibc-2.7/debian/patches/hurd-i386/submitted-libc_once.diff 2007-10-28 19:16:46 UTC (rev 2629) +++ glibc-package/branches/glibc-2.7/debian/patches/hurd-i386/submitted-libc_once.diff 2007-10-28 19:40:34 UTC (rev 2630) @@ -1,174 +1,70 @@ -http://savannah.gnu.org/bugs/?18217 -http://sourceware.org/bugzilla/show_bug.cgi?id=3748 +2007-10-28 Aurelien Jarno <[EMAIL PROTECTED]> - -2007-02-08 Aurelien Jarno <[EMAIL PROTECTED]> - - * linuxthreads/sysdeps/pthread/bits/libc-lock.h (__libc_once_else): New - definition. - -2006-12-18 Thomas Schwinge <[EMAIL PROTECTED]> - - * bits/libc-lock.h (__libc_once_else): New definiton. + * bits/libc-lock.h (__libc_once_get): New definiton. + * linuxthreads/sysdeps/pthread/bits/libc-lock.h: Likewise + * nptl/sysdeps/pthread/bits/libc-lock.h: Likewise. * sysdeps/mach/bits/libc-lock.h: Likewise. * sysdeps/mach/hurd/bits/libc-lock.h: Likewise. - * nptl/sysdeps/pthread/bits/libc-lock.h: Likewise. - * sysdeps/posix/getaddrinfo.c (getaddrinfo): Use __libc_once_else and a - new local function instead of using implementational details. + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Use __libc_once_get + instead of using implementational details. ---- sysdeps/posix/getaddrinfo.c.orig -+++ sysdeps/posix/getaddrinfo.c -@@ -1950,9 +1950,13 @@ - if (naddrs > 1) - { - /* Read the config file. */ -+ void _gaiconf_reload (void) -+ { -+ if (gaiconf_reload_flag) -+ gaiconf_reload (); -+ } - __libc_once_define (static, once); -- __typeof (once) old_once = once; -- __libc_once (once, gaiconf_init); -+ __libc_once_else (once, gaiconf_init, _gaiconf_reload); - /* Sort results according to RFC 3484. */ - struct sort_result results[nresults]; - struct addrinfo *q; --- bits/libc-lock.h.orig +++ bits/libc-lock.h -@@ -89,7 +89,7 @@ - /* Define once control variable. */ - #define __libc_once_define(CLASS, NAME) CLASS int NAME = 0 - --/* Call handler iff the first call. */ -+/* Call INIT_FUNCTION iff the first call. */ - #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \ - do { \ - if ((ONCE_CONTROL) == 0) { \ -@@ -98,6 +98,15 @@ +@@ -98,6 +98,9 @@ } \ } while (0) -+/* Call INIT_FUNCTION iff the first call. Otherwise call ELSE_FUNCTION. */ -+#define __libc_once_else(ONCE_CONTROL, INIT_FUNCTION, ELSE_FUNCTION) \ -+ do { \ -+ if ((ONCE_CONTROL) == 1) \ -+ (ELSE_FUNCTION) (); \ -+ else \ -+ __libc_once (ONCE_CONTROL, INIT_FUNCTION); \ -+ } while (0) -+ ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ ((ONCE_CONTROL) == 1) /* Start a critical region with a cleanup function */ #define __libc_cleanup_region_start(DOIT, FCT, ARG) \ ---- sysdeps/mach/bits/libc-lock.h.orig -+++ sysdeps/mach/bits/libc-lock.h -@@ -105,8 +105,7 @@ - #define __libc_once_define(CLASS,NAME) \ - CLASS struct __libc_once NAME = { MUTEX_INITIALIZER, 0 } - -- --/* Call handler iff the first call. */ -+/* Call INIT_FUNCTION iff the first call. */ - #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \ - do { \ - __libc_lock_lock (ONCE_CONTROL.lock); \ -@@ -116,6 +115,16 @@ - __libc_lock_unlock (ONCE_CONTROL.lock); \ +--- linuxthreads/sysdeps/pthread/bits/libc-lock.h.orig ++++ linuxthreads/sysdeps/pthread/bits/libc-lock.h +@@ -242,6 +242,9 @@ + } \ } while (0) -+/* Call INIT_FUNCTION iff the first call. Otherwise call ELSE_FUNCTION. */ -+#define __libc_once_else(ONCE_CONTROL, INIT_FUNCTION, ELSE_FUNCTION) \ -+ do { \ -+ if (ONCE_CONTROL.done == 1) \ -+ (ELSE_FUNCTION) (); \ -+ else \ -+ __libc_once (ONCE_CONTROL, INIT_FUNCTION); \ -+ } while (0) -+ -+ - #ifdef _LIBC - /* We need portable names for some functions. E.g., when they are - used as argument to __libc_cleanup_region_start. */ ---- sysdeps/mach/hurd/bits/libc-lock.h.orig -+++ sysdeps/mach/hurd/bits/libc-lock.h -@@ -175,7 +175,7 @@ - #define __libc_once_define(CLASS,NAME) \ - CLASS struct __libc_once NAME = { MUTEX_INITIALIZER, 0 } ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ ((ONCE_CONTROL) != PTHREAD_ONCE_INIT) --/* Call handler iff the first call. */ -+/* Call INIT_FUNCTION iff the first call. */ - #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \ - do { \ - __libc_lock_lock (ONCE_CONTROL.lock); \ -@@ -185,6 +185,16 @@ - __libc_lock_unlock (ONCE_CONTROL.lock); \ - } while (0) - -+/* Call INIT_FUNCTION iff the first call. Otherwise call ELSE_FUNCTION. */ -+#define __libc_once_else(ONCE_CONTROL, INIT_FUNCTION, ELSE_FUNCTION) \ -+ do { \ -+ if (ONCE_CONTROL.done == 1) \ -+ ELSE_FUNCTION (); \ -+ else \ -+ __libc_once (ONCE_CONTROL, INIT_FUNCTION); \ -+ } while (0) -+ -+ - #ifdef _LIBC - /* We need portable names for some functions. E.g., when they are - used as argument to __libc_cleanup_region_start. */ + /* Start critical region with cleanup. */ + #define __libc_cleanup_region_start(DOIT, FCT, ARG) \ --- nptl/sysdeps/pthread/bits/libc-lock.h.orig +++ nptl/sysdeps/pthread/bits/libc-lock.h -@@ -354,7 +354,7 @@ - CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT - #endif - --/* Call handler iff the first call. */ -+/* Call INIT_FUNCTION iff the first call. */ - #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \ - do { \ - if (PTFAVAIL (__pthread_once)) \ -@@ -366,6 +366,15 @@ +@@ -377,6 +377,9 @@ } \ } while (0) -+/* Call INIT_FUNCTION iff the first call. Otherwise call ELSE_FUNCTION. */ -+#define __libc_once_else(ONCE_CONTROL, INIT_FUNCTION, ELSE_FUNCTION) \ -+ do { \ -+ if ((ONCE_CONTROL) != PTHREAD_ONCE_INIT) \ -+ (ELSE_FUNCTION) (); \ -+ else \ -+ __libc_once (ONCE_CONTROL, INIT_FUNCTION); \ -+ } while (0) -+ ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ ((ONCE_CONTROL) != PTHREAD_ONCE_INIT) /* Note that for I/O cleanup handling we are using the old-style cancel handling. It does not have to be integrated with C++ snce ---- linuxthreads/sysdeps/pthread/bits/libc-lock.h.orig -+++ linuxthreads/sysdeps/pthread/bits/libc-lock.h -@@ -231,7 +231,7 @@ - CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT - #endif - --/* Call handler iff the first call. */ -+/* Call INIT_FUNCTION iff the first call. */ - #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \ - do { \ - if (__pthread_once != NULL) \ -@@ -242,6 +242,15 @@ - } \ +--- sysdeps/mach/hurd/bits/libc-lock.h.orig ++++ sysdeps/mach/hurd/bits/libc-lock.h +@@ -185,6 +185,10 @@ + __libc_lock_unlock (ONCE_CONTROL.lock); \ } while (0) -+/* Call INIT_FUNCTION iff the first call. Otherwise call ELSE_FUNCTION. */ -+#define __libc_once_else(ONCE_CONTROL, INIT_FUNCTION, ELSE_FUNCTION) \ -+ do { \ -+ if ((ONCE_CONTROL) != PTHREAD_ONCE_INIT) \ -+ (ELSE_FUNCTION) (); \ -+ else \ -+ __libc_once (ONCE_CONTROL, INIT_FUNCTION); \ -+ } while (0) ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ (!ONCE_CONTROL.done) + + #ifdef _LIBC + /* We need portable names for some functions. E.g., when they are + used as argument to __libc_cleanup_region_start. */ +--- sysdeps/posix/getaddrinfo.c.orig ++++ sysdeps/posix/getaddrinfo.c +@@ -2076,7 +2076,7 @@ + __libc_lock_define_initialized (static, lock); - /* Start critical region with cleanup. */ - #define __libc_cleanup_region_start(DOIT, FCT, ARG) \ + __libc_lock_lock (lock); +- if (old_once && gaiconf_reload_flag) ++ if (__libc_once_get(old_once) && gaiconf_reload_flag) + gaiconf_reload (); + qsort (results, nresults, sizeof (results[0]), rfc3484_sort); + __libc_lock_unlock (lock); Modified: glibc-package/branches/glibc-2.7/debian/patches/series =================================================================== --- glibc-package/branches/glibc-2.7/debian/patches/series 2007-10-28 19:16:46 UTC (rev 2629) +++ glibc-package/branches/glibc-2.7/debian/patches/series 2007-10-28 19:40:34 UTC (rev 2630) @@ -73,7 +73,7 @@ hurd-i386/local-mlock.diff hurd-i386/local-msg-nosignal.diff -p0 hurd-i386/local-tls.diff -# hurd-i386/local-tls-support.diff -p0 +hurd-i386/local-tls-support.diff -p0 hurd-i386/submitted-ioctl-decode-argument.diff -p0 hurd-i386/submitted-libc_once.diff -p0 hurd-i386/submitted-stat.diff -p0 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]