From: Jakub Jelinek Date: Tue, 20 Dec 2005 10:55:59 +0000 (+0000) Subject: Workaround for http://gcc.gnu.org/PR25240 X-Git-Tag: cvs/fedora-glibc-2_3_90-20~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24a640bf2a13a96aa3b582c13c767effcd946dbf;p=thirdparty%2Fglibc.git Workaround for http://gcc.gnu.org/PR25240 * include/libc-symbols.h (weak_extern): Define using weak attribute. (_weak_extern): Remove. (weak_tls_extern): Define. * locale/uselocale.c (DEFINE_CATEGORY): Use weak_tls_extern for _nl_current_##category. * locale/setlocale.c (DEFINE_CATEGORY): Likewise. --- diff --git a/ChangeLog b/ChangeLog index d409260f9e5..490da6a6227 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-12-20 Jakub Jelinek + + Workaround for http://gcc.gnu.org/PR25240 + * include/libc-symbols.h (weak_extern): Define using weak attribute. + (_weak_extern): Remove. + (weak_tls_extern): Define. + * locale/uselocale.c (DEFINE_CATEGORY): Use weak_tls_extern for + _nl_current_##category. + * locale/setlocale.c (DEFINE_CATEGORY): Likewise. + 2005-12-19 Ulrich Drepper [BZ #1955] diff --git a/include/libc-symbols.h b/include/libc-symbols.h index 8ee940719e0..f69bf8350dd 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -114,8 +114,8 @@ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ -# define weak_extern(symbol) _weak_extern (weak symbol) -# define _weak_extern(expr) _Pragma (#expr) +# define weak_extern(symbol) extern __typeof (symbol) symbol __attribute__ ((weak)); +# define weak_tls_extern(symbol) extern __thread __typeof (symbol) symbol __attribute__ ((weak)); # else diff --git a/locale/setlocale.c b/locale/setlocale.c index 50bf8e772f7..dc65d93b30a 100644 --- a/locale/setlocale.c +++ b/locale/setlocale.c @@ -39,7 +39,7 @@ # define DEFINE_CATEGORY(category, category_name, items, a) \ extern char _nl_current_##category##_used; \ weak_extern (_nl_current_##category##_used) \ - weak_extern (_nl_current_##category) + weak_tls_extern (_nl_current_##category) # include "categories.def" # undef DEFINE_CATEGORY diff --git a/locale/uselocale.c b/locale/uselocale.c index 4e63dabd8e7..671c519531c 100644 --- a/locale/uselocale.c +++ b/locale/uselocale.c @@ -54,7 +54,7 @@ __uselocale (locale_t newloc) { \ extern char _nl_current_##category##_used; \ weak_extern (_nl_current_##category##_used) \ - weak_extern (_nl_current_##category) \ + weak_tls_extern (_nl_current_##category) \ if (&_nl_current_##category##_used != 0) \ _nl_current_##category = &locobj->__locales[category]; \ }