about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--locale/localeinfo.h7
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3990d5a72f..932ec5b7a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-28  Stefan Liebler  <stli@linux.vnet.ibm.com>
+
+	[BZ #19860]
+	* locale/localeinfo.h (_NL_CURRENT_DEFINE):
+	Set _nl_current_LC_CATEGORY_used to two instead of one.
+
 2016-06-27  Aurelien Jarno  <aurelien@aurel32.net>
 
 	* sysdeps/mips/tst-mode-switch-1.c (main): Converted to ...
diff --git a/locale/localeinfo.h b/locale/localeinfo.h
index 94627f37e4..1f4da920d1 100644
--- a/locale/localeinfo.h
+++ b/locale/localeinfo.h
@@ -260,12 +260,15 @@ extern __thread struct __locale_data *const *_nl_current_##category \
 #define _NL_CURRENT_WORD(category, item) \
   ((uint32_t) (*_nl_current_##category)->values[_NL_ITEM_INDEX (item)].word)
 
-/* This is used in lc-CATEGORY.c to define _nl_current_CATEGORY.  */
+/* This is used in lc-CATEGORY.c to define _nl_current_CATEGORY.  The symbol
+   _nl_current_CATEGORY_used is set to a value unequal to zero to mark this
+   category as used.  On S390 the used relocation to load the symbol address
+   can only handle even addresses.  */
 #define _NL_CURRENT_DEFINE(category) \
   __thread struct __locale_data *const *_nl_current_##category \
     attribute_hidden = &_nl_global_locale.__locales[category]; \
   asm (".globl " __SYMBOL_PREFIX "_nl_current_" #category "_used\n" \
-       _NL_CURRENT_DEFINE_ABS (_nl_current_##category##_used, 1));
+       _NL_CURRENT_DEFINE_ABS (_nl_current_##category##_used, 2));
 #ifdef HAVE_ASM_SET_DIRECTIVE
 # define _NL_CURRENT_DEFINE_ABS(sym, val) ".set " #sym ", " #val
 #else