* 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-20 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <drepper@redhat.com>
[BZ #1955]
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
# 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
{ \
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]; \
}