Просмотр исходного кода

Added missing tests for locale with multibyte encoding

Carmelo Amoroso 16 лет назад
Родитель
Сommit
bb9231c840
100 измененных файлов с 28587 добавлено и 0 удалено
  1. 29 0
      test/locale-mbwc/Makefile
  2. 37 0
      test/locale-mbwc/dat_isw-funcs.h
  3. 196 0
      test/locale-mbwc/dat_iswalnum.c
  4. 169 0
      test/locale-mbwc/dat_iswalpha.c
  5. 125 0
      test/locale-mbwc/dat_iswcntrl.c
  6. 667 0
      test/locale-mbwc/dat_iswctype.c
  7. 125 0
      test/locale-mbwc/dat_iswdigit.c
  8. 167 0
      test/locale-mbwc/dat_iswgraph.c
  9. 96 0
      test/locale-mbwc/dat_iswlower.c
  10. 170 0
      test/locale-mbwc/dat_iswprint.c
  11. 155 0
      test/locale-mbwc/dat_iswpunct.c
  12. 129 0
      test/locale-mbwc/dat_iswspace.c
  13. 94 0
      test/locale-mbwc/dat_iswupper.c
  14. 125 0
      test/locale-mbwc/dat_iswxdigit.c
  15. 137 0
      test/locale-mbwc/dat_mblen.c
  16. 222 0
      test/locale-mbwc/dat_mbrlen.c
  17. 140 0
      test/locale-mbwc/dat_mbrtowc.c
  18. 180 0
      test/locale-mbwc/dat_mbsrtowcs.c
  19. 190 0
      test/locale-mbwc/dat_mbstowcs.c
  20. 444 0
      test/locale-mbwc/dat_mbtowc.c
  21. 209 0
      test/locale-mbwc/dat_strcoll.c
  22. 268 0
      test/locale-mbwc/dat_strfmon.c
  23. 147 0
      test/locale-mbwc/dat_strxfrm.c
  24. 185 0
      test/locale-mbwc/dat_swscanf.c
  25. 24 0
      test/locale-mbwc/dat_tow-funcs.h
  26. 97 0
      test/locale-mbwc/dat_towctrans.c
  27. 47 0
      test/locale-mbwc/dat_towlower.c
  28. 47 0
      test/locale-mbwc/dat_towupper.c
  29. 122 0
      test/locale-mbwc/dat_wcrtomb.c
  30. 116 0
      test/locale-mbwc/dat_wcscat.c
  31. 94 0
      test/locale-mbwc/dat_wcschr.c
  32. 137 0
      test/locale-mbwc/dat_wcscmp.c
  33. 210 0
      test/locale-mbwc/dat_wcscoll.c
  34. 44 0
      test/locale-mbwc/dat_wcscpy.c
  35. 164 0
      test/locale-mbwc/dat_wcscspn.c
  36. 62 0
      test/locale-mbwc/dat_wcslen.c
  37. 158 0
      test/locale-mbwc/dat_wcsncat.c
  38. 144 0
      test/locale-mbwc/dat_wcsncmp.c
  39. 119 0
      test/locale-mbwc/dat_wcsncpy.c
  40. 176 0
      test/locale-mbwc/dat_wcspbrk.c
  41. 272 0
      test/locale-mbwc/dat_wcsrtombs.c
  42. 179 0
      test/locale-mbwc/dat_wcsspn.c
  43. 175 0
      test/locale-mbwc/dat_wcsstr.c
  44. 78 0
      test/locale-mbwc/dat_wcstod.c
  45. 138 0
      test/locale-mbwc/dat_wcstok.c
  46. 271 0
      test/locale-mbwc/dat_wcstombs.c
  47. 263 0
      test/locale-mbwc/dat_wcswidth.c
  48. 102 0
      test/locale-mbwc/dat_wcsxfrm.c
  49. 61 0
      test/locale-mbwc/dat_wctob.c
  50. 168 0
      test/locale-mbwc/dat_wctomb.c
  51. 99 0
      test/locale-mbwc/dat_wctrans.c
  52. 189 0
      test/locale-mbwc/dat_wctype.c
  53. 149 0
      test/locale-mbwc/dat_wcwidth.c
  54. 160 0
      test/locale-mbwc/tgn_funcdef.h
  55. 32 0
      test/locale-mbwc/tgn_locdef.h
  56. 64 0
      test/locale-mbwc/tsp_common.c
  57. 272 0
      test/locale-mbwc/tst_funcs.h
  58. 10 0
      test/locale-mbwc/tst_iswalnum.c
  59. 10 0
      test/locale-mbwc/tst_iswalpha.c
  60. 10 0
      test/locale-mbwc/tst_iswcntrl.c
  61. 53 0
      test/locale-mbwc/tst_iswctype.c
  62. 11 0
      test/locale-mbwc/tst_iswdigit.c
  63. 10 0
      test/locale-mbwc/tst_iswgraph.c
  64. 10 0
      test/locale-mbwc/tst_iswlower.c
  65. 10 0
      test/locale-mbwc/tst_iswprint.c
  66. 10 0
      test/locale-mbwc/tst_iswpunct.c
  67. 10 0
      test/locale-mbwc/tst_iswspace.c
  68. 10 0
      test/locale-mbwc/tst_iswupper.c
  69. 10 0
      test/locale-mbwc/tst_iswxdigit.c
  70. 85 0
      test/locale-mbwc/tst_mblen.c
  71. 82 0
      test/locale-mbwc/tst_mbrlen.c
  72. 8009 0
      test/locale-mbwc/tst_mbrlen.i
  73. 8666 0
      test/locale-mbwc/tst_mbrlen.s
  74. 103 0
      test/locale-mbwc/tst_mbrtowc.c
  75. 109 0
      test/locale-mbwc/tst_mbsrtowcs.c
  76. 98 0
      test/locale-mbwc/tst_mbstowcs.c
  77. 130 0
      test/locale-mbwc/tst_mbtowc.c
  78. 87 0
      test/locale-mbwc/tst_strcoll.c
  79. 74 0
      test/locale-mbwc/tst_strfmon.c
  80. 136 0
      test/locale-mbwc/tst_strxfrm.c
  81. 137 0
      test/locale-mbwc/tst_swscanf.c
  82. 82 0
      test/locale-mbwc/tst_towctrans.c
  83. 11 0
      test/locale-mbwc/tst_towlower.c
  84. 10 0
      test/locale-mbwc/tst_towupper.c
  85. 729 0
      test/locale-mbwc/tst_types.h
  86. 79 0
      test/locale-mbwc/tst_wcrtomb.c
  87. 78 0
      test/locale-mbwc/tst_wcscat.c
  88. 70 0
      test/locale-mbwc/tst_wcschr.c
  89. 40 0
      test/locale-mbwc/tst_wcscmp.c
  90. 76 0
      test/locale-mbwc/tst_wcscoll.c
  91. 85 0
      test/locale-mbwc/tst_wcscpy.c
  92. 38 0
      test/locale-mbwc/tst_wcscspn.c
  93. 31 0
      test/locale-mbwc/tst_wcslen.c
  94. 75 0
      test/locale-mbwc/tst_wcsncat.c
  95. 40 0
      test/locale-mbwc/tst_wcsncmp.c
  96. 93 0
      test/locale-mbwc/tst_wcsncpy.c
  97. 80 0
      test/locale-mbwc/tst_wcspbrk.c
  98. 127 0
      test/locale-mbwc/tst_wcsrtombs.c
  99. 38 0
      test/locale-mbwc/tst_wcsspn.c
  100. 86 0
      test/locale-mbwc/tst_wcsstr.c

+ 29 - 0
test/locale-mbwc/Makefile

@@ -0,0 +1,29 @@
+# uClibc locale tests
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#	 tst_mbtowc tst_strcoll tst_strfmon tst_strxfrm    \
+
+TESTS := tst_iswalnum tst_iswalpha tst_iswcntrl          \
+	 tst_iswctype tst_iswdigit tst_iswgraph          \
+	 tst_iswlower tst_iswprint tst_iswpunct          \
+	 tst_iswspace tst_iswupper tst_iswxdigit         \
+	 tst_mblen tst_mbrlen tst_mbrtowc tst_mbsrtowcs  \
+	 tst_mbstowcs tst_mbtowc tst_strcoll tst_strxfrm \
+	 tst_swscanf tst_towctrans tst_towlower          \
+	 tst_towupper tst_wcrtomb tst_wcscat tst_wcschr  \
+	 tst_wcscmp tst_wcscoll tst_wcscpy tst_wcscspn   \
+	 tst_wcslen tst_wcsncat tst_wcsncmp tst_wcsncpy  \
+	 tst_wcspbrk tst_wcsrtombs tst_wcsspn tst_wcsstr \
+	 tst_wcstod tst_wcstok tst_wcstombs tst_wcswidth \
+	 tst_wcsxfrm tst_wctob tst_wctomb tst_wctrans    \
+	 tst_wctype tst_wcwidth tst_strfmon
+
+
+# NOTE: For now disabled tst_strfmon to avoid build failure.
+TESTS_DISABLED := tst_strfmon
+
+include ../Test.mak
+
+DODIFF_rint     := 1
+
+EXTRA_CFLAGS    := -D__USE_GNU -fno-builtin
+

+ 37 - 0
test/locale-mbwc/dat_isw-funcs.h

@@ -0,0 +1,37 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_isw-funcs.h
+ *
+ *	 ISW*:	int isw* (wint_t wc);
+ */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <wctype.h>
+#include "tst_types.h"
+#include "tgn_locdef.h"
+
+#define TST_ISW_LOC(FUNC, func) \
+	TST_ISW## FUNC	  tst_isw## func ##_loc []
+
+#define TST_ISW_REC(locale, func) \
+	{  Tisw## func,	   TST_LOC_## locale  },
+
+/*
+ *  NOTE:
+ *    Set ret_flg = 1, when a return value is expected to be 0 (FALSE).
+ *    Set ret_flg = 0, when a return value is expected to be non-zero (TRUE).
+ *
+ *    Since the functions return *non*-zero value for TRUE, can't
+ *    compare an actual return value with an expected return value.
+ *    Set the ret_flg=0 for TRUE cases and the tst_isw*() will check
+ *    the non-zero value.
+ *
+ *    { { WEOF }, { 0,1,0 } },
+ *		      | |
+ *		      | ret_val: an expected return value
+ *		      ret_flg: if 1, compare an actual return value with the
+ *			       ret_val; if 0, the test program
+ *			       checks the actual return value.
+ */

+ 196 - 0
test/locale-mbwc/dat_iswalnum.c

@@ -0,0 +1,196 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswalnum.c
+ *
+ *	 ISW*:	int iswalnum (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (ALNUM, alnum) = {
+
+    {	TST_ISW_REC (de, alnum)
+	{
+	  {  { 0x0080 }, { 0,1,0 }  },  /* CTRL     */
+	  {  { 0x009F }, { 0,1,0 }  },  /* CTRL     */
+	  {  { 0x00A0 }, { 0,1,0 }  },  /* NB SPACE */
+	  {  { 0x00A1 }, { 0,1,0 }  },  /* UD !     */
+	  {  { 0x00B0 }, { 0,1,0 }  },  /* Degree   */
+	  {  { 0x00B1 }, { 0,1,0 }  },  /* +- sign  */
+	  {  { 0x00B2 }, { 0,1,0 }  },  /* SUP 2    */
+	  {  { 0x00B3 }, { 0,1,0 }  },  /* SUP 3    */
+	  {  { 0x00B4 }, { 0,1,0 }  },  /* ACUTE    */
+	  {  { 0x00B8 }, { 0,1,0 }  },  /* CEDILLA  */
+	  {  { 0x00B9 }, { 0,1,0 }  },  /* SUP 1    */
+	  {  { 0x00BB }, { 0,1,0 }  },  /* >>	      */
+	  {  { 0x00BC }, { 0,1,0 }  },  /* 1/4      */
+	  {  { 0x00BD }, { 0,1,0 }  },  /* 1/2      */
+	  {  { 0x00BE }, { 0,1,0 }  },  /* 3/4      */
+	  {  { 0x00BF }, { 0,1,0 }  },  /* UD ?     */
+	  {  { 0x00C0 }, { 0,0,0 }  },  /* A Grave  */
+	  {  { 0x00D6 }, { 0,0,0 }  },  /* O dia    */
+	  {  { 0x00D7 }, { 0,1,0 }  },  /* multipl. */
+	  {  { 0x00D8 }, { 0,0,0 }  },  /* O stroke */
+	  {  { 0x00DF }, { 0,0,0 }  },  /* small Sh */
+	  {  { 0x00E0 }, { 0,0,0 }  },  /* a grave  */
+	  {  { 0x00F6 }, { 0,0,0 }  },  /* o dia    */
+	  {  { 0x00F7 }, { 0,1,0 }  },  /* division */
+	  {  { 0x00F8 }, { 0,0,0 }  },  /* o stroke */
+	  {  { 0x00FF }, { 0,0,0 }  },  /* y dia    */
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+    {	TST_ISW_REC (de_UTF8, alnum)
+	{
+	  {  { 0x0080 }, { 0,1,0 }  },  /* CTRL     */
+	  {  { 0x009F }, { 0,1,0 }  },  /* CTRL     */
+	  {  { 0x00A0 }, { 0,1,0 }  },  /* NB SPACE */
+	  {  { 0x00A1 }, { 0,1,0 }  },  /* UD !     */
+	  {  { 0x00B0 }, { 0,1,0 }  },  /* Degree   */
+	  {  { 0x00B1 }, { 0,1,0 }  },  /* +- sign  */
+	  {  { 0x00B2 }, { 0,1,0 }  },  /* SUP 2    */
+	  {  { 0x00B3 }, { 0,1,0 }  },  /* SUP 3    */
+	  {  { 0x00B4 }, { 0,1,0 }  },  /* ACUTE    */
+	  {  { 0x00B8 }, { 0,1,0 }  },  /* CEDILLA  */
+	  {  { 0x00B9 }, { 0,1,0 }  },  /* SUP 1    */
+	  {  { 0x00BB }, { 0,1,0 }  },  /* >>	      */
+	  {  { 0x00BC }, { 0,1,0 }  },  /* 1/4      */
+	  {  { 0x00BD }, { 0,1,0 }  },  /* 1/2      */
+	  {  { 0x00BE }, { 0,1,0 }  },  /* 3/4      */
+	  {  { 0x00BF }, { 0,1,0 }  },  /* UD ?     */
+	  {  { 0x00C0 }, { 0,0,0 }  },  /* A Grave  */
+	  {  { 0x00D6 }, { 0,0,0 }  },  /* O dia    */
+	  {  { 0x00D7 }, { 0,1,0 }  },  /* multipl. */
+	  {  { 0x00D8 }, { 0,0,0 }  },  /* O stroke */
+	  {  { 0x00DF }, { 0,0,0 }  },  /* small Sh */
+	  {  { 0x00E0 }, { 0,0,0 }  },  /* a grave  */
+	  {  { 0x00F6 }, { 0,0,0 }  },  /* o dia    */
+	  {  { 0x00F7 }, { 0,1,0 }  },  /* division */
+	  {  { 0x00F8 }, { 0,0,0 }  },  /* o stroke */
+	  {  { 0x00FF }, { 0,0,0 }  },  /* y dia    */
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+    {	TST_ISW_REC (enUS, alnum)
+	{
+	  {  { WEOF   }, { 0,1,0 }  },
+	  {  { 0x0000 }, { 0,1,0 }  },
+	  {  { 0x001F }, { 0,1,0 }  },
+	  {  { 0x0020 }, { 0,1,0 }  },
+	  {  { 0x0021 }, { 0,1,0 }  },
+	  {  { 0x002F }, { 0,1,0 }  },
+	  {  { 0x0030 }, { 0,0,0 }  },
+	  {  { 0x0039 }, { 0,0,0 }  },
+	  {  { 0x003A }, { 0,1,0 }  },
+	  {  { 0x0040 }, { 0,1,0 }  },
+	  {  { 0x0041 }, { 0,0,0 }  },
+	  {  { 0x005A }, { 0,0,0 }  },
+	  {  { 0x005B }, { 0,1,0 }  },
+	  {  { 0x0060 }, { 0,1,0 }  },
+	  {  { 0x0061 }, { 0,0,0 }  },
+	  {  { 0x007A }, { 0,0,0 }  },
+	  {  { 0x007B }, { 0,1,0 }  },
+	  {  { 0x007E }, { 0,1,0 }  },
+	  {  { 0x007F }, { 0,1,0 }  },
+	  {  { 0x0080 }, { 0,1,0 }  },
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+#if 0
+    {	TST_ISW_REC (eucJP, alnum)
+#else
+    {	TST_ISW_REC (ja_UTF8, alnum)
+#endif
+	{
+	  {  { 0x3000 }, { 0,1,0 }  },  /* IDEO. SPACE	*/
+	  {  { 0x3020 }, { 0,1,0 }  },  /* POSTAL MARK FACE	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x3029 }, { 0,1,0 }  },  /* Hangzhou NUM9	*/
+#else
+	  {  { 0x3029 }, { 0,0,0 }  },  /* Hangzhou NUM9	*/
+#endif
+	  {  { 0x302F }, { 0,1,0 }  },  /* Diacritics(Hangul) */
+	  {  { 0x3037 }, { 0,1,0 }  },  /* Separator Symbol	*/
+	  {  { 0x303F }, { 0,1,0 }  },  /* IDEO. HALF SPACE	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x3041 }, { 0,1,0 }  },  /* HIRAGANA a		*/
+	  {  { 0x3094 }, { 0,1,0 }  },  /* HIRAGANA u"		*/
+#else
+	  {  { 0x3041 }, { 0,0,0 }  },  /* HIRAGANA a		*/
+	  {  { 0x3094 }, { 0,0,0 }  },  /* HIRAGANA u"		*/
+#endif
+	  {  { 0x3099 }, { 0,1,0 }  },  /* SOUND MARK		*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x309E }, { 0,1,0 }  },  /* ITERATION MARK	*/
+	  {  { 0x30A1 }, { 0,1,0 }  },  /* KATAKANA a		*/
+	  {  { 0x30FA }, { 0,1,0 }  },  /* KATAKANA wo"	*/
+#else
+	  {  { 0x309E }, { 0,0,0 }  },  /* ITERATION MARK	*/
+	  {  { 0x30A1 }, { 0,0,0 }  },  /* KATAKANA a		*/
+	  {  { 0x30FA }, { 0,0,0 }  },  /* KATAKANA wo"	*/
+#endif
+	  {  { 0x30FB }, { 0,1,0 }  },  /* KATAKANA MID.DOT	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x30FE }, { 0,1,0 }  },  /* KATAKANA ITERATION	*/
+#else
+	  {  { 0x30FE }, { 0,0,0 }  },  /* KATAKANA ITERATION	*/
+#endif
+	  {  { 0x3191 }, { 0,1,0 }  },  /* KANBUN REV.MARK	*/
+	  {  { 0x3243 }, { 0,1,0 }  },  /* IDEO. MARK (reach) */
+	  {  { 0x32CB }, { 0,1,0 }  },  /* IDEO.TEL.SYM.DEC12 */
+	  {  { 0x32FE }, { 0,1,0 }  },  /* MARU KATAKANA wo	*/
+	  {  { 0x33FE }, { 0,1,0 }  },  /* CJK IDEO.TEL.31th	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x4E00 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E05 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E06 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x4E07 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4FFF }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9000 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9006 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9007 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA4 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA5 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+#else
+	  {  { 0x4E00 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E05 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E06 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x4E07 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4FFF }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9000 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9006 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9007 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA4 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA5 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+#endif
+	  {  { 0xFE4F }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0xFF0F }, { 0,1,0 }  },  /* FULL SLASH		*/
+	  {  { 0xFF19 }, { 0,0,0 }  },  /* FULL 9		*/
+	  {  { 0xFF20 }, { 0,1,0 }  },  /* FULL @		*/
+	  {  { 0xFF3A }, { 0,0,0 }  },  /* FULL Z		*/
+	  {  { 0xFF40 }, { 0,1,0 }  },  /* FULL GRAVE ACC.	*/
+	  {  { 0xFF5A }, { 0,0,0 }  },  /* FULL z		*/
+	  {  { 0xFF5E }, { 0,1,0 }  },  /* FULL ~ (tilde)	*/
+	  {  { 0xFF61 }, { 0,1,0 }  },  /* HALF IDEO.STOP. .	*/
+	  {  { 0xFF65 }, { 0,1,0 }  },  /* HALF KATA MID.DOT	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0xFF66 }, { 0,1,0 }  },  /* HALF KATA WO		*/
+	  {  { 0xFF6F }, { 0,1,0 }  },  /* HALF KATA tu		*/
+	  {  { 0xFF70 }, { 0,1,0 }  },  /* HALF KATA PL -	*/
+	  {  { 0xFF71 }, { 0,1,0 }  },  /* HALF KATA A		*/
+	  {  { 0xFF9E }, { 0,1,0 }  },  /* HALF KATA MI		*/
+#else
+	  {  { 0xFF66 }, { 0,0,0 }  },  /* HALF KATA WO		*/
+	  {  { 0xFF6F }, { 0,0,0 }  },  /* HALF KATA tu		*/
+	  {  { 0xFF70 }, { 0,0,0 }  },  /* HALF KATA PL -	*/
+	  {  { 0xFF71 }, { 0,0,0 }  },  /* HALF KATA A		*/
+	  {  { 0xFF9E }, { 0,0,0 }  },  /* HALF KATA MI		*/
+#endif
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+    {	TST_ISW_REC (end, alnum) }
+};

+ 169 - 0
test/locale-mbwc/dat_iswalpha.c

@@ -0,0 +1,169 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswalpha.c
+ *
+ *	 ISW*:	int iswalpha (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (ALPHA, alpha)  = {
+
+    {	TST_ISW_REC (de, alpha)
+	{
+	  {  { 0x0080 }, { 0,1,0 }  },  /* CTRL     */
+	  {  { 0x009F }, { 0,1,0 }  },  /* CTRL     */
+	  {  { 0x00A0 }, { 0,1,0 }  },  /* NB SPACE */
+	  {  { 0x00A1 }, { 0,1,0 }  },  /* UD !     */
+	  {  { 0x00B0 }, { 0,1,0 }  },  /* Degree   */
+	  {  { 0x00B1 }, { 0,1,0 }  },  /* +- sign  */
+	  {  { 0x00B2 }, { 0,1,0 }  },  /* SUP 2    */
+	  {  { 0x00B3 }, { 0,1,0 }  },  /* SUP 3    */
+	  {  { 0x00B4 }, { 0,1,0 }  },  /* ACUTE    */
+	  {  { 0x00B8 }, { 0,1,0 }  },  /* CEDILLA  */
+	  {  { 0x00B9 }, { 0,1,0 }  },  /* SUP 1    */
+	  {  { 0x00BB }, { 0,1,0 }  },  /* >>	      */
+	  {  { 0x00BC }, { 0,1,0 }  },  /* 1/4      */
+	  {  { 0x00BD }, { 0,1,0 }  },  /* 1/2      */
+	  {  { 0x00BE }, { 0,1,0 }  },  /* 3/4      */
+	  {  { 0x00BF }, { 0,1,0 }  },  /* UD ?     */
+	  {  { 0x00C0 }, { 0,0,0 }  },  /* A Grave  */
+	  {  { 0x00D6 }, { 0,0,0 }  },  /* O dia    */
+	  {  { 0x00D7 }, { 0,1,0 }  },  /* multipl. */
+	  {  { 0x00D8 }, { 0,0,0 }  },  /* O stroke */
+	  {  { 0x00DF }, { 0,0,0 }  },  /* small Sh */
+	  {  { 0x00E0 }, { 0,0,0 }  },  /* a grave  */
+	  {  { 0x00F6 }, { 0,0,0 }  },  /* o dia    */
+	  {  { 0x00F7 }, { 0,1,0 }  },  /* division */
+	  {  { 0x00F8 }, { 0,0,0 }  },  /* o stroke */
+	  {  { 0x00FF }, { 0,0,0 }  },  /* y dia    */
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+    {	TST_ISW_REC (enUS, alpha)
+	{
+	  {  { WEOF   }, { 0,1,0 }  },
+	  {  { 0x0000 }, { 0,1,0 }  },
+	  {  { 0x001F }, { 0,1,0 }  },
+	  {  { 0x0020 }, { 0,1,0 }  },
+	  {  { 0x0021 }, { 0,1,0 }  },
+	  {  { 0x002F }, { 0,1,0 }  },
+	  {  { 0x0030 }, { 0,1,0 }  },
+	  {  { 0x0039 }, { 0,1,0 }  },
+	  {  { 0x003A }, { 0,1,0 }  },
+	  {  { 0x0040 }, { 0,1,0 }  },
+	  {  { 0x0041 }, { 0,0,0 }  },
+	  {  { 0x005A }, { 0,0,0 }  },
+	  {  { 0x005B }, { 0,1,0 }  },
+	  {  { 0x0060 }, { 0,1,0 }  },
+	  {  { 0x0061 }, { 0,0,0 }  },
+	  {  { 0x007A }, { 0,0,0 }  },
+	  {  { 0x007B }, { 0,1,0 }  },
+	  {  { 0x007E }, { 0,1,0 }  },
+	  {  { 0x007F }, { 0,1,0 }  },
+	  {  { 0x0080 }, { 0,1,0 }  },  /* 20 */
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+#if 0
+    {	TST_ISW_REC (eucJP, alpha)
+#else
+    {	TST_ISW_REC (ja_UTF8, alpha)
+#endif
+	{
+	  {  { 0x3000 }, { 0,1,0 }  },  /* IDEO. SPACE	*/
+	  {  { 0x3020 }, { 0,1,0 }  },  /* POSTAL MARK FACE	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x3029 }, { 0,1,0 }  },  /* Hangzhou NUM9	*/
+#else
+	  {  { 0x3029 }, { 0,0,0 }  },  /* Hangzhou NUM9	*/
+#endif
+	  {  { 0x302F }, { 0,1,0 }  },  /* Diacritics(Hangul) */
+	  {  { 0x3037 }, { 0,1,0 }  },  /* Separator Symbol	*/
+	  {  { 0x303F }, { 0,1,0 }  },  /* IDEO. HALF SPACE	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x3041 }, { 0,1,0 }  },  /* HIRAGANA a		*/
+	  {  { 0x3094 }, { 0,1,0 }  },  /* HIRAGANA u"		*/
+#else
+	  {  { 0x3041 }, { 0,0,0 }  },  /* HIRAGANA a		*/
+	  {  { 0x3094 }, { 0,0,0 }  },  /* HIRAGANA u"		*/
+#endif
+	  {  { 0x3099 }, { 0,1,0 }  },  /* SOUND MARK		*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x309E }, { 0,1,0 }  },  /* ITERATION MARK	*/
+	  {  { 0x30A1 }, { 0,1,0 }  },  /* KATAKANA a		*/
+	  {  { 0x30FA }, { 0,1,0 }  },  /* KATAKANA wo"		*/
+#else
+	  {  { 0x309E }, { 0,0,0 }  },  /* ITERATION MARK	*/
+	  {  { 0x30A1 }, { 0,0,0 }  },  /* KATAKANA a		*/
+	  {  { 0x30FA }, { 0,0,0 }  },  /* KATAKANA wo"		*/
+#endif
+	  {  { 0x30FB }, { 0,1,0 }  },  /* KATAKANA MID.DOT	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x30FE }, { 0,1,0 }  },  /* KATAKANA ITERATION	*/
+#else
+	  {  { 0x30FE }, { 0,0,0 }  },  /* KATAKANA ITERATION	*/
+#endif
+	  {  { 0x3191 }, { 0,1,0 }  },  /* KANBUN REV.MARK	*/
+	  {  { 0x3243 }, { 0,1,0 }  },  /* IDEO. MARK (reach) */
+	  {  { 0x32CB }, { 0,1,0 }  },  /* IDEO.TEL.SYM.DEC12 */
+	  {  { 0x32FE }, { 0,1,0 }  },  /* MARU KATAKANA wo	*/
+	  {  { 0x33FE }, { 0,1,0 }  },  /* CJK IDEO.TEL.31th	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x4E00 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E05 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E06 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x4E07 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4FFF }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9000 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9006 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9007 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA4 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA5 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+#else
+	  {  { 0x4E00 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E05 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E06 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x4E07 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4FFF }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9000 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9006 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9007 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA4 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J	*/
+	  {  { 0x9FA5 }, { 0,0,0 }  },  /* CJK UNI.IDEO.	*/
+#endif
+	  {  { 0xFE4F }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0xFF0F }, { 0,1,0 }  },  /* FULL SLASH		*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0xFF19 }, { 0,1,0 }  },  /* FULL 9		*/
+#else
+	  {  { 0xFF19 }, { 0,0,0 }  },  /* FULL 9		*/
+#endif
+	  {  { 0xFF20 }, { 0,1,0 }  },  /* FULL @		*/
+	  {  { 0xFF3A }, { 0,0,0 }  },  /* FULL Z		*/
+	  {  { 0xFF40 }, { 0,1,0 }  },  /* FULL GRAVE ACC.	*/
+	  {  { 0xFF5A }, { 0,0,0 }  },  /* FULL z		*/
+	  {  { 0xFF5E }, { 0,1,0 }  },  /* FULL ~ (tilde)	*/
+	  {  { 0xFF61 }, { 0,1,0 }  },  /* HALF IDEO.STOP. .	*/
+	  {  { 0xFF65 }, { 0,1,0 }  },  /* HALF KATA MID.DOT	*/
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0xFF66 }, { 0,1,0 }  },  /* HALF KATA WO		*/
+	  {  { 0xFF6F }, { 0,1,0 }  },  /* HALF KATA tu		*/
+	  {  { 0xFF70 }, { 0,1,0 }  },  /* HALF KATA PL -	*/
+	  {  { 0xFF71 }, { 0,1,0 }  },  /* HALF KATA A		*/
+	  {  { 0xFF9E }, { 0,1,0 }  },  /* HALF KATA MI		*/
+#else
+	  {  { 0xFF66 }, { 0,0,0 }  },  /* HALF KATA WO		*/
+	  {  { 0xFF6F }, { 0,0,0 }  },  /* HALF KATA tu		*/
+	  {  { 0xFF70 }, { 0,0,0 }  },  /* HALF KATA PL -	*/
+	  {  { 0xFF71 }, { 0,0,0 }  },  /* HALF KATA A		*/
+	  {  { 0xFF9E }, { 0,0,0 }  },  /* HALF KATA MI		*/
+#endif
+	  {  .is_last = 1 }		  /* last element    */
+	}
+    },
+    {	TST_ISW_REC (end, alpha) }
+};

+ 125 - 0
test/locale-mbwc/dat_iswcntrl.c

@@ -0,0 +1,125 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswcntrl.c
+ *
+ *	 ISW*:	int iswcntrl (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (CNTRL, cntrl) = {
+
+    {	TST_ISW_REC (de, cntrl)
+	{
+	  {  { 0x0080 }, { 0,0,0 }  },  /* CTRL     */
+	  {  { 0x009F }, { 0,0,0 }  },  /* CTRL     */
+	  {  { 0x00A0 }, { 0,1,0 }  },  /* NB SPACE */
+	  {  { 0x00A1 }, { 0,1,0 }  },  /* UD !     */
+	  {  { 0x00B0 }, { 0,1,0 }  },  /* Degree   */
+	  {  { 0x00B1 }, { 0,1,0 }  },  /* +- sign  */
+	  {  { 0x00B2 }, { 0,1,0 }  },  /* SUP 2    */
+	  {  { 0x00B3 }, { 0,1,0 }  },  /* SUP 3    */
+	  {  { 0x00B4 }, { 0,1,0 }  },  /* ACUTE    */
+	  {  { 0x00B8 }, { 0,1,0 }  },  /* CEDILLA  */
+	  {  { 0x00B9 }, { 0,1,0 }  },  /* SUP 1    */
+	  {  { 0x00BB }, { 0,1,0 }  },  /* >>	      */
+	  {  { 0x00BC }, { 0,1,0 }  },  /* 1/4      */
+	  {  { 0x00BD }, { 0,1,0 }  },  /* 1/2      */
+	  {  { 0x00BE }, { 0,1,0 }  },  /* 3/4      */
+	  {  { 0x00BF }, { 0,1,0 }  },  /* UD ?     */
+	  {  { 0x00C0 }, { 0,1,0 }  },  /* A Grave  */
+	  {  { 0x00D6 }, { 0,1,0 }  },  /* O dia    */
+	  {  { 0x00D7 }, { 0,1,0 }  },  /* multipl. */
+	  {  { 0x00D8 }, { 0,1,0 }  },  /* O stroke */
+	  {  { 0x00DF }, { 0,1,0 }  },  /* small Sh */
+	  {  { 0x00E0 }, { 0,1,0 }  },  /* a grave  */
+	  {  { 0x00F6 }, { 0,1,0 }  },  /* o dia    */
+	  {  { 0x00F7 }, { 0,1,0 }  },  /* division */
+	  {  { 0x00F8 }, { 0,1,0 }  },  /* o stroke */
+	  {  { 0x00FF }, { 0,1,0 }  },  /* y dia    */
+	  { .is_last = 1 }		  /* Last element.  */
+	}
+    },
+    {	TST_ISW_REC (enUS, cntrl)
+	{
+	  {  { WEOF   }, { 0,1,0 }  },
+	  {  { 0x0000 }, { 0,0,0 }  },
+	  {  { 0x001F }, { 0,0,0 }  },
+	  {  { 0x0020 }, { 0,1,0 }  },
+	  {  { 0x0021 }, { 0,1,0 }  },
+	  {  { 0x002F }, { 0,1,0 }  },
+	  {  { 0x0030 }, { 0,1,0 }  },
+	  {  { 0x0039 }, { 0,1,0 }  },
+	  {  { 0x003A }, { 0,1,0 }  },
+	  {  { 0x0040 }, { 0,1,0 }  },
+	  {  { 0x0041 }, { 0,1,0 }  },
+	  {  { 0x005A }, { 0,1,0 }  },
+	  {  { 0x005B }, { 0,1,0 }  },
+	  {  { 0x0060 }, { 0,1,0 }  },
+	  {  { 0x0061 }, { 0,1,0 }  },
+	  {  { 0x007A }, { 0,1,0 }  },
+	  {  { 0x007B }, { 0,1,0 }  },
+	  {  { 0x007E }, { 0,1,0 }  },
+	  {  { 0x007F }, { 0,0,0 }  },
+	  {  { 0x0080 }, { 0,1,0 }  },
+	  { .is_last = 1 }		  /* Last element.  */
+	}
+    },
+#if 0
+    {	TST_ISW_REC (eucJP, cntrl)
+#else
+    {	TST_ISW_REC (ja_UTF8, cntrl)
+#endif
+	{
+	  {  { 0x3000 }, { 0,1,0 }  },  /* IDEO. SPACE	*/
+	  {  { 0x3020 }, { 0,1,0 }  },  /* POSTAL MARK FACE	*/
+	  {  { 0x3029 }, { 0,1,0 }  },  /* Hangzhou NUM9	*/
+	  {  { 0x302F }, { 0,1,0 }  },  /* Diacritics(Hangul) */
+	  {  { 0x3037 }, { 0,1,0 }  },  /* Separator Symbol	*/
+	  {  { 0x303F }, { 0,1,0 }  },  /* IDEO. HALF SPACE	*/
+	  {  { 0x3041 }, { 0,1,0 }  },  /* HIRAGANA a		*/
+	  {  { 0x3094 }, { 0,1,0 }  },  /* HIRAGANA u"	*/
+	  {  { 0x3099 }, { 0,1,0 }  },  /* SOUND MARK		*/
+	  {  { 0x309E }, { 0,1,0 }  },  /* ITERATION MARK	*/
+	  {  { 0x30A1 }, { 0,1,0 }  },  /* KATAKANA a		*/
+	  {  { 0x30FA }, { 0,1,0 }  },  /* KATAKANA wo"	*/
+	  {  { 0x30FB }, { 0,1,0 }  },  /* KATAKANA MID.DOT	*/
+	  {  { 0x30FE }, { 0,1,0 }  },  /* KATAKANA ITERATION */
+	  {  { 0x3191 }, { 0,1,0 }  },  /* KANBUN REV.MARK	*/
+	  {  { 0x3243 }, { 0,1,0 }  },  /* IDEO. MARK (reach) */
+	  {  { 0x32CB }, { 0,1,0 }  },  /* IDEO.TEL.SYM.DEC12 */
+	  {  { 0x32FE }, { 0,1,0 }  },  /* MARU KATAKANA wo	*/
+	  {  { 0x33FE }, { 0,1,0 }  },  /* CJK IDEO.TEL.31th	*/
+	  {  { 0x4E00 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E05 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4E06 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J */
+	  {  { 0x4E07 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x4FFF }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9000 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9006 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0x9007 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J */
+	  {  { 0x9FA4 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J */
+	  {  { 0x9FA5 }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0xFE4F }, { 0,1,0 }  },  /* CJK UNI.IDEO.	*/
+	  {  { 0xFF0F }, { 0,1,0 }  },  /* FULL SLASH		*/
+	  {  { 0xFF19 }, { 0,1,0 }  },  /* FULL 9		*/
+	  {  { 0xFF20 }, { 0,1,0 }  },  /* FULL @		*/
+	  {  { 0xFF3A }, { 0,1,0 }  },  /* FULL Z		*/
+	  {  { 0xFF40 }, { 0,1,0 }  },  /* FULL GRAVE ACC.	*/
+	  {  { 0xFF5A }, { 0,1,0 }  },  /* FULL z		*/
+	  {  { 0xFF5E }, { 0,1,0 }  },  /* FULL ~ (tilde)	*/
+	  {  { 0xFF61 }, { 0,1,0 }  },  /* HALF IDEO.STOP. .	*/
+	  {  { 0xFF65 }, { 0,1,0 }  },  /* HALF KATA MID.DOT	*/
+	  {  { 0xFF66 }, { 0,1,0 }  },  /* HALF KATA WO	*/
+	  {  { 0xFF6F }, { 0,1,0 }  },  /* HALF KATA tu	*/
+	  {  { 0xFF70 }, { 0,1,0 }  },  /* HALF KATA PL -	*/
+	  {  { 0xFF71 }, { 0,1,0 }  },  /* HALF KATA A	*/
+	  {  { 0xFF9E }, { 0,1,0 }  },  /* HALF KATA MI	*/
+	  { .is_last = 1 }		  /* Last element.  */
+	}
+    },
+    {	TST_ISW_REC(end, cntrl) }
+};

+ 667 - 0
test/locale-mbwc/dat_iswctype.c

@@ -0,0 +1,667 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswctype.c
+ *
+ *	 ISWCTYPE:  int iswctype( wint_t wc, wctype_t charclass );
+ */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <wctype.h>
+#include "tst_types.h"
+#include "tgn_locdef.h"
+
+/*
+ *  NOTE:
+ *   Set ret_flg = 1, when a return value is expected to be 0 (FALSE).
+ *   Set ret_flg = 0, when a return value is expected to be non-zero (TRUE).
+ *
+ *   Since the functions return *non*-zero value for TRUE, can't
+ *   compare an actual return value with an expected return value.
+ *   Set the ret_flg=0 for TRUE cases and the tst_isw*() will check
+ *   the non-zero value.
+ *
+ * { { WEOF }, { 0,1,0 } },
+ *		   | |
+ *		   | ret_val: an expected return value
+ *		   ret_flg: if 1, compare an actual return value with the
+ *			    ret_val; if 0, the test program checks
+ *			    the actual return value.
+ */
+
+TST_ISWCTYPE tst_iswctype_loc [] = {
+  {
+    { Tiswctype, TST_LOC_de },
+    {
+      {	 { 0x009F, "alnum"  }, { 0,1,0 }  },	   /* CTRL     */
+      {	 { 0x00A0, "alnum"  }, { 0,1,0 }  },	   /* NB SPACE */
+      {	 { 0x00A1, "alnum"  }, { 0,1,0 }  },	   /* UD !     */
+      {	 { 0x00B1, "alnum"  }, { 0,1,0 }  },	   /* +- sign  */
+      {	 { 0x00B3, "alnum"  }, { 0,1,0 }  },	   /* SUP 3    */
+      {	 { 0x00B4, "alnum"  }, { 0,1,0 }  },	   /* ACUTE    */
+      {	 { 0x00BB, "alnum"  }, { 0,1,0 }  },	   /* >>       */
+      {	 { 0x00BE, "alnum"  }, { 0,1,0 }  },	   /* 3/4      */
+      {	 { 0x00BF, "alnum"  }, { 0,1,0 }  },	   /* UD ?     */
+      {	 { 0x00C0, "alnum"  }, { 0,0,0 }  },	   /* A Grave  */
+      {	 { 0x00D6, "alnum"  }, { 0,0,0 }  },	   /* O dia    */
+      {	 { 0x00D7, "alnum"  }, { 0,1,0 }  },	   /* multipl. */
+      {	 { 0x00D8, "alnum"  }, { 0,0,0 }  },	   /* O stroke */
+      {	 { 0x00DF, "alnum"  }, { 0,0,0 }  },	   /* small Sh */
+      {	 { 0x00E0, "alnum"  }, { 0,0,0 }  },	   /* a grave  */
+      {	 { 0x00F6, "alnum"  }, { 0,0,0 }  },	   /* o dia    */
+      {	 { 0x00F7, "alnum"  }, { 0,1,0 }  },	   /* division */
+      {	 { 0x00F8, "alnum"  }, { 0,0,0 }  },	   /* o stroke */
+      {	 { 0x00FF, "alnum"  }, { 0,0,0 }  },	   /* y dia    */
+      {	 { 0x0080, "alpha"  }, { 0,1,0 }  },	   /* CTRL     */
+      {	 { 0x00A0, "alpha"  }, { 0,1,0 }  },	   /* NB SPACE */
+      {	 { 0x00A1, "alpha"  }, { 0,1,0 }  },	   /* UD !     */
+      {	 { 0x00B1, "alpha"  }, { 0,1,0 }  },	   /* +- sign  */
+      {	 { 0x00B4, "alpha"  }, { 0,1,0 }  },	   /* ACUTE    */
+      {	 { 0x00B8, "alpha"  }, { 0,1,0 }  },	   /* CEDILLA  */
+      {	 { 0x00B9, "alpha"  }, { 0,1,0 }  },	   /* SUP 1    */
+      {	 { 0x00BB, "alpha"  }, { 0,1,0 }  },	   /* >>       */
+      {	 { 0x00BE, "alpha"  }, { 0,1,0 }  },	   /* 3/4      */
+      {	 { 0x00BF, "alpha"  }, { 0,1,0 }  },	   /* UD ?     */
+      {	 { 0x00C0, "alpha"  }, { 0,0,0 }  },	   /* A Grave  */
+      {	 { 0x00D6, "alpha"  }, { 0,0,0 }  },	   /* O dia    */
+      {	 { 0x00D7, "alpha"  }, { 0,1,0 }  },	   /* multipl. */
+      {	 { 0x00D8, "alpha"  }, { 0,0,0 }  },	   /* O stroke */
+      {	 { 0x00DF, "alpha"  }, { 0,0,0 }  },	   /* small Sh */
+      {	 { 0x00E0, "alpha"  }, { 0,0,0 }  },	   /* a grave  */
+      {	 { 0x00F6, "alpha"  }, { 0,0,0 }  },	   /* o dia    */
+      {	 { 0x00F7, "alpha"  }, { 0,1,0 }  },	   /* division */
+      {	 { 0x00F8, "alpha"  }, { 0,0,0 }  },	   /* o stroke */
+      {	 { 0x00FF, "alpha"  }, { 0,0,0 }  },	   /* y dia    */
+      {	 { 0x0080, "cntrl"  }, { 0,0,0 }  },	   /* CTRL     */
+      {	 { 0x009F, "cntrl"  }, { 0,0,0 }  },	   /* CTRL     */
+      {	 { 0x00A0, "cntrl"  }, { 0,1,0 }  },	   /* NB SPACE */
+      {	 { 0x00F6, "cntrl"  }, { 0,1,0 }  },	   /* o dia    */
+      {	 { 0x00FF, "cntrl"  }, { 0,1,0 }  },	   /* y dia    */
+      {	 { 0x00B9, "digit"  }, { 0,1,0 }  },	   /* SUP 1    */
+      {	 { 0x00BE, "digit"  }, { 0,1,0 }  },	   /* 3/4      */
+      {	 { 0x009F, "graph"  }, { 0,1,0 }  },	   /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x00A0, "graph"  }, { 0,1,0 }  },	   /* NB SPACE */
+#else
+      {	 { 0x00A0, "graph"  }, { 0,0,0 }  },	   /* NB SPACE */
+#endif
+      {	 { 0x00A1, "graph"  }, { 0,0,0 }  },	   /* UD !     */
+      {	 { 0x00B1, "graph"  }, { 0,0,0 }  },	   /* +- sign  */
+      {	 { 0x00B3, "graph"  }, { 0,0,0 }  },	   /* SUP 3    */
+      {	 { 0x00B4, "graph"  }, { 0,0,0 }  },	   /* ACUTE    */
+      {	 { 0x00BB, "graph"  }, { 0,0,0 }  },	   /* >>       */
+      {	 { 0x00BE, "graph"  }, { 0,0,0 }  },	   /* 3/4      */
+      {	 { 0x00C0, "graph"  }, { 0,0,0 }  },	   /* A Grave  */
+      {	 { 0x00D6, "graph"  }, { 0,0,0 }  },	   /* O dia    */
+      {	 { 0x00D7, "graph"  }, { 0,0,0 }  },	   /* multipl. */
+      {	 { 0x00D8, "graph"  }, { 0,0,0 }  },	   /* O stroke */
+      {	 { 0x00DF, "graph"  }, { 0,0,0 }  },	   /* small Sh */
+      {	 { 0x00F7, "graph"  }, { 0,0,0 }  },	   /* division */
+      {	 { 0x00F8, "graph"  }, { 0,0,0 }  },	   /* o stroke */
+      {	 { 0x00FF, "graph"  }, { 0,0,0 }  },	   /* y dia    */
+      {	 { 0x009F, "print"  }, { 0,1,0 }  },	   /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x00A0, "print"  }, { 0,1,0 }  },	   /* NB SPACE */
+#else
+      {	 { 0x00A0, "print"  }, { 0,0,0 }  },	   /* NB SPACE */
+#endif
+      {	 { 0x00A1, "print"  }, { 0,0,0 }  },	   /* UD !     */
+      {	 { 0x00B1, "print"  }, { 0,0,0 }  },	   /* +- sign  */
+      {	 { 0x00B4, "print"  }, { 0,0,0 }  },	   /* ACUTE    */
+      {	 { 0x00B8, "print"  }, { 0,0,0 }  },	   /* CEDILLA  */
+      {	 { 0x00B9, "print"  }, { 0,0,0 }  },	   /* SUP 1    */
+      {	 { 0x00BB, "print"  }, { 0,0,0 }  },	   /* >>       */
+      {	 { 0x00BE, "print"  }, { 0,0,0 }  },	   /* 3/4      */
+      {	 { 0x00C0, "print"  }, { 0,0,0 }  },	   /* A Grave  */
+      {	 { 0x00DF, "print"  }, { 0,0,0 }  },	   /* small Sh */
+      {	 { 0x00F6, "print"  }, { 0,0,0 }  },	   /* o dia    */
+      {	 { 0x00F7, "print"  }, { 0,0,0 }  },	   /* division */
+      {	 { 0x00F8, "print"  }, { 0,0,0 }  },	   /* o stroke */
+      {	 { 0x00FF, "print"  }, { 0,0,0 }  },	   /* y dia    */
+      {	 { 0x009F, "punct"  }, { 0,1,0 }  },	   /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x00A0, "punct"  }, { 0,1,0 }  },	   /* NB SPACE */
+#else
+      {	 { 0x00A0, "punct"  }, { 0,0,0 }  },	   /* NB SPACE */
+#endif
+      {	 { 0x00A1, "punct"  }, { 0,0,0 }  },	   /* UD !     */
+      {	 { 0x00B0, "punct"  }, { 0,0,0 }  },	   /* Degree   */
+      {	 { 0x00B1, "punct"  }, { 0,0,0 }  },	   /* +- sign  */
+      {	 { 0x00B2, "punct"  }, { 0,0,0 }  },	   /* SUP 2    */
+      {	 { 0x00B3, "punct"  }, { 0,0,0 }  },	   /* SUP 3    */
+      {	 { 0x00B4, "punct"  }, { 0,0,0 }  },	   /* ACUTE    */
+      {	 { 0x00B8, "punct"  }, { 0,0,0 }  },	   /* CEDILLA  */
+      {	 { 0x00B9, "punct"  }, { 0,0,0 }  },	   /* SUP 1    */
+      {	 { 0x00BB, "punct"  }, { 0,0,0 }  },	   /* >>       */
+      {	 { 0x00BC, "punct"  }, { 0,0,0 }  },	   /* 1/4      */
+      {	 { 0x00BD, "punct"  }, { 0,0,0 }  },	   /* 1/2      */
+      {	 { 0x00BE, "punct"  }, { 0,0,0 }  },	   /* 3/4      */
+      {	 { 0x00BF, "punct"  }, { 0,0,0 }  },	   /* UD ?     */
+      {	 { 0x00C0, "punct"  }, { 0,1,0 }  },	   /* A Grave  */
+      {	 { 0x00D7, "punct"  }, { 0,0,0 }  },	   /* multipl. */
+      {	 { 0x00DF, "punct"  }, { 0,1,0 }  },	   /* small Sh */
+      {	 { 0x00F6, "punct"  }, { 0,1,0 }  },	   /* o dia    */
+      {	 { 0x00F7, "punct"  }, { 0,0,0 }  },	   /* division */
+      {	 { 0x00FF, "punct"  }, { 0,1,0 }  },	   /* y dia    */
+      {	 { 0x009F, "space"  }, { 0,1,0 }  },	   /* CTRL     */
+      {	 { 0x00A0, "space"  }, { 0,1,0 }  },	   /* NB SPACE */
+      {	 { 0x00A1, "space"  }, { 0,1,0 }  },	   /* UD !     */
+      {	 { 0x00B1, "space"  }, { 0,1,0 }  },	   /* +- sign  */
+      {	 { 0x00F8, "space"  }, { 0,1,0 }  },	   /* o stroke */
+      {	 { 0x00B3, "lower"  }, { 0,1,0 }  },	   /* SUP 3    */
+      {	 { 0x00B8, "lower"  }, { 0,1,0 }  },	   /* CEDILLA  */
+      {	 { 0x00BE, "lower"  }, { 0,1,0 }  },	   /* 3/4      */
+      {	 { 0x00C0, "lower"  }, { 0,1,0 }  },	   /* A Grave  */
+      {	 { 0x00D6, "lower"  }, { 0,1,0 }  },	   /* O dia    */
+      {	 { 0x00D8, "lower"  }, { 0,1,0 }  },	   /* O stroke */
+      {	 { 0x00DF, "lower"  }, { 0,0,0 }  },	   /* small Sh */
+      {	 { 0x00E0, "lower"  }, { 0,0,0 }  },	   /* a grave  */
+      {	 { 0x00F6, "lower"  }, { 0,0,0 }  },	   /* o dia    */
+      {	 { 0x00F7, "lower"  }, { 0,1,0 }  },	   /* division */
+      {	 { 0x00F8, "lower"  }, { 0,0,0 }  },	   /* o stroke */
+      {	 { 0x00FF, "lower"  }, { 0,0,0 }  },	   /* y dia    */
+      {	 { 0x00B4, "upper"  }, { 0,1,0 }  },	   /* ACUTE    */
+      {	 { 0x00B8, "upper"  }, { 0,1,0 }  },	   /* CEDILLA  */
+      {	 { 0x00B9, "upper"  }, { 0,1,0 }  },	   /* SUP 1    */
+      {	 { 0x00BE, "upper"  }, { 0,1,0 }  },	   /* 3/4      */
+      {	 { 0x00BF, "upper"  }, { 0,1,0 }  },	   /* UD ?     */
+      {	 { 0x00C0, "upper"  }, { 0,0,0 }  },	   /* A Grave  */
+      {	 { 0x00D6, "upper"  }, { 0,0,0 }  },	   /* O dia    */
+      {	 { 0x00D7, "upper"  }, { 0,1,0 }  },	   /* multipl. */
+      {	 { 0x00D8, "upper"  }, { 0,0,0 }  },	   /* O stroke */
+      {	 { 0x00DF, "upper"  }, { 0,1,0 }  },	   /* small Sh */
+      {	 { 0x00FF, "upper"  }, { 0,1,0 }  },	   /* y dia    */
+      {	 { 0x00B9, "xdigit" }, { 0,1,0 }  },	   /* SUP 1    */
+      {	 { 0x00BC, "xdigit" }, { 0,1,0 }  },	   /* 1/4      */
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tiswctype, TST_LOC_enUS },
+    {
+      {	 { WEOF,   "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0000, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x001F, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0020, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0021, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x002F, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0030, "alnum"  }, { 0,0,0 }  },
+      {	 { 0x0039, "alnum"  }, { 0,0,0 }  },
+      {	 { 0x003A, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0040, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0041, "alnum"  }, { 0,0,0 }  },
+      {	 { 0x005A, "alnum"  }, { 0,0,0 }  },
+      {	 { 0x005B, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0060, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0061, "alnum"  }, { 0,0,0 }  },
+      {	 { 0x007A, "alnum"  }, { 0,0,0 }  },
+      {	 { 0x007B, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x007E, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x007F, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0080, "alnum"  }, { 0,1,0 }  },
+      {	 { 0x0000, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x001F, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0020, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0021, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x002F, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0030, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0039, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x003A, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0040, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0041, "alpha"  }, { 0,0,0 }  },
+      {	 { 0x005A, "alpha"  }, { 0,0,0 }  },
+      {	 { 0x005B, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0060, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0061, "alpha"  }, { 0,0,0 }  },
+      {	 { 0x007A, "alpha"  }, { 0,0,0 }  },
+      {	 { 0x007B, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x007E, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x007F, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0080, "alpha"  }, { 0,1,0 }  },
+      {	 { 0x0009, "blank"  }, { 0,0,0 }  },
+      {	 { 0x000B, "blank"  }, { 0,1,0 }  },
+      {	 { 0x0020, "blank"  }, { 0,0,0 }  },
+      {	 { 0x0000, "cntrl"  }, { 0,0,0 }  },
+      {	 { 0x001F, "cntrl"  }, { 0,0,0 }  },
+      {	 { 0x0020, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0021, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x002F, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0030, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0039, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x003A, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0040, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0041, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x005A, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x005B, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0060, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x0061, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x007A, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x007B, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x007E, "cntrl"  }, { 0,1,0 }  },
+      {	 { 0x007F, "cntrl"  }, { 0,0,0 }  },
+      {	 { 0x0080, "cntrl"  }, { 0,0,0 }  },
+      {	 { 0x0000, "digit"  }, { 0,1,0 }  },
+      {	 { 0x001F, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0020, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0021, "digit"  }, { 0,1,0 }  },
+      {	 { 0x002F, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0030, "digit"  }, { 0,0,0 }  },
+      {	 { 0x0039, "digit"  }, { 0,0,0 }  },
+      {	 { 0x003A, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0040, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0041, "digit"  }, { 0,1,0 }  },
+      {	 { 0x005A, "digit"  }, { 0,1,0 }  },
+      {	 { 0x005B, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0060, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0061, "digit"  }, { 0,1,0 }  },
+      {	 { 0x007A, "digit"  }, { 0,1,0 }  },
+      {	 { 0x007B, "digit"  }, { 0,1,0 }  },
+      {	 { 0x007E, "digit"  }, { 0,1,0 }  },
+      {	 { 0x007F, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0080, "digit"  }, { 0,1,0 }  },
+      {	 { 0x0000, "graph"  }, { 0,1,0 }  },
+      {	 { 0x001F, "graph"  }, { 0,1,0 }  },
+      {	 { 0x0020, "graph"  }, { 0,1,0 }  },
+      {	 { 0x0021, "graph"  }, { 0,0,0 }  },
+      {	 { 0x002F, "graph"  }, { 0,0,0 }  },
+      {	 { 0x0030, "graph"  }, { 0,0,0 }  },
+      {	 { 0x0039, "graph"  }, { 0,0,0 }  },
+      {	 { 0x003A, "graph"  }, { 0,0,0 }  },
+      {	 { 0x0040, "graph"  }, { 0,0,0 }  },
+      {	 { 0x0041, "graph"  }, { 0,0,0 }  },
+      {	 { 0x005A, "graph"  }, { 0,0,0 }  },
+      {	 { 0x005B, "graph"  }, { 0,0,0 }  },
+      {	 { 0x0060, "graph"  }, { 0,0,0 }  },
+      {	 { 0x0061, "graph"  }, { 0,0,0 }  },
+      {	 { 0x007A, "graph"  }, { 0,0,0 }  },
+      {	 { 0x007B, "graph"  }, { 0,0,0 }  },
+      {	 { 0x007E, "graph"  }, { 0,0,0 }  },
+      {	 { 0x007F, "graph"  }, { 0,1,0 }  },
+      {	 { 0x0080, "graph"  }, { 0,1,0 }  },
+      {	 { 0x0000, "print"  }, { 0,1,0 }  },
+      {	 { 0x001F, "print"  }, { 0,1,0 }  },
+      {	 { 0x0020, "print"  }, { 0,0,0 }  },
+      {	 { 0x0021, "print"  }, { 0,0,0 }  },
+      {	 { 0x002F, "print"  }, { 0,0,0 }  },
+      {	 { 0x0030, "print"  }, { 0,0,0 }  },
+      {	 { 0x0039, "print"  }, { 0,0,0 }  },
+      {	 { 0x003A, "print"  }, { 0,0,0 }  },
+      {	 { 0x0040, "print"  }, { 0,0,0 }  },
+      {	 { 0x0041, "print"  }, { 0,0,0 }  },
+      {	 { 0x005A, "print"  }, { 0,0,0 }  },
+      {	 { 0x005B, "print"  }, { 0,0,0 }  },
+      {	 { 0x0060, "print"  }, { 0,0,0 }  },
+      {	 { 0x0061, "print"  }, { 0,0,0 }  },
+      {	 { 0x007A, "print"  }, { 0,0,0 }  },
+      {	 { 0x007B, "print"  }, { 0,0,0 }  },
+      {	 { 0x007E, "print"  }, { 0,0,0 }  },
+      {	 { 0x007F, "print"  }, { 0,1,0 }  },
+      {	 { 0x0080, "print"  }, { 0,1,0 }  },
+      {	 { 0x0000, "punct"  }, { 0,1,0 }  },
+      {	 { 0x001F, "punct"  }, { 0,1,0 }  },
+      {	 { 0x0020, "punct"  }, { 0,1,0 }  },
+      {	 { 0x0021, "punct"  }, { 0,0,0 }  },
+      {	 { 0x002F, "punct"  }, { 0,0,0 }  },
+      {	 { 0x0030, "punct"  }, { 0,1,0 }  },
+      {	 { 0x0039, "punct"  }, { 0,1,0 }  },
+      {	 { 0x003A, "punct"  }, { 0,0,0 }  },
+      {	 { 0x0040, "punct"  }, { 0,0,0 }  },
+      {	 { 0x0041, "punct"  }, { 0,1,0 }  },
+      {	 { 0x005A, "punct"  }, { 0,1,0 }  },
+      {	 { 0x005B, "punct"  }, { 0,0,0 }  },
+      {	 { 0x0060, "punct"  }, { 0,0,0 }  },
+      {	 { 0x0061, "punct"  }, { 0,1,0 }  },
+      {	 { 0x007A, "punct"  }, { 0,1,0 }  },
+      {	 { 0x007B, "punct"  }, { 0,0,0 }  },
+      {	 { 0x007E, "punct"  }, { 0,0,0 }  },
+      {	 { 0x007F, "punct"  }, { 0,1,0 }  },
+      {	 { 0x0080, "punct"  }, { 0,1,0 }  },
+      {	 { 0x0000, "space"  }, { 0,1,0 }  },
+      {	 { 0x001F, "space"  }, { 0,1,0 }  },
+      {	 { 0x0020, "space"  }, { 0,0,0 }  },
+      {	 { 0x0021, "space"  }, { 0,1,0 }  },
+      {	 { 0x002F, "space"  }, { 0,1,0 }  },
+      {	 { 0x007E, "space"  }, { 0,1,0 }  },
+      {	 { 0x007F, "space"  }, { 0,1,0 }  },
+      {	 { 0x0080, "space"  }, { 0,1,0 }  },
+      {	 { 0x0000, "lower"  }, { 0,1,0 }  },
+      {	 { 0x001F, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0020, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0021, "lower"  }, { 0,1,0 }  },
+      {	 { 0x002F, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0030, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0039, "lower"  }, { 0,1,0 }  },
+      {	 { 0x003A, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0040, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0041, "lower"  }, { 0,1,0 }  },
+      {	 { 0x005A, "lower"  }, { 0,1,0 }  },
+      {	 { 0x005B, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0060, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0061, "lower"  }, { 0,0,0 }  },
+      {	 { 0x007A, "lower"  }, { 0,0,0 }  },
+      {	 { 0x007B, "lower"  }, { 0,1,0 }  },
+      {	 { 0x007E, "lower"  }, { 0,1,0 }  },
+      {	 { 0x007F, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0080, "lower"  }, { 0,1,0 }  },
+      {	 { 0x0000, "upper"  }, { 0,1,0 }  },
+      {	 { 0x001F, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0020, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0021, "upper"  }, { 0,1,0 }  },
+      {	 { 0x002F, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0030, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0039, "upper"  }, { 0,1,0 }  },
+      {	 { 0x003A, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0040, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0041, "upper"  }, { 0,0,0 }  },
+      {	 { 0x005A, "upper"  }, { 0,0,0 }  },
+      {	 { 0x005B, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0060, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0061, "upper"  }, { 0,1,0 }  },
+      {	 { 0x007A, "upper"  }, { 0,1,0 }  },
+      {	 { 0x007B, "upper"  }, { 0,1,0 }  },
+      {	 { 0x007E, "upper"  }, { 0,1,0 }  },
+      {	 { 0x007F, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0080, "upper"  }, { 0,1,0 }  },
+      {	 { 0x0000, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x001F, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0020, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0021, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x002F, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0030, "xdigit" }, { 0,0,0 }  },
+      {	 { 0x0039, "xdigit" }, { 0,0,0 }  },
+      {	 { 0x003A, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0040, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0041, "xdigit" }, { 0,0,0 }  },
+      {	 { 0x005A, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x005B, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0060, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0061, "xdigit" }, { 0,0,0 }  },
+      {	 { 0x007A, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x007B, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x007E, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x007F, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0080, "xdigit" }, { 0,1,0 }  },
+      {	 { 0x0061, "xxxxxx" }, { 0,1,0 }  },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Tiswctype, TST_LOC_eucJP },
+#else
+    { Tiswctype, TST_LOC_ja_UTF8 },
+#endif
+    {
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3029, "alnum"  }, { 0,1,0 }  },	   /* Hangzhou NUM9	 */
+#else
+      {	 { 0x3029, "alnum"  }, { 0,0,0 }  },	   /* Hangzhou NUM9	 */
+#endif
+      {	 { 0xFE4F, "alnum"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0xFF19, "alnum"  }, { 0,0,0 }  },	   /* FULL 9		 */
+      {	 { 0xFF20, "alnum"  }, { 0,1,0 }  },	   /* FULL @		 */
+      {	 { 0xFF3A, "alnum"  }, { 0,0,0 }  },	   /* FULL Z		 */
+      {	 { 0xFF40, "alnum"  }, { 0,1,0 }  },	   /* FULL GRAVE ACC.	 */
+      {	 { 0xFF5A, "alnum"  }, { 0,0,0 }  },	   /* FULL z		 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0xFF71, "alnum"  }, { 0,1,0 }  },	   /* HALF KATA A	 */
+#else
+      {	 { 0xFF71, "alnum"  }, { 0,0,0 }  },	   /* HALF KATA A	 */
+#endif
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3029, "alpha"  }, { 0,1,0 }  },	   /* Hangzhou NUM9	 */
+#else
+      {	 { 0x3029, "alpha"  }, { 0,0,0 }  },	   /* Hangzhou NUM9	 */
+#endif
+      {	 { 0xFE4F, "alpha"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0xFF19, "alpha"  }, { 0,1,0 }  },	   /* FULL 9		 */
+#else
+      {	 { 0xFF19, "alpha"  }, { 0,0,0 }  },	   /* FULL 9		 */
+#endif
+      {	 { 0xFF20, "alpha"  }, { 0,1,0 }  },	   /* FULL @		 */
+      {	 { 0xFF3A, "alpha"  }, { 0,0,0 }  },	   /* FULL Z		 */
+      {	 { 0xFF40, "alpha"  }, { 0,1,0 }  },	   /* FULL GRAVE ACC.	 */
+      {	 { 0xFF5A, "alpha"  }, { 0,0,0 }  },	   /* FULL z		 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0xFF71, "alpha"  }, { 0,1,0 }  },	   /* HALF KATA A	 */
+#else
+      {	 { 0xFF71, "alpha"  }, { 0,0,0 }  },	   /* HALF KATA A	 */
+#endif
+      {	 { 0x0080, "cntrl"  }, { 0,0,0 }  },	   /* CNTRL		 */
+      {	 { 0x3000, "cntrl"  }, { 0,1,0 }  },	   /* IDEO. SPACE	 */
+      {	 { 0x3029, "digit"  }, { 0,1,0 }  },	   /* Hangzhou NUM9	 */
+      {	 { 0x32CB, "digit"  }, { 0,1,0 }  },	   /* IDEO.TEL.SYM.DEC12 */
+      /* 21: */
+      {	 { 0x33FE, "digit"  }, { 0,1,0 }  },	   /* CJK IDEO.TEL.31th	 */
+      {	 { 0xFF19, "digit"  }, { 0,1,0 }  },	   /* FULL 9		 */
+      {	 { 0x3000, "graph"  }, { 0,1,0 }  },	   /* IDEO. SPACE	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3020, "graph"  }, { 0,1,0 }  },	   /* POSTAL MARK FACE	 */
+      {	 { 0x3029, "graph"  }, { 0,1,0 }  },	   /* Hangzhou NUM9	 */
+      {	 { 0x302F, "graph"  }, { 0,1,0 }  },	   /* Diacritics(Hangul) */
+      {	 { 0x3037, "graph"  }, { 0,1,0 }  },	   /* Separator Symbol	 */
+      {	 { 0x303F, "graph"  }, { 0,1,0 }  },	   /* IDEO. HALF SPACE	 */
+#else
+      {	 { 0x3020, "graph"  }, { 0,0,0 }  },	   /* POSTAL MARK FACE	 */
+      {	 { 0x3029, "graph"  }, { 0,0,0 }  },	   /* Hangzhou NUM9	 */
+      {	 { 0x302F, "graph"  }, { 0,0,0 }  },	   /* Diacritics(Hangul) */
+      {	 { 0x3037, "graph"  }, { 0,0,0 }  },	   /* Separator Symbol	 */
+      {	 { 0x303F, "graph"  }, { 0,0,0 }  },	   /* IDEO. HALF SPACE	 */
+#endif
+      /* 29: */
+      {	 { 0x3041, "graph"  }, { 0,0,0 }  },	   /* HIRAGANA a	 */
+      /* Non jis: */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3094, "graph"  }, { 0,1,0 }  },	   /* HIRAGANA u"	 */
+#else
+      {	 { 0x3094, "graph"  }, { 0,0,0 }  },	   /* HIRAGANA u"	 */
+#endif
+      /* Non jis: */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3099, "graph"  }, { 0,1,0 }  },	   /* SOUND MARK	 */
+#else
+      {	 { 0x3099, "graph"  }, { 0,0,0 }  },	   /* SOUND MARK	 */
+#endif
+      {	 { 0x309E, "graph"  }, { 0,0,0 }  },	   /* ITERATION MARK	 */
+      /* 33: */
+      {	 { 0x30A1, "graph"  }, { 0,0,0 }  },	   /* KATAKANA a	 */
+      /* Non jis: */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x30FA, "graph"  }, { 0,1,0 }  },	   /* KATAKANA wo"	 */
+#else
+      {	 { 0x30FA, "graph"  }, { 0,0,0 }  },	   /* KATAKANA wo"	 */
+#endif
+      {	 { 0x30FB, "graph"  }, { 0,0,0 }  },	   /* KATAKANA MID.DOT	 */
+      {	 { 0x30FE, "graph"  }, { 0,0,0 }  },	   /* KATAKANA ITERATION */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3191, "graph"  }, { 0,1,0 }  },	   /* KANBUN REV.MARK	 */
+      {	 { 0x3243, "graph"  }, { 0,1,0 }  },	   /* IDEO. MARK (reach) */
+      {	 { 0x32CB, "graph"  }, { 0,1,0 }  },	   /* IDEO.TEL.SYM.DEC12 */
+      {	 { 0x32FE, "graph"  }, { 0,1,0 }  },	   /* MARU KATAKANA wo	 */
+      {	 { 0x33FE, "graph"  }, { 0,1,0 }  },	   /* CJK IDEO.TEL.31th	 */
+#else
+      {	 { 0x3191, "graph"  }, { 0,0,0 }  },	   /* KANBUN REV.MARK	 */
+      {	 { 0x3243, "graph"  }, { 0,0,0 }  },	   /* IDEO. MARK (reach) */
+      {	 { 0x32CB, "graph"  }, { 0,0,0 }  },	   /* IDEO.TEL.SYM.DEC12 */
+      {	 { 0x32FE, "graph"  }, { 0,0,0 }  },	   /* MARU KATAKANA wo	 */
+      {	 { 0x33FE, "graph"  }, { 0,0,0 }  },	   /* CJK IDEO.TEL.31th	 */
+#endif
+      {	 { 0x4E00, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x4E05, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x4E06, "graph"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#else
+      {	 { 0x4E06, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#endif
+      {	 { 0x4E07, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x4FFF, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x9000, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x9006, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x9007, "graph"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+      {	 { 0x9FA4, "graph"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#else
+      {	 { 0x9007, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.NON-J */
+      {	 { 0x9FA4, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#endif
+      /* 51 */
+      {	 { 0x9FA5, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      /* Non jis: */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0xFE4F, "graph"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.	 */
+#else
+      {	 { 0xFE4F, "graph"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#endif
+      {	 { 0xFF0F, "graph"  }, { 0,0,0 }  },	   /* FULL SLASH	 */
+      {	 { 0xFF19, "graph"  }, { 0,0,0 }  },	   /* FULL 9		 */
+      {	 { 0xFF20, "graph"  }, { 0,0,0 }  },	   /* FULL @		 */
+      {	 { 0xFF3A, "graph"  }, { 0,0,0 }  },	   /* FULL Z		 */
+      {	 { 0xFF40, "graph"  }, { 0,0,0 }  },	   /* FULL GRAVE ACC.	 */
+      {	 { 0xFF5A, "graph"  }, { 0,0,0 }  },	   /* FULL z		 */
+      {	 { 0xFF5E, "graph"  }, { 0,0,0 }  },	   /* FULL ~ (tilde)	 */
+      {	 { 0xFF61, "graph"  }, { 0,0,0 }  },	   /* HALF IDEO.STOP. .	 */
+      {	 { 0xFF65, "graph"  }, { 0,0,0 }  },	   /* HALF KATA MID.DOT	 */
+      {	 { 0xFF66, "graph"  }, { 0,0,0 }  },	   /* HALF KATA WO	 */
+      {	 { 0xFF6F, "graph"  }, { 0,0,0 }  },	   /* HALF KATA tu	 */
+      {	 { 0xFF70, "graph"  }, { 0,0,0 }  },	   /* HALF KATA PL -	 */
+      {	 { 0xFF71, "graph"  }, { 0,0,0 }  },	   /* HALF KATA A	 */
+      {	 { 0xFF9E, "graph"  }, { 0,0,0 }  },	   /* HALF KATA MI	 */
+      {	 { 0x3000, "print"  }, { 0,0,0 }  },	   /* IDEO. SPACE	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3020, "print"  }, { 0,1,0 }  },	   /* POSTAL MARK FACE	 */
+      {	 { 0x3029, "print"  }, { 0,1,0 }  },	   /* Hangzhou NUM9	 */
+      {	 { 0x302F, "print"  }, { 0,1,0 }  },	   /* Diacritics(Hangul) */
+      {	 { 0x3037, "print"  }, { 0,1,0 }  },	   /* Separator Symbol	 */
+#else
+      {	 { 0x3020, "print"  }, { 0,0,0 }  },	   /* POSTAL MARK FACE	 */
+      {	 { 0x3029, "print"  }, { 0,0,0 }  },	   /* Hangzhou NUM9	 */
+      {	 { 0x302F, "print"  }, { 0,0,0 }  },	   /* Diacritics(Hangul) */
+      {	 { 0x3037, "print"  }, { 0,0,0 }  },	   /* Separator Symbol	 */
+#endif
+      {	 { 0x4E00, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x4E05, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x4E06, "print"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#else
+      {	 { 0x4E06, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#endif
+      {	 { 0x4E07, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x4FFF, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x9000, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0x9006, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x9007, "print"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+      {	 { 0x9FA4, "print"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#else
+      {	 { 0x9007, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.NON-J */
+      {	 { 0x9FA4, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#endif
+      /* 81: */
+      {	 { 0x9FA5, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      /* Non jis: */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0xFE4F, "print"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.	 */
+#else
+      {	 { 0xFE4F, "print"  }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#endif
+      {	 { 0x3000, "punct"  }, { 0,1,0 }  },	   /* IDEO. SPACE	 */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3020, "punct"  }, { 0,1,0 }  },	   /* POSTAL MARK FACE	 */
+      {	 { 0x302F, "punct"  }, { 0,1,0 }  },	   /* Diacritics(Hangul) */
+      {	 { 0x3037, "punct"  }, { 0,1,0 }  },	   /* FEED Separator	 */
+      {	 { 0x303F, "punct"  }, { 0,1,0 }  },	   /* IDEO. HALF SPACE	 */
+#else
+      {	 { 0x3020, "punct"  }, { 0,0,0 }  },	   /* POSTAL MARK FACE	 */
+      {	 { 0x302F, "punct"  }, { 0,0,0 }  },	   /* Diacritics(Hangul) */
+      {	 { 0x3037, "punct"  }, { 0,0,0 }  },	   /* FEED Separator	 */
+      {	 { 0x303F, "punct"  }, { 0,0,0 }  },	   /* IDEO. HALF SPACE	 */
+#endif
+      {	 { 0x3041, "punct"  }, { 0,1,0 }  },	   /* HIRAGANA a	 */
+      {	 { 0x3094, "punct"  }, { 0,1,0 }  },	   /* HIRAGANA u"	 */
+      /* 90: */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3099, "punct"  }, { 0,1,0 }  },	   /* SOUND MARK	 */
+#else
+      {	 { 0x3099, "punct"  }, { 0,0,0 }  },	   /* SOUND MARK	 */
+#endif
+      {	 { 0x309E, "punct"  }, { 0,1,0 }  },	   /* ITERATION MARK	 */
+      {	 { 0x30A1, "punct"  }, { 0,1,0 }  },	   /* KATAKANA a	 */
+      {	 { 0x30FA, "punct"  }, { 0,1,0 }  },	   /* KATAKANA wo"	 */
+      {	 { 0x30FB, "punct"  }, { 0,0,0 }  },	   /* KATAKANA MID.DOT	 */
+      /* 95: */
+      {	 { 0x30FE, "punct"  }, { 0,1,0 }  },	   /* KATAKANA ITERATION */
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x3191, "punct"  }, { 0,1,0 }  },	   /* KANBUN REV.MARK	 */
+      {	 { 0x3243, "punct"  }, { 0,1,0 }  },	   /* IDEO. MARK (reach) */
+      {	 { 0x32CB, "punct"  }, { 0,1,0 }  },	   /* IDEO.TEL.SYM.DEC12 */
+      {	 { 0x32FE, "punct"  }, { 0,1,0 }  },	   /* MARU KATAKANA wo	 */
+      {	 { 0x33FE, "punct"  }, { 0,1,0 }  },	   /* CJK IDEO.TEL.31th	 */
+#else
+      {	 { 0x3191, "punct"  }, { 0,0,0 }  },	   /* KANBUN REV.MARK	 */
+      {	 { 0x3243, "punct"  }, { 0,0,0 }  },	   /* IDEO. MARK (reach) */
+      {	 { 0x32CB, "punct"  }, { 0,0,0 }  },	   /* IDEO.TEL.SYM.DEC12 */
+      {	 { 0x32FE, "punct"  }, { 0,0,0 }  },	   /* MARU KATAKANA wo	 */
+      {	 { 0x33FE, "punct"  }, { 0,0,0 }  },	   /* CJK IDEO.TEL.31th	 */
+#endif
+      {	 { 0x9007, "punct"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+      {	 { 0x9FA4, "punct"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+      {	 { 0x9FA5, "punct"  }, { 0,1,0 }  },	   /* CJK UNI.IDEO.	 */
+      {	 { 0xFF0F, "punct"  }, { 0,0,0 }  },	   /* FULL SLASH	 */
+      /* 105: */
+      {	 { 0xFF19, "punct"  }, { 0,1,0 }  },	   /* FULL 9		 */
+      {	 { 0xFF20, "punct"  }, { 0,0,0 }  },	   /* FULL @		 */
+      {	 { 0xFF3A, "punct"  }, { 0,1,0 }  },	   /* FULL Z		 */
+      {	 { 0xFF40, "punct"  }, { 0,0,0 }  },	   /* FULL GRAVE ACC.	 */
+      {	 { 0xFF5A, "punct"  }, { 0,1,0 }  },	   /* FULL z		 */
+      {	 { 0xFF5E, "punct"  }, { 0,0,0 }  },	   /* FULL ~ (tilde)	 */
+      {	 { 0xFF61, "punct"  }, { 0,0,0 }  },	   /* HALF IDEO.STOP. .	 */
+      {	 { 0xFF65, "punct"  }, { 0,0,0 }  },	   /* HALF KATA MID.DOT	 */
+      {	 { 0xFF70, "punct"  }, { 0,1,0 }  },	   /* HALF KATA PL -	 */
+      {	 { 0xFF9E, "punct"  }, { 0,1,0 }  },	   /* HALF KATA MI	 */
+      /* 115: */
+      {	 { 0x3000, "space"  }, { 0,0,0 }  },	   /* IDEO. SPACE	 */
+      {	 { 0x303F, "space"  }, { 0,1,0 }  },	   /* IDEO. HALF SPACE	 */
+      {	 { 0x3041, "lower"  }, { 0,1,0 }  },	   /* HIRAGANA a	 */
+      {	 { 0x3094, "lower"  }, { 0,1,0 }  },	   /* HIRAGANA u"	 */
+      {	 { 0x30A1, "lower"  }, { 0,1,0 }  },	   /* KATAKANA a	 */
+      {	 { 0x30FA, "lower"  }, { 0,1,0 }  },	   /* KATAKANA wo"	 */
+      {	 { 0xFF66, "lower"  }, { 0,1,0 }  },	   /* HALF KATA WO	 */
+      {	 { 0xFF6F, "lower"  }, { 0,1,0 }  },	   /* HALF KATA tu	 */
+      {	 { 0xFF70, "lower"  }, { 0,1,0 }  },	   /* HALF KATA PL -	 */
+      /* 124: */
+      {	 { 0xFF71, "lower"  }, { 0,1,0 }  },	   /* HALF KATA A	 */
+      {	 { 0xFF9E, "lower"  }, { 0,1,0 }  },	   /* HALF KATA MI	 */
+      {	 { 0xFF71, "upper"  }, { 0,1,0 }  },	   /* HALF KATA A	 */
+      {	 { 0xFF19, "xdigit" }, { 0,1,0 }  },	   /* FULL 9		 */
+      {	 { 0x3000, "jspace" }, { 0,0,0 }  },	   /* IDEO. SPACE	 */
+      /* Non jis? */
+      {	 { 0x303F, "jspace" }, { 0,1,0 }  },	   /* IDEO.HALF SPACE	 */
+      {	 { 0xFF19, "jdigit" }, { 0,0,0 }  },	   /* FULL 9		 */
+      {	 { 0x3041, "jhira"  }, { 0,0,0 }  },	   /* HIRAGANA a	 */
+      {	 { 0x3094, "jhira"  }, { 0,1,0 }  },	   /* HIRAGANA u"	 */
+      {	 { 0x30A1, "jkata"  }, { 0,0,0 }  },	   /* KATAKANA a	 */
+      /* Non jis: */
+      {	 { 0x30FA, "jkata"  }, { 0,1,0 }  },	   /* KATAKANA wo"	 */
+      {	 { 0xFF66, "jkata"  }, { 0,0,0 }  },	   /* HALF KATA WO	 */
+      {	 { 0xFF6F, "jkata"  }, { 0,0,0 }  },	   /* HALF KATA tu	 */
+      {	 { 0x4E05, "jkanji" }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+#ifdef SHOJI_IS_RIGHT
+      /* <NO_WAIVER>: */
+      {	 { 0x4E06, "jkanji" }, { 0,1,1 }  },	   /* CJK UNI.IDEO.NON-J */
+#else
+      /* XXX This character does not exist in EUC-JP.  */
+      {	 { 0x4E06, "jkanji" }, { 0,1,0 }  },	   /* CJK UNI.IDEO.NON-J */
+#endif
+      {	 { 0x4E07, "jkanji" }, { 0,0,0 }  },	   /* CJK UNI.IDEO.	 */
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tiswctype, TST_LOC_end }
+  }
+};
+
+
+/* dat_isw-funcs.c */

+ 125 - 0
test/locale-mbwc/dat_iswdigit.c

@@ -0,0 +1,125 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswdigit.c
+ *
+ *	 ISW*:	int iswdigit (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (DIGIT, digit) = {
+
+  {   TST_ISW_REC (de, digit)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+	{  { 0x00A1 }, { 0,1,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,1,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,1,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,1,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,1,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,1,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,1,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,1,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,1,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,1,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,1,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,1,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,1,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,1,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,1,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,1,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,1,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,1,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,1,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,1,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,1,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,1,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,1,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (enUS, digit)
+      {
+	{  { WEOF   }, { 0,1,0 }  },
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,1,0 }  },
+	{  { 0x0021 }, { 0,1,0 }  },
+	{  { 0x002F }, { 0,1,0 }  },
+	{  { 0x0030 }, { 0,0,0 }  },
+	{  { 0x0039 }, { 0,0,0 }  },
+	{  { 0x003A }, { 0,1,0 }  },
+	{  { 0x0040 }, { 0,1,0 }  },
+	{  { 0x0041 }, { 0,1,0 }  },
+	{  { 0x005A }, { 0,1,0 }  },
+	{  { 0x005B }, { 0,1,0 }  },
+	{  { 0x0060 }, { 0,1,0 }  },
+	{  { 0x0061 }, { 0,1,0 }  },
+	{  { 0x007A }, { 0,1,0 }  },
+	{  { 0x007B }, { 0,1,0 }  },
+	{  { 0x007E }, { 0,1,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  },
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC (eucJP, digit)
+#else
+  {   TST_ISW_REC (ja_UTF8, digit)
+#endif
+      {
+	{  { 0x3000 }, { 0,1,0 }  },	/* IDEO. SPACE	      */
+	{  { 0x3020 }, { 0,1,0 }  },	/* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,1,0 }  },	/* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,1,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,1,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,1,0 }  },	/* IDEO. HALF SPACE   */
+	{  { 0x3041 }, { 0,1,0 }  },	/* HIRAGANA a	      */
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */
+	{  { 0x3099 }, { 0,1,0 }  },	/* SOUND MARK	      */
+	{  { 0x309E }, { 0,1,0 }  },	/* ITERATION MARK     */
+	{  { 0x30A1 }, { 0,1,0 }  },	/* KATAKANA a	      */
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */
+	{  { 0x30FB }, { 0,1,0 }  },	/* KATAKANA MID.DOT   */
+	{  { 0x30FE }, { 0,1,0 }  },	/* KATAKANA ITERATION */
+	{  { 0x3191 }, { 0,1,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,1,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,1,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,1,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,1,0 }  },	/* CJK IDEO.TEL.31th  */
+	{  { 0x4E00 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E05 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E06 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x4E07 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4FFF }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9000 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9006 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9007 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA5 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0xFE4F }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0xFF0F }, { 0,1,0 }  },	/* FULL SLASH	      */
+	{  { 0xFF19 }, { 0,1,0 }  },	/* FULL 9	      */
+	{  { 0xFF20 }, { 0,1,0 }  },	/* FULL @	      */
+	{  { 0xFF3A }, { 0,1,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,1,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,1,0 }  },	/* FULL z	      */
+	{  { 0xFF5E }, { 0,1,0 }  },	/* FULL ~ (tilde)     */
+	{  { 0xFF61 }, { 0,1,0 }  },	/* HALF IDEO.STOP. .  */
+	{  { 0xFF65 }, { 0,1,0 }  },	/* HALF KATA MID.DOT  */
+	{  { 0xFF66 }, { 0,1,0 }  },	/* HALF KATA WO	      */
+	{  { 0xFF6F }, { 0,1,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF70 }, { 0,1,0 }  },	/* HALF KATA PL -     */
+	{  { 0xFF71 }, { 0,1,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,1,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, digit) }
+};

+ 167 - 0
test/locale-mbwc/dat_iswgraph.c

@@ -0,0 +1,167 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswgraph.c
+ *
+ *	 ISW*:	int iswgraph (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (GRAPH, graph) = {
+
+  {   TST_ISW_REC (de, graph)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+#else
+	{  { 0x00A0 }, { 0,0,0 }  },	/* NB SPACE */
+#endif
+	{  { 0x00A1 }, { 0,0,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,0,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,0,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,0,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,0,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,0,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,0,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,0,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,0,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,0,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,0,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,0,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,0,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,0,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,0,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,0,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,0,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,0,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,0,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,0,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,0,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,0,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,0,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (enUS, graph)
+      {
+	{  { WEOF   }, { 0,1,0 }  },
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,1,0 }  },
+	{  { 0x0021 }, { 0,0,0 }  },
+	{  { 0x002F }, { 0,0,0 }  },
+	{  { 0x0030 }, { 0,0,0 }  },
+	{  { 0x0039 }, { 0,0,0 }  },
+	{  { 0x003A }, { 0,0,0 }  },
+	{  { 0x0040 }, { 0,0,0 }  },
+	{  { 0x0041 }, { 0,0,0 }  },
+	{  { 0x005A }, { 0,0,0 }  },
+	{  { 0x005B }, { 0,0,0 }  },
+	{  { 0x0060 }, { 0,0,0 }  },
+	{  { 0x0061 }, { 0,0,0 }  },
+	{  { 0x007A }, { 0,0,0 }  },
+	{  { 0x007B }, { 0,0,0 }  },
+	{  { 0x007E }, { 0,0,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  }, /* 20 */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC( eucJP, graph )
+#else
+  {   TST_ISW_REC( ja_UTF8, graph )
+#endif
+      {
+	{  { 0x3000 }, { 0,1,0 }  },	/* IDEO. SPACE	      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3020 }, { 0,1,0 }  },	/* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,1,0 }  },	/* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,1,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,1,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,1,0 }  },	/* IDEO. HALF SPACE   */
+#else
+	{  { 0x3020 }, { 0,0,0 }  },	/* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,0,0 }  },	/* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,0,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,0,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,0,0 }  },	/* IDEO. HALF SPACE   */
+#endif
+	{  { 0x3041 }, { 0,0,0 }  },	/* HIRAGANA a	      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */  /* non jis */
+	{  { 0x3099 }, { 0,1,0 }  },	/* SOUND MARK	      */
+#else
+	{  { 0x3094 }, { 0,0,0 }  },	/* HIRAGANA u"	      */  /* non jis */
+	{  { 0x3099 }, { 0,0,0 }  },	/* SOUND MARK	      */
+#endif
+	{  { 0x309E }, { 0,0,0 }  },	/* ITERATION MARK     */  /* 10 */
+	{  { 0x30A1 }, { 0,0,0 }  },	/* KATAKANA a	      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */  /* non jis */
+#else
+	{  { 0x30FA }, { 0,0,0 }  },	/* KATAKANA wo"	      */  /* non jis */
+#endif
+	{  { 0x30FB }, { 0,0,0 }  },	/* KATAKANA MID.DOT   */
+	{  { 0x30FE }, { 0,0,0 }  },	/* KATAKANA ITERATION */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3191 }, { 0,1,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,1,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,1,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,1,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,1,0 }  },	/* CJK IDEO.TEL.31th  */
+#else
+	{  { 0x3191 }, { 0,0,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,0,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,0,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,0,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,0,0 }  },	/* CJK IDEO.TEL.31th  */
+#endif
+	{  { 0x4E00 }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */  /* 20 */
+	{  { 0x4E05 }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x4E06 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+#else
+	{  { 0x4E06 }, { 0,0,0 }  },	/* CJK UNI.IDEO.NON-J */
+#endif
+	{  { 0x4E07 }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4FFF }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9000 }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9006 }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x9007 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+#else
+	{  { 0x9007 }, { 0,0,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,0,0 }  },	/* CJK UNI.IDEO.NON-J */
+#endif
+	{  { 0x9FA5 }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0xFE4F }, { 0,1,0 }  },	/* CJK Wave Low Line  */  /* 30 */
+#else
+	{  { 0xFE4F }, { 0,0,0 }  },	/* CJK Wave Low Line  */  /* 30 */
+#endif
+	{  { 0xFF0F }, { 0,0,0 }  },	/* FULL SLASH	      */
+	{  { 0xFF19 }, { 0,0,0 }  },	/* FULL 9	      */
+	{  { 0xFF20 }, { 0,0,0 }  },	/* FULL @	      */
+	{  { 0xFF3A }, { 0,0,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,0,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,0,0 }  },	/* FULL z	      */
+	{  { 0xFF5E }, { 0,0,0 }  },	/* FULL ~ (tilde)     */
+	{  { 0xFF61 }, { 0,0,0 }  },	/* HALF IDEO.STOP. .  */
+	{  { 0xFF65 }, { 0,0,0 }  },	/* HALF KATA MID.DOT  */
+	{  { 0xFF66 }, { 0,0,0 }  },	/* HALF KATA WO	      */
+	{  { 0xFF6F }, { 0,0,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF70 }, { 0,0,0 }  },	/* HALF KATA PL -     */
+	{  { 0xFF71 }, { 0,0,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,0,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, graph) }
+};

+ 96 - 0
test/locale-mbwc/dat_iswlower.c

@@ -0,0 +1,96 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswlower.c
+ *
+ *	 ISW*:	int iswlower (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (LOWER, lower) = {
+
+  {   TST_ISW_REC (de, lower)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+	{  { 0x00A1 }, { 0,1,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,1,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,1,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,1,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,1,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,1,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,1,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,1,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,1,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,1,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,1,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,1,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,1,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,1,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,1,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,1,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,1,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,0,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,0,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,0,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,1,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,0,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,0,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (enUS, lower)
+      {
+	{  { WEOF   }, { 0,1,0 }  },
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,1,0 }  },
+	{  { 0x0021 }, { 0,1,0 }  },
+	{  { 0x002F }, { 0,1,0 }  },
+	{  { 0x0030 }, { 0,1,0 }  },
+	{  { 0x0039 }, { 0,1,0 }  },
+	{  { 0x003A }, { 0,1,0 }  },
+	{  { 0x0040 }, { 0,1,0 }  },
+	{  { 0x0041 }, { 0,1,0 }  },
+	{  { 0x005A }, { 0,1,0 }  },
+	{  { 0x005B }, { 0,1,0 }  },
+	{  { 0x0060 }, { 0,1,0 }  },
+	{  { 0x0061 }, { 0,0,0 }  },
+	{  { 0x007A }, { 0,0,0 }  },
+	{  { 0x007B }, { 0,1,0 }  },
+	{  { 0x007E }, { 0,1,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  },
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC (eucJP, lower)
+#else
+  {   TST_ISW_REC (ja_UTF8, lower)
+#endif
+      {
+	{  { 0x3000 }, { 0,1,0 }  },	/* IDEO. SPACE	      */
+	{  { 0x303F }, { 0,1,0 }  },	/* IDEO. HALF SPACE   */
+	{  { 0x3041 }, { 0,1,0 }  },	/* HIRAGANA a	      */
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */
+	{  { 0x3099 }, { 0,1,0 }  },	/* SOUND MARK	      */
+	{  { 0x309E }, { 0,1,0 }  },	/* ITERATION MARK     */
+	{  { 0x30A1 }, { 0,1,0 }  },	/* KATAKANA a	      */
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */
+	{  { 0xFF3A }, { 0,1,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,1,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,0,0 }  },	/* FULL z	      */
+	{  { 0xFF6F }, { 0,1,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF71 }, { 0,1,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,1,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, lower) }
+
+};

+ 170 - 0
test/locale-mbwc/dat_iswprint.c

@@ -0,0 +1,170 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *       FILE:  dat_iswprint.c
+ *
+ *       ISW*:  int iswprint (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (PRINT, print) = {
+
+  {   TST_ISW_REC (de, print)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },  /* CTRL     */
+	{  { 0x009F }, { 0,1,0 }  },  /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x00A0 }, { 0,1,0 }  },  /* NB SPACE */
+#else
+	{  { 0x00A0 }, { 0,0,0 }  },  /* NB SPACE */
+#endif
+	{  { 0x00A1 }, { 0,0,0 }  },  /* UD !     */
+	{  { 0x00B0 }, { 0,0,0 }  },  /* Degree   */
+	{  { 0x00B1 }, { 0,0,0 }  },  /* +- sign  */
+	{  { 0x00B2 }, { 0,0,0 }  },  /* SUP 2    */
+	{  { 0x00B3 }, { 0,0,0 }  },  /* SUP 3    */
+	{  { 0x00B4 }, { 0,0,0 }  },  /* ACUTE    */
+	{  { 0x00B8 }, { 0,0,0 }  },  /* CEDILLA  */
+	{  { 0x00B9 }, { 0,0,0 }  },  /* SUP 1    */
+	{  { 0x00BB }, { 0,0,0 }  },  /* >>       */
+	{  { 0x00BC }, { 0,0,0 }  },  /* 1/4      */
+	{  { 0x00BD }, { 0,0,0 }  },  /* 1/2      */
+	{  { 0x00BE }, { 0,0,0 }  },  /* 3/4      */
+	{  { 0x00BF }, { 0,0,0 }  },  /* UD ?     */
+	{  { 0x00C0 }, { 0,0,0 }  },  /* A Grave  */
+	{  { 0x00D6 }, { 0,0,0 }  },  /* O dia    */
+	{  { 0x00D7 }, { 0,0,0 }  },  /* multipl. */
+	{  { 0x00D8 }, { 0,0,0 }  },  /* O stroke */
+	{  { 0x00DF }, { 0,0,0 }  },  /* small Sh */
+	{  { 0x00E0 }, { 0,0,0 }  },  /* a grave  */
+	{  { 0x00F6 }, { 0,0,0 }  },  /* o dia    */
+	{  { 0x00F7 }, { 0,0,0 }  },  /* division */
+	{  { 0x00F8 }, { 0,0,0 }  },  /* o stroke */
+	{  { 0x00FF }, { 0,0,0 }  },  /* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (enUS, print)
+      {
+	{  { WEOF   }, { 0,1,0 }  }, /* 01 */
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,0,0 }  },
+	{  { 0x0021 }, { 0,0,0 }  },
+	{  { 0x002F }, { 0,0,0 }  },
+	{  { 0x0030 }, { 0,0,0 }  },
+	{  { 0x0039 }, { 0,0,0 }  },
+	{  { 0x003A }, { 0,0,0 }  },
+	{  { 0x0040 }, { 0,0,0 }  },
+	{  { 0x0041 }, { 0,0,0 }  },
+	{  { 0x005A }, { 0,0,0 }  },
+	{  { 0x005B }, { 0,0,0 }  },
+	{  { 0x0060 }, { 0,0,0 }  },
+	{  { 0x0061 }, { 0,0,0 }  },
+	{  { 0x007A }, { 0,0,0 }  },
+	{  { 0x007B }, { 0,0,0 }  },
+	{  { 0x007E }, { 0,0,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  }, /* 20 */
+#ifdef NO_WAIVER
+	{  { 0x3042 }, { 0,1,0 }  }, /* <WAIVER> */
+#endif
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC (eucJP, print)
+#else
+  {   TST_ISW_REC (ja_UTF8, print)
+#endif
+      {
+	{  { 0x3000 }, { 0,0,0 }  },  /* IDEO. SPACE        */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3020 }, { 0,1,0 }  },  /* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,1,0 }  },  /* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,1,0 }  },  /* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,1,0 }  },  /* Separator Symbol   */
+	{  { 0x303F }, { 0,1,0 }  },  /* IDEO. HALF SPACE   */
+#else
+	{  { 0x3020 }, { 0,0,0 }  },  /* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,0,0 }  },  /* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,0,0 }  },  /* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,0,0 }  },  /* Separator Symbol   */
+	{  { 0x303F }, { 0,0,0 }  },  /* IDEO. HALF SPACE   */
+#endif
+	{  { 0x3041 }, { 0,0,0 }  },  /* HIRAGANA a         */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3094 }, { 0,1,0 }  },  /* HIRAGANA u"        */  /* non jis */
+	{  { 0x3099 }, { 0,1,0 }  },  /* SOUND MARK         */
+#else
+	{  { 0x3094 }, { 0,0,0 }  },  /* HIRAGANA u"        */  /* non jis */
+	{  { 0x3099 }, { 0,0,0 }  },  /* SOUND MARK         */
+#endif
+	{  { 0x309E }, { 0,0,0 }  },  /* ITERATION MARK     */  /* 10 */
+	{  { 0x30A1 }, { 0,0,0 }  },  /* KATAKANA a         */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x30FA }, { 0,1,0 }  },  /* KATAKANA wo"       */  /* non jis */
+#else
+	{  { 0x30FA }, { 0,0,0 }  },  /* KATAKANA wo"       */  /* non jis */
+#endif
+	{  { 0x30FB }, { 0,0,0 }  },  /* KATAKANA MID.DOT   */
+	{  { 0x30FE }, { 0,0,0 }  },  /* KATAKANA ITERATION */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3191 }, { 0,1,0 }  },  /* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,1,0 }  },  /* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,1,0 }  },  /* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,1,0 }  },  /* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,1,0 }  },  /* CJK IDEO.TEL.31th  */
+#else
+	{  { 0x3191 }, { 0,0,0 }  },  /* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,0,0 }  },  /* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,0,0 }  },  /* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,0,0 }  },  /* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,0,0 }  },  /* CJK IDEO.TEL.31th  */
+#endif
+	{  { 0x4E00 }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */  /* 20 */
+	{  { 0x4E05 }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x4E06 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J */
+#else
+	{  { 0x4E06 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J */
+#endif
+	{  { 0x4E07 }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */
+	{  { 0x4FFF }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */
+	{  { 0x9000 }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */
+	{  { 0x9006 }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x9007 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,1,0 }  },  /* CJK UNI.IDEO.NON-J */
+#else
+	{  { 0x9007 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,0,0 }  },  /* CJK UNI.IDEO.NON-J */
+#endif
+	{  { 0x9FA5 }, { 0,0,0 }  },  /* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0xFE4F }, { 0,1,0 }  },  /* WAVE LOW LINE      */  /* 30 */
+#else
+	{  { 0xFE4F }, { 0,0,0 }  },  /* WAVE LOW LINE      */  /* 30 */
+#endif
+	{  { 0xFF0F }, { 0,0,0 }  },  /* FULL SLASH         */
+	{  { 0xFF19 }, { 0,0,0 }  },  /* FULL 9             */
+	{  { 0xFF20 }, { 0,0,0 }  },  /* FULL @             */
+	{  { 0xFF3A }, { 0,0,0 }  },  /* FULL Z             */
+	{  { 0xFF40 }, { 0,0,0 }  },  /* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,0,0 }  },  /* FULL z             */
+	{  { 0xFF5E }, { 0,0,0 }  },  /* FULL ~ (tilde)     */
+	{  { 0xFF61 }, { 0,0,0 }  },  /* HALF IDEO.STOP. .  */
+	{  { 0xFF65 }, { 0,0,0 }  },  /* HALF KATA MID.DOT  */
+	{  { 0xFF66 }, { 0,0,0 }  },  /* HALF KATA WO       */  /* 40 */
+	{  { 0xFF6F }, { 0,0,0 }  },  /* HALF KATA tu       */
+	{  { 0xFF70 }, { 0,0,0 }  },  /* HALF KATA PL -     */
+	{  { 0xFF71 }, { 0,0,0 }  },  /* HALF KATA A        */
+	{  { 0xFF9E }, { 0,0,0 }  },  /* HALF KATA MI       */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, print) }
+};

+ 155 - 0
test/locale-mbwc/dat_iswpunct.c

@@ -0,0 +1,155 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswpunct.c
+ *
+ *	 ISW*:	int iswpunct (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (PUNCT, punct) = {
+
+  {   TST_ISW_REC (de, punct)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+#else
+	{  { 0x00A0 }, { 0,0,0 }  },	/* NB SPACE */
+#endif
+	{  { 0x00A1 }, { 0,0,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,0,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,0,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,0,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,0,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,0,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,0,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,0,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,0,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,0,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,0,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,0,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,0,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,1,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,1,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,0,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,1,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,1,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,1,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,1,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,0,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,1,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,1,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (enUS, punct)
+      {
+	{  { WEOF   }, { 0,1,0 }  }, /* 01 */
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,1,0 }  },
+	{  { 0x0021 }, { 0,0,0 }  },
+	{  { 0x002F }, { 0,0,0 }  },
+	{  { 0x0030 }, { 0,1,0 }  },
+	{  { 0x0039 }, { 0,1,0 }  },
+	{  { 0x003A }, { 0,0,0 }  },
+	{  { 0x0040 }, { 0,0,0 }  },
+	{  { 0x0041 }, { 0,1,0 }  },
+	{  { 0x005A }, { 0,1,0 }  },
+	{  { 0x005B }, { 0,0,0 }  },
+	{  { 0x0060 }, { 0,0,0 }  },
+	{  { 0x0061 }, { 0,1,0 }  },
+	{  { 0x007A }, { 0,1,0 }  },
+	{  { 0x007B }, { 0,0,0 }  },
+	{  { 0x007E }, { 0,0,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  }, /* 20 */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC (eucJP, punct)
+#else
+  {   TST_ISW_REC (ja_UTF8, punct)
+#endif
+      {
+	{  { 0x3000 }, { 0,1,0 }  },	/* IDEO. SPACE	      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3020 }, { 0,1,0 }  },	/* POSTAL MARK FACE   */
+#else
+	{  { 0x3020 }, { 0,0,0 }  },	/* POSTAL MARK FACE   */
+#endif
+	{  { 0x3029 }, { 0,1,0 }  },	/* Hangzhou NUM9      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x302F }, { 0,1,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,1,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,1,0 }  },	/* IDEO. HALF SPACE   */
+#else
+	{  { 0x302F }, { 0,0,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,0,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,0,0 }  },	/* IDEO. HALF SPACE   */
+#endif
+	{  { 0x3041 }, { 0,1,0 }  },	/* HIRAGANA a	      */
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3099 }, { 0,1,0 }  },	/* SOUND MARK	      */
+#else
+	{  { 0x3099 }, { 0,0,0 }  },	/* SOUND MARK	      */
+#endif
+	{  { 0x309E }, { 0,1,0 }  },	/* ITERATION MARK     */  /* 10 */
+	{  { 0x30A1 }, { 0,1,0 }  },	/* KATAKANA a	      */
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */
+	{  { 0x30FB }, { 0,0,0 }  },	/* KATAKANA MID.DOT   */
+	{  { 0x30FE }, { 0,1,0 }  },	/* KATAKANA ITERATION */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0x3191 }, { 0,1,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,1,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,1,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,1,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,1,0 }  },	/* CJK IDEO.TEL.31th  */
+#else
+	{  { 0x3191 }, { 0,0,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,0,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,0,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,0,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,0,0 }  },	/* CJK IDEO.TEL.31th  */
+#endif
+	{  { 0x4E00 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */  /* 20 */
+	{  { 0x4E05 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E06 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x4E07 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4FFF }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9000 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9006 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9007 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA5 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+#ifdef SHOJI_IS_RIGHT
+	{  { 0xFE4F }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */  /* 30 */
+#else
+	{  { 0xFE4F }, { 0,0,0 }  },	/* CJK UNI.IDEO.      */  /* 30 */
+#endif
+	{  { 0xFF0F }, { 0,0,0 }  },	/* FULL SLASH	      */
+	{  { 0xFF19 }, { 0,1,0 }  },	/* FULL 9	      */
+	{  { 0xFF20 }, { 0,0,0 }  },	/* FULL @	      */
+	{  { 0xFF3A }, { 0,1,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,0,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,1,0 }  },	/* FULL z	      */
+	{  { 0xFF5E }, { 0,0,0 }  },	/* FULL ~ (tilde)     */
+	{  { 0xFF61 }, { 0,0,0 }  },	/* HALF IDEO.STOP. .  */
+	{  { 0xFF65 }, { 0,0,0 }  },	/* HALF KATA MID.DOT  */
+	{  { 0xFF66 }, { 0,1,0 }  },	/* HALF KATA WO	      */  /* 40 */
+	{  { 0xFF6F }, { 0,1,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF70 }, { 0,1,0 }  },	/* HALF KATA PL -     */
+	{  { 0xFF71 }, { 0,1,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,1,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, punct) }
+};

+ 129 - 0
test/locale-mbwc/dat_iswspace.c

@@ -0,0 +1,129 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswspace.c
+ *
+ *	 ISW*:	int iswspace (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (SPACE, space) = {
+
+  {   TST_ISW_REC (de, space)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+	{  { 0x00A1 }, { 0,1,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,1,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,1,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,1,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,1,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,1,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,1,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,1,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,1,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,1,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,1,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,1,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,1,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,1,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,1,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,1,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,1,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,1,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,1,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,1,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,1,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,1,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,1,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (enUS, space)
+      {
+	{  { WEOF   }, { 0,1,0 }  },
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x0008 }, { 0,1,0 }  },
+	{  { 0x0009 }, { 0,0,0 }  },
+	{  { 0x000D }, { 0,0,0 }  },
+	{  { 0x000E }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,0,0 }  },
+	{  { 0x0021 }, { 0,1,0 }  },
+	{  { 0x002F }, { 0,1,0 }  },
+	{  { 0x0030 }, { 0,1,0 }  },
+	{  { 0x0039 }, { 0,1,0 }  },
+	{  { 0x003A }, { 0,1,0 }  },
+	{  { 0x0040 }, { 0,1,0 }  },
+	{  { 0x0041 }, { 0,1,0 }  },
+	{  { 0x005A }, { 0,1,0 }  },
+	{  { 0x005B }, { 0,1,0 }  },
+	{  { 0x0060 }, { 0,1,0 }  },
+	{  { 0x0061 }, { 0,1,0 }  },
+	{  { 0x007A }, { 0,1,0 }  }, /* 20 */
+	{  { 0x007B }, { 0,1,0 }  },
+	{  { 0x007E }, { 0,1,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  },
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC (eucJP, space)
+#else
+  {   TST_ISW_REC (ja_UTF8, space)
+#endif
+      {
+	{  { 0x3000 }, { 0,0,0 }  },	/* IDEO. SPACE	      */
+	{  { 0x3020 }, { 0,1,0 }  },	/* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,1,0 }  },	/* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,1,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,1,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,1,0 }  },	/* IDEO. HALF SPACE   */  /* No JIS */
+	{  { 0x3041 }, { 0,1,0 }  },	/* HIRAGANA a	      */
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */
+	{  { 0x3099 }, { 0,1,0 }  },	/* SOUND MARK	      */
+	{  { 0x309E }, { 0,1,0 }  },	/* ITERATION MARK     */
+	{  { 0x30A1 }, { 0,1,0 }  },	/* KATAKANA a	      */
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */
+	{  { 0x30FB }, { 0,1,0 }  },	/* KATAKANA MID.DOT   */
+	{  { 0x30FE }, { 0,1,0 }  },	/* KATAKANA ITERATION */
+	{  { 0x3191 }, { 0,1,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,1,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,1,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,1,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,1,0 }  },	/* CJK IDEO.TEL.31th  */
+	{  { 0x4E00 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E05 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E06 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x4E07 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4FFF }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9000 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9006 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9007 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA5 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0xFE4F }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0xFF0F }, { 0,1,0 }  },	/* FULL SLASH	      */
+	{  { 0xFF19 }, { 0,1,0 }  },	/* FULL 9	      */
+	{  { 0xFF20 }, { 0,1,0 }  },	/* FULL @	      */
+	{  { 0xFF3A }, { 0,1,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,1,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,1,0 }  },	/* FULL z	      */
+	{  { 0xFF5E }, { 0,1,0 }  },	/* FULL ~ (tilde)     */
+	{  { 0xFF61 }, { 0,1,0 }  },	/* HALF IDEO.STOP. .  */
+	{  { 0xFF65 }, { 0,1,0 }  },	/* HALF KATA MID.DOT  */
+	{  { 0xFF66 }, { 0,1,0 }  },	/* HALF KATA WO	      */
+	{  { 0xFF6F }, { 0,1,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF70 }, { 0,1,0 }  },	/* HALF KATA PL -     */
+	{  { 0xFF71 }, { 0,1,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,1,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, space) }
+};

+ 94 - 0
test/locale-mbwc/dat_iswupper.c

@@ -0,0 +1,94 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswupper.c
+ *
+ *	 ISW*:	int iswupper (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (UPPER, upper) = {
+
+  {   TST_ISW_REC (de, upper)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+	{  { 0x00A1 }, { 0,1,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,1,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,1,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,1,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,1,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,1,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,1,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,1,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,1,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,1,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,1,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,1,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,1,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,0,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,0,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,1,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,0,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,1,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,1,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,1,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,1,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,1,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,1,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last entry.	*/
+      }
+  },
+  {   TST_ISW_REC (enUS, upper)
+      {
+	{  { WEOF   }, { 0,1,0 }  },
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,1,0 }  },
+	{  { 0x0021 }, { 0,1,0 }  },
+	{  { 0x002F }, { 0,1,0 }  },
+	{  { 0x0030 }, { 0,1,0 }  },
+	{  { 0x0039 }, { 0,1,0 }  },
+	{  { 0x003A }, { 0,1,0 }  },
+	{  { 0x0040 }, { 0,1,0 }  },
+	{  { 0x0041 }, { 0,0,0 }  },
+	{  { 0x005A }, { 0,0,0 }  },
+	{  { 0x005B }, { 0,1,0 }  },
+	{  { 0x0060 }, { 0,1,0 }  },
+	{  { 0x0061 }, { 0,1,0 }  },
+	{  { 0x007A }, { 0,1,0 }  },
+	{  { 0x007B }, { 0,1,0 }  },
+	{  { 0x007E }, { 0,1,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  },
+	{ .is_last = 1 }		/* Last entry.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC (eucJP, upper)
+#else
+  {   TST_ISW_REC (ja_UTF8, upper)
+#endif
+      {
+	{  { 0x3041 }, { 0,1,0 }  },	/* HIRAGANA a	      */
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */
+	{  { 0x30A1 }, { 0,1,0 }  },	/* KATAKANA a	      */
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */
+	{  { 0xFF19 }, { 0,1,0 }  },	/* FULL 9	      */
+	{  { 0xFF20 }, { 0,1,0 }  },	/* FULL @	      */
+	{  { 0xFF3A }, { 0,0,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,1,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,1,0 }  },	/* FULL z	      */
+	{  { 0xFF66 }, { 0,1,0 }  },	/* HALF KATA WO	      */
+	{  { 0xFF6F }, { 0,1,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF71 }, { 0,1,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,1,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last entry.	*/
+      }
+  },
+  {   TST_ISW_REC (end, upper) }
+};

+ 125 - 0
test/locale-mbwc/dat_iswxdigit.c

@@ -0,0 +1,125 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_iswxdigit.c
+ *
+ *	 ISW*:	int iswxdigit (wint_t wc);
+ */
+
+
+#include "dat_isw-funcs.h"
+
+
+TST_ISW_LOC (XDIGIT, xdigit) = {
+
+  {   TST_ISW_REC (de, xdigit)
+      {
+	{  { 0x0080 }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x009F }, { 0,1,0 }  },	/* CTRL	    */
+	{  { 0x00A0 }, { 0,1,0 }  },	/* NB SPACE */
+	{  { 0x00A1 }, { 0,1,0 }  },	/* UD !	    */
+	{  { 0x00B0 }, { 0,1,0 }  },	/* Degree   */
+	{  { 0x00B1 }, { 0,1,0 }  },	/* +- sign  */
+	{  { 0x00B2 }, { 0,1,0 }  },	/* SUP 2    */
+	{  { 0x00B3 }, { 0,1,0 }  },	/* SUP 3    */
+	{  { 0x00B4 }, { 0,1,0 }  },	/* ACUTE    */
+	{  { 0x00B8 }, { 0,1,0 }  },	/* CEDILLA  */
+	{  { 0x00B9 }, { 0,1,0 }  },	/* SUP 1    */
+	{  { 0x00BB }, { 0,1,0 }  },	/* >>	    */
+	{  { 0x00BC }, { 0,1,0 }  },	/* 1/4	    */
+	{  { 0x00BD }, { 0,1,0 }  },	/* 1/2	    */
+	{  { 0x00BE }, { 0,1,0 }  },	/* 3/4	    */
+	{  { 0x00BF }, { 0,1,0 }  },	/* UD ?	    */
+	{  { 0x00C0 }, { 0,1,0 }  },	/* A Grave  */
+	{  { 0x00D6 }, { 0,1,0 }  },	/* O dia    */
+	{  { 0x00D7 }, { 0,1,0 }  },	/* multipl. */
+	{  { 0x00D8 }, { 0,1,0 }  },	/* O stroke */
+	{  { 0x00DF }, { 0,1,0 }  },	/* small Sh */
+	{  { 0x00E0 }, { 0,1,0 }  },	/* a grave  */
+	{  { 0x00F6 }, { 0,1,0 }  },	/* o dia    */
+	{  { 0x00F7 }, { 0,1,0 }  },	/* division */
+	{  { 0x00F8 }, { 0,1,0 }  },	/* o stroke */
+	{  { 0x00FF }, { 0,1,0 }  },	/* y dia    */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC( enUS, xdigit )
+      {
+	{  { WEOF   }, { 0,1,0 }  },
+	{  { 0x0000 }, { 0,1,0 }  },
+	{  { 0x001F }, { 0,1,0 }  },
+	{  { 0x0020 }, { 0,1,0 }  },
+	{  { 0x0021 }, { 0,1,0 }  },
+	{  { 0x002F }, { 0,1,0 }  },
+	{  { 0x0030 }, { 0,0,0 }  },
+	{  { 0x0039 }, { 0,0,0 }  },
+	{  { 0x003A }, { 0,1,0 }  },
+	{  { 0x0040 }, { 0,1,0 }  },
+	{  { 0x0041 }, { 0,0,0 }  },
+	{  { 0x005A }, { 0,1,0 }  },
+	{  { 0x005B }, { 0,1,0 }  },
+	{  { 0x0060 }, { 0,1,0 }  },
+	{  { 0x0061 }, { 0,0,0 }  },
+	{  { 0x007A }, { 0,1,0 }  },
+	{  { 0x007B }, { 0,1,0 }  },
+	{  { 0x007E }, { 0,1,0 }  },
+	{  { 0x007F }, { 0,1,0 }  },
+	{  { 0x0080 }, { 0,1,0 }  },
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+#if 0
+  {   TST_ISW_REC( eucJP, xdigit )
+#else
+  {   TST_ISW_REC( ja_UTF8, xdigit )
+#endif
+      {
+	{  { 0x3000 }, { 0,1,0 }  },	/* IDEO. SPACE	      */
+	{  { 0x3020 }, { 0,1,0 }  },	/* POSTAL MARK FACE   */
+	{  { 0x3029 }, { 0,1,0 }  },	/* Hangzhou NUM9      */
+	{  { 0x302F }, { 0,1,0 }  },	/* Diacritics(Hangul) */
+	{  { 0x3037 }, { 0,1,0 }  },	/* Separator Symbol   */
+	{  { 0x303F }, { 0,1,0 }  },	/* IDEO. HALF SPACE   */
+	{  { 0x3041 }, { 0,1,0 }  },	/* HIRAGANA a	      */
+	{  { 0x3094 }, { 0,1,0 }  },	/* HIRAGANA u"	      */
+	{  { 0x3099 }, { 0,1,0 }  },	/* SOUND MARK	      */
+	{  { 0x309E }, { 0,1,0 }  },	/* ITERATION MARK     */
+	{  { 0x30A1 }, { 0,1,0 }  },	/* KATAKANA a	      */
+	{  { 0x30FA }, { 0,1,0 }  },	/* KATAKANA wo"	      */
+	{  { 0x30FB }, { 0,1,0 }  },	/* KATAKANA MID.DOT   */
+	{  { 0x30FE }, { 0,1,0 }  },	/* KATAKANA ITERATION */
+	{  { 0x3191 }, { 0,1,0 }  },	/* KANBUN REV.MARK    */
+	{  { 0x3243 }, { 0,1,0 }  },	/* IDEO. MARK (reach) */
+	{  { 0x32CB }, { 0,1,0 }  },	/* IDEO.TEL.SYM.DEC12 */
+	{  { 0x32FE }, { 0,1,0 }  },	/* MARU KATAKANA wo   */
+	{  { 0x33FE }, { 0,1,0 }  },	/* CJK IDEO.TEL.31th  */
+	{  { 0x4E00 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E05 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4E06 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x4E07 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x4FFF }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9000 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9006 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0x9007 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA4 }, { 0,1,0 }  },	/* CJK UNI.IDEO.NON-J */
+	{  { 0x9FA5 }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0xFE4F }, { 0,1,0 }  },	/* CJK UNI.IDEO.      */
+	{  { 0xFF0F }, { 0,1,0 }  },	/* FULL SLASH	      */
+	{  { 0xFF19 }, { 0,1,0 }  },	/* FULL 9	      */
+	{  { 0xFF20 }, { 0,1,0 }  },	/* FULL @	      */
+	{  { 0xFF3A }, { 0,1,0 }  },	/* FULL Z	      */
+	{  { 0xFF40 }, { 0,1,0 }  },	/* FULL GRAVE ACC.    */
+	{  { 0xFF5A }, { 0,1,0 }  },	/* FULL z	      */
+	{  { 0xFF5E }, { 0,1,0 }  },	/* FULL ~ (tilde)     */
+	{  { 0xFF61 }, { 0,1,0 }  },	/* HALF IDEO.STOP. .  */
+	{  { 0xFF65 }, { 0,1,0 }  },	/* HALF KATA MID.DOT  */
+	{  { 0xFF66 }, { 0,1,0 }  },	/* HALF KATA WO	      */
+	{  { 0xFF6F }, { 0,1,0 }  },	/* HALF KATA tu	      */
+	{  { 0xFF70 }, { 0,1,0 }  },	/* HALF KATA PL -     */
+	{  { 0xFF71 }, { 0,1,0 }  },	/* HALF KATA A	      */
+	{  { 0xFF9E }, { 0,1,0 }  },	/* HALF KATA MI	      */
+	{ .is_last = 1 }		/* Last element.  */
+      }
+  },
+  {   TST_ISW_REC (end, xdigit) }
+};

+ 137 - 0
test/locale-mbwc/dat_mblen.c

@@ -0,0 +1,137 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_mblen.c
+ *
+ *	 MBLEN:	 int mblen (char *s, size_t n);
+ */
+
+
+/*
+ *  NOTE:
+ *	  int  mblen (char *s, size_t n);
+ *
+ *	  where	     n: a maximum number of bytes
+ *
+ *	  return - the number of bytes
+ *
+ *  CAUTION:
+ *
+ *	 o When you feed a null pointer for a string (s) to the function,
+ *	   set s_flg=0 instead of putting just a 'NULL' there.
+ *	   Even if you set a 'NULL', it doens't mean a NULL pointer.
+ *
+ *	 o When s is a null pointer, the function checks state dependency.
+ *
+ *	       state-dependent encoding	     - return  NON-zero
+ *	       state-independent encoding    - return  0
+ *
+ *	   If state-dependent encoding is expected, set
+ *
+ *	       s_flg = 0,  ret_flg = 0,	 ret_val = +1
+ *
+ *	   If state-independent encoding is expected, set
+ *
+ *	       s_flg = 0,  ret_flg = 0,	 ret_val = 0
+ *
+ *
+ *	   When you set ret_flg=1, the test program simply compares an
+ *	   actual return value with an expected value. You can check
+ *	   state-independent case (return value is 0) in that way, but
+ *	   you can not check state-dependent case. So when you check
+ *	   state- dependency in this test function: tst_mblen(), set
+ *	   ret_flg=0 always. It's a special case, and the test
+ *	   function takes care of it.
+ *
+ *	       s_flg=0		 ret_flg=0
+ *	       |		 |
+ *	     { 0, 0 },	 { 0, 0, 0,  x }
+ *		  |		     |
+ *		  not used	     ret_val: 0/+1
+ *				     (expected val) */
+
+
+TST_MBLEN tst_mblen_loc [] = {
+  {
+    { Tmblen, TST_LOC_de },
+    {
+      /* 01: a character.  */
+      {	 { 1, "\300",	   USE_MBCURMAX }, { 0,	1,  1 }	 },
+      /* 02: a character.  */
+      {	 { 1, "\309",	   USE_MBCURMAX }, { 0,	1,  1 }	 },
+      /* 03: a character + an invalid byte.  */
+      {	 { 1, "Z\204",	   USE_MBCURMAX }, { 0,	1, +1 }	 },
+      /* 04: control/invalid characters.  */
+      {	 { 1, "\177\000",  USE_MBCURMAX }, { 0,	1, +1 }	 },
+      /* 05: a null string.  */
+      {	 { 1, "",	   USE_MBCURMAX }, { 0,	1,  0 }	 },
+      /* 06: a null pointer.  */
+      {	 { 0, "",	   USE_MBCURMAX }, { 0,	0,  0 }	 },
+      /* Last element.	*/
+      {	 .is_last = 1 }
+    }
+  },
+  {
+    { Tmblen, TST_LOC_enUS },
+    {
+      /* 01: a character.  */
+      {	 { 1, "A",	   USE_MBCURMAX }, { 0,	1,  1 }	 },
+      /* 02: a character.  */
+      {	 { 1, "a",	   USE_MBCURMAX }, { 0,	1,  1 }	 },
+      /* 03: a character + an invalid byte.  */
+      {	 { 1, "Z\204",	   USE_MBCURMAX }, { 0,	1, +1 }	 },
+      /* 04: control/invalid characters.  */
+      {	 { 1, "\177\000",  USE_MBCURMAX }, { 0,	1, +1 }	 },
+      /* 05: a null string.  */
+      {	 { 1, "",	   USE_MBCURMAX }, { 0,	1,  0 }	 },
+      /* 06: a null pointer.  */
+      {	 { 0, "",	   USE_MBCURMAX }, { 0,	0,  0 }	 },
+      /* Last element.	*/
+      {	 .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Tmblen, TST_LOC_eucJP },
+    {
+      /* 01: a character.  */
+      {	 { 1, "\264\301",	   USE_MBCURMAX }, { 0, 1,  2 }	 },
+      /* 02: a character.  */
+      {	 { 1, "\216\261",	   USE_MBCURMAX }, { 0, 1,  2 }  },
+      /* 03: a character + an invalid byte.  */
+      {	 { 1, "\260\241\200",	   USE_MBCURMAX }, { 0, 1,  2 }	 },
+      /* 04: control/invalid characters.  */
+      {	 { 1, "\377\202",  USE_MBCURMAX }, { EILSEQ, 1, -1 }	 },
+      /* 05: a null string.  */
+      {	 { 1, "",	   USE_MBCURMAX }, { 0,	1,  0 }	 },
+      /* 06: a null pointer.  */
+      {	 { 0, "",	   USE_MBCURMAX }, { 0,	0,  0 }	 },
+      /* Last element.	*/
+      {	 .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Tmblen, TST_LOC_ja_UTF8 },
+    {
+      /* 01: a character.  */
+      {	 { 1, "\346\274\242",	   USE_MBCURMAX }, { 0, 1,  3 }	 },
+      /* 02: a character.  */
+      {	 { 1, "\357\275\261",	   USE_MBCURMAX }, { 0, 1,  3 }  },
+      /* 03: a character + an invalid byte.  */
+      {	 { 1, "\345\272\234\200",	   USE_MBCURMAX }, { 0, 1,  3 }	 },
+      /* 04: control/invalid characters.  */
+      {	 { 1, "\377\202",  USE_MBCURMAX }, { EILSEQ, 1, -1 }	 },
+      /* 05: a null string.  */
+      {	 { 1, "",	   USE_MBCURMAX }, { 0,	1,  0 }	 },
+      /* 06: a null pointer.  */
+      {	 { 0, "",	   USE_MBCURMAX }, { 0,	0,  0 }	 },
+      /* Last element.	*/
+      {	 .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Tmblen, TST_LOC_end}
+  }
+};

+ 222 - 0
test/locale-mbwc/dat_mbrlen.c

@@ -0,0 +1,222 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_mbrlen.c
+ *
+ *	 MBRLEN:  size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
+ */
+
+/*
+ *  NOTE:
+ *	  (1) A mbstate object is initialized for
+ *	      every new data record by the test program.
+ *
+ *	  (2) USE_MBCURMAX is defined as a value of 99.
+ *
+ */
+
+
+TST_MBRLEN tst_mbrlen_loc [] = {
+  {
+    { Tmbrlen, TST_LOC_de },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, "",	   0,		   0, 0 },
+	    { 1, "",	   1,		   0, 0 },
+	    { 1, "\300",	   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1,  0,		     },
+	    { 0,		1,  0,		     },
+	    { 0,		1,  1,		     },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, "\300\001",   0,		   0, 0 },
+	    { 1, "\300\001",   1,		   0, 0 },
+	    { 1, "\317\001",   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1,  0,		     },
+	    { 0,		1,  1,		     },
+	    { 0,		1,  1,		     },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tmbrlen, TST_LOC_enUS },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, "A",	   0,		   0, 0 },
+	    { 1, "A",	   1,		   0, 0 },
+	    { 1, "A",	   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1,  0,		     },
+	    { 0,		1,  1,		     },
+	    { 0,		1,  1,		     },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, "\317\001",   0,		   1, 0 },
+	    { 1, "\317\001",   1,		   1, 0 },
+	    { 1, "\317\001",   USE_MBCURMAX,   1, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1,  0,		     },
+	    { EILSEQ,	1, -1,		     },
+	    { EILSEQ,	1, -1,		     },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Tmbrlen, TST_LOC_eucJP },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, "\317\302",   1,		   1, 1 },
+	    { 0, "",	       0,		   1, 0 },
+	    { 1, "\317\302",   USE_MBCURMAX,	   1, 1 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1, -2,		     },
+	    { 0,		1, -1,		     },
+	    { 0,		1,  2,		     },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, "\317",	   1,		   1, 0 },
+	    { 1, "\302",	   1,		   1, 0 },
+	    { 1, "\317\302",   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1, -2,		     },
+#ifdef SHOJI_IS_RIGHT
+	    { 0,		1, +2,		     },
+#else
+	    /* XXX ISO C explicitly says that the return value does not
+	       XXX reflect the bytes contained in the state.  */
+	    { 0,		1, +1,		     },
+#endif
+	    { 0,		1,  2,		     },
+	  }
+	}
+      },
+      { /*----------------- #03 -----------------*/
+	{
+	  {
+	    { 1, "\216\217",   0,		   0, 0 },
+	    { 1, "\216\217",   1,		   0, 0 },
+	    { 1, "\216\217",   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1,  0,		     },
+	    { 0,		1, -2,		     },
+	    { EILSEQ,	1, -1,		     },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Tmbrlen, TST_LOC_ja_UTF8 },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, "\345\222\214",   1,		   1, 1 },
+	    { 0, "",	       0,		   1, 0 },
+	    { 1, "\345\222\214",   USE_MBCURMAX,	   1, 1 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1, -2,		     },
+	    { 0,		1, -1,		     },
+	    { 0,		1,  3,		     },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, "\317",	   1,		   1, 0 },
+	    { 1, "\266",	   1,		   1, 0 },
+	    { 1, "\345\222\214",   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1, -2,		     },
+#ifdef SHOJI_IS_RIGHT
+	    { 0,		1, +2,		     },
+#else
+	    /* XXX ISO C explicitly says that the return value does not
+	       XXX reflect the bytes contained in the state.  */
+	    { 0,		1, +1,		     },
+#endif
+	    { 0,		1,  3,		     },
+	  }
+	}
+      },
+      { /*----------------- #03 -----------------*/
+	{
+	  {
+	    { 1, "\302\303",   0,		   0, 0 },
+	    { 1, "\302\303",   1,		   0, 0 },
+	    { 1, "\302\303",   USE_MBCURMAX,   0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,		1,  0,		     },
+	    { 0,		1, -2,		     },
+	    { EILSEQ,	1, -1,		     },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Tmbrlen, TST_LOC_end }
+  }
+};

+ 140 - 0
test/locale-mbwc/dat_mbrtowc.c

@@ -0,0 +1,140 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_mbrtowc.c
+ *
+ *	 MBTOWC:  size_t mbrtowc (wchar_t *pwc, char *s, size_t n,
+ *				  mbstate_t *ps);
+ */
+
+#include <limits.h>
+
+/* Note:
+	assumes	 en_US = en_US.ascii
+*/
+
+
+
+
+TST_MBRTOWC tst_mbrtowc_loc [] = {
+  {
+    { Tmbrtowc, TST_LOC_de },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "ÄÖÜ",	   1,		 0, 0 },
+	    { 1, 1, "ÄÖÜ",	   2,		 0, 0 },
+	    { 1, 1, "ÄÖÜ",	   USE_MBCURMAX, 0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "ÄÖÜ",	    1,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    2,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    USE_MBCURMAX, 0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  /* XXX: These tests don't make sense to me.  */
+  {
+    { Tmbrtowc, TST_LOC_enUS },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "ÄÖÜ",	    1,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    2,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    USE_MBCURMAX, 0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "ÄÖÜ",	    1,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    2,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    USE_MBCURMAX, 0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tmbrtowc, TST_LOC_eucJP },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "ÄÖÜ",	    1,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    2,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    USE_MBCURMAX, 0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "ÄÖÜ",	    1,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    2,		  0, 0 },
+	    { 1, 1, "ÄÖÜ",	    USE_MBCURMAX, 0, 0 },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	    { 0,  1,  1,   0x00C4 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Tmbrtowc, TST_LOC_end }
+  }
+};

+ 180 - 0
test/locale-mbwc/dat_mbsrtowcs.c

@@ -0,0 +1,180 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_mbsrtowcs.c
+ *
+ *	 MBSRTOWCS:  size_t mbsrtowcs (wchar_t *ws, char **s, size_t n,
+ *				       mbstate_t *ps);
+ */
+
+
+TST_MBSRTOWCS tst_mbsrtowcs_loc [] = {
+  {
+    { Tmbsrtowcs, TST_LOC_de },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  "üäö",	    4,			 0,0 },
+	    { 1,  "üäö",	    3,			 0,0 },
+	    { 1,  "üäö",	    2,			 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 }	     },
+	    { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 }	     },
+	    { 0,1,2, { 0x00FC,0x00E4,0x00F6,0x0000 }	     },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1,  "üäö",	    4,			 0,0 },
+	    { 1,  "",		    1,			 0,0 },
+	    { 0,  "üäö",	    4,			 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 }	     },
+	    { 0,1,0, { 0x0000 }			     },
+	    { 0,1,3, { 0x0000 }			     },
+	  }
+	}
+      },
+      { /*----------------- END -----------------*/
+	.is_last = 1
+      }
+    }
+  },
+
+  {
+    { Tmbsrtowcs, TST_LOC_enUS },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  "ABC",	    4,			 0,0 },
+	    { 1,  "ABC",	    3,			 0,0 },
+	    { 1,  "ABC",	    2,			 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	     },
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	     },
+	    { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 }	     },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1,  "ABC",	    4,			 0,0 },
+	    { 1,  "",		    1,			 0,0 },
+	    { 0,  "ABC",	    4,			 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	     },
+	    { 0,1,0, { 0x0000 }			     },
+	    { 0,1,3, { 0x0000 }			     },
+	  }
+	}
+      },
+      { /*----------------- END -----------------*/
+	.is_last = 1
+      }
+    }
+  },
+
+#if 0
+  {
+    { Tmbsrtowcs, TST_LOC_eucJP },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  "\244\242\244\244\244\246ABC",      7, 0,0 },
+	    { 1,  "\244\242\244\244\244\246ABC",      6, 0,0 },
+	    { 1,  "\244\242\244\244\244\246ABC",      4, 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 }		   },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1,  "\244\242\244\244\244\246ABC",      7, 0,0 },
+	    { 1,  "",		      1, 0,0 },
+	    { 0,  "\244\242\244\244\244\246ABC",      7, 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,0, { 0x0000 }					   },
+	    { 0,1,6, { 0x0000 }					   },
+	  }
+	}
+      },
+      { /*----------------- END -----------------*/
+	.is_last = 1
+      }
+    }
+  },
+#else
+  {
+    { Tmbsrtowcs, TST_LOC_ja_UTF8 },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  "\343\201\202\343\201\204\343\201\206ABC",      7, 0,0 },
+	    { 1,  "\343\201\202\343\201\204\343\201\206ABC",      6, 0,0 },
+	    { 1,  "\343\201\202\343\201\204\343\201\206ABC",      4, 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 }		   },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1,  "\343\201\202\343\201\204\343\201\206ABC",      7, 0,0 },
+	    { 1,  "",		      1, 0,0 },
+	    { 0,  "\343\201\202\343\201\204\343\201\206ABC",      7, 0,0 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,0, { 0x0000 }					   },
+	    { 0,1,6, { 0x0000 }					   },
+	  }
+	}
+      },
+      { /*----------------- END -----------------*/
+	.is_last = 1
+      }
+    }
+  },
+#endif
+  {
+    { Tmbsrtowcs, TST_LOC_end }
+  }
+};

+ 190 - 0
test/locale-mbwc/dat_mbstowcs.c

@@ -0,0 +1,190 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_mbstowcs.c
+ *
+ *	 MBSTOWCS:  size_t  mbstowcs (wchar_t *ws, char *s, size_t n);
+ */
+
+#include <limits.h>
+
+TST_MBSTOWCS tst_mbstowcs_loc [] = {
+  {
+    { Tmbstowcs, TST_LOC_de },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  1, "ABC",		   4			 },
+	    { 1,  1, "ABC",		   3			 },
+	    { 1,  1, "ABC",		   2			 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	    { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1,  1, "ABC",		   4			 },
+	    { 1,  1, "",		   1			 },
+	    { 0,  1, "ABC",		   4			 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	    { 0,1,0, { 0x0000 }				 },
+	    { 0,1,3, { 0x0000 }				 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tmbstowcs, TST_LOC_enUS },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  1, "ABC",		   4			 },
+	    { 1,  1, "ABC",		   3			 },
+	    { 1,  1, "ABC",		   2			 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	    { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1,  1, "ABC",		   4			 },
+	    { 1,  1, "",		   1			 },
+	    { 0,  1, "ABC",		   4			 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 }	 },
+	    { 0,1,0, { 0x0000 }				 },
+	    { 0,1,3, { 0x0000 }				 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Tmbstowcs, TST_LOC_eucJP },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  1, "\244\242\244\244\244\246ABC",      7 },
+	    { 1,  1, "\244\242\244\244\244\246ABC",      6 },
+	    { 1,  1, "\244\242\244\244\244\246ABC",      4 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 }		 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+#ifdef SHOJI_IS_RIGHT
+	    /* XXX I really don't understand the first and third line.
+	       the result of the first line is the same as the first
+	       in the last test (i.e., returns 6).  Also, the third
+	       test will simply convert everything.  */
+	    { 1,  1, "\244\242\244\244\244\246ABC",      7 },
+	    { 1,  1, "",                                 1 },
+	    { 0,  1, "\244\242\244\244\244\246ABC",      7 },
+#else
+	    { 1,  1, "\244\242\244\244\244\246ABC",      4 },
+	    { 1,  1, "",                                 1 },
+	    { 0,  1, "\244\242\244\244\244\246ABC",      0 },
+#endif
+	  }
+	},
+	{
+	  {
+	    { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 }		 },
+	    { 0,1,0, { 0x0000 }					 },
+	    { 0,1,6, { 0x0000 }					 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Tmbstowcs, TST_LOC_ja_UTF8 },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1,  1, "\343\201\202\343\201\204\343\201\206ABC",      7 },
+	    { 1,  1, "\343\201\202\343\201\204\343\201\206ABC",      6 },
+	    { 1,  1, "\343\201\202\343\201\204\343\201\206ABC",      4 },
+	  }
+	},
+	{
+	  {
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }},
+	    { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 }		 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+#ifdef SHOJI_IS_RIGHT
+	    /* XXX I really don't understand the first and third line.
+	       the result of the first line is the same as the first
+	       in the last test (i.e., returns 6).  Also, the third
+	       test will simply convert everything.  */
+	    { 1,  1, "\244\242\244\244\244\246ABC",      7 },
+	    { 1,  1, "",                                 1 },
+	    { 0,  1, "\244\242\244\244\244\246ABC",      7 },
+#else
+	    { 1,  1, "\343\201\202\343\201\204\343\201\206ABC",      4 },
+	    { 1,  1, "",                                 1 },
+	    { 0,  1, "\343\201\202\343\201\204\343\201\206ABC",      7 },
+#endif
+	  }
+	},
+	{
+	  {
+	    { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 }		 },
+	    { 0,1,0, { 0x0000 }					 },
+	    { 0,1,6, { 0x0000 }					 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Tmbstowcs, TST_LOC_end }
+  }
+};

+ 444 - 0
test/locale-mbwc/dat_mbtowc.c

@@ -0,0 +1,444 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_mbtowc.c
+ *
+ *	 MBTOWC:  int  mbtowc (wchar_t *wp, char *s, size_t n);
+ */
+
+/*  NOTE:
+ *
+ *	 int  mbtowc (wchar_t *wp, char *s, size_t n);
+ *
+ *	 where	     n: a maximum number of bytes
+ *		return: the number of bytes
+ *
+ *
+ *	  o When you feed a null pointer for a string (s) to the function,
+ *	    set s_flg=0 instead of putting just a 'NULL' there.
+ *	    Even if you put a 'NULL', it means a null string as well as "".
+ *
+ *	  o When s is a null pointer, the function checks state dependency.
+ *
+ *		state-dependent encoding      - return	NON-zero
+ *		state-independent encoding    - return	0
+ *
+ *	    If state-dependent encoding is expected, set
+ *
+ *		s_flg = 0,  ret_flg = 0,  ret_val = +1
+ *
+ *	    If state-independent encoding is expected, set
+ *
+ *		s_flg = 0,  ret_flg = 0,  ret_val = 0
+ *
+ *
+ *	    When you set ret_flg=1, the test program simply compares
+ *	    an actual return value with an expected value. You can
+ *	    check state-independent case (return value is 0) in that
+ *	    way, but you can not check state-dependent case. So when
+ *	    you check state- dependency in this test function:
+ *	    tst_mbtowc(), set ret_flg=0 always. It's a special case
+ *	    and the test function takes care of it.
+ *
+ *			  w_flg
+ *			  |	s: (a null string; can't be (char *)NULL)
+ *			  |	|
+ *	       input.	{ 1, 0, (char)NULL, MB_LEN_MAX	},
+ *			     |
+ *			     s_flg=0: makes _s_ a null pointer.
+ *
+ *	       expect	{ 0,0,0,x,     0x0000	  },
+ *			      | |
+ *			      | ret_val: 0/+1
+ *			      ret_flg=0
+ *
+ *
+ *    Test data for State dependent encodings:
+ *
+ *	  mbtowc( NULL, NULL, 0 );	 ... first  data
+ *	  mbtowc( &wc,	s1,  n1 );	 ... second data
+ *	  mbtowc( &wc,	s2,  n2 );	 ... third  data
+ * */
+
+#include <limits.h>
+
+TST_MBTOWC tst_mbtowc_loc [] = {
+  {
+    { Tmbtowc, TST_LOC_de },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "\xfc\xe4\xf6",	    1	       },
+	    { 1, 1, "\xfc\xe4\xf6",	    2	       },
+	    { 1, 1, "\xfc\xe4\xf6",	    MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x00FC },
+	    { 0,  1,  1,   0x00FC },
+	    { 0,  1,  1,   0x00FC },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "\177",	    MB_LEN_MAX },
+	    { 1, 1, "\200",	    MB_LEN_MAX },
+	    { 1, 1, "\201",	    MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x007F },
+	    { 0,  1,  1,   0x0080 },
+	    { 0,  1,  1,   0x0081 },
+	  }
+	}
+      },
+      { /*----------------- #03 -----------------*/
+	{
+	  {
+	    { 1, 1, "",			    MB_LEN_MAX },
+	    { 0, 1, "\xfc\xe4\xf6",	    1	       },
+	    { 0, 1, "\xfc\xe4\xf6",	    2	       },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  0,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #04 -----------------*/
+	{
+	  {
+	    { 0, 1, "\xfc\xe4\xf6",	    MB_LEN_MAX },
+	    { 0, 1, "\177",		    MB_LEN_MAX },
+	    { 0, 1, "",	 		   MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  0,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #05 -----------------*/
+	{
+	  {
+	    { 0, 1, "\xfc\xe4\xf6",	MB_LEN_MAX },
+	    { 0, 1, "\177",	   	MB_LEN_MAX },
+	    { 0, 0, (char)NULL, 	MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  0,  0,   0x0000 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tmbtowc, TST_LOC_enUS },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "ABC",	    1	       },
+	    { 1, 1, "ABC",	    2	       },
+	    { 1, 1, "ABC",	    MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x0041 },
+	    { 0,  1,  1,   0x0041 },
+	    { 0,  1,  1,   0x0041 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "\177",	    MB_LEN_MAX },
+	    { 1, 1, "\200",	    MB_LEN_MAX },
+	    { 1, 1, "\201",	    MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x007F },
+	    { EILSEQ,  1, -1,   0x0000 },
+	    { EILSEQ,  1, -1,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #03 -----------------*/
+	{
+	  {
+	    { 1, 1, "",	    MB_LEN_MAX },
+	    { 0, 1, "ABC",	    1	       },
+	    { 0, 1, "ABC",	    2	       },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  0,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #04 -----------------*/
+	{
+	  {
+	    { 0, 1, "ABC",	    MB_LEN_MAX },
+	    { 0, 1, "\177",	    MB_LEN_MAX },
+	    { 0, 1, "",	    MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  0,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #05 -----------------*/
+	{
+	  {
+	    { 0, 1, "ABC",	    MB_LEN_MAX },
+	    { 0, 1, "\177",	    MB_LEN_MAX },
+	    { 0, 0, (char)NULL, MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  1,  1,   0x0000 },
+	    { 0,  0,  0,   0x0000 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Tmbtowc, TST_LOC_eucJP },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "\244\242A",      1          },
+	    { 1, 1, "\244\242A",      2          },
+	    { 1, 1, "\244\242A",      MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+#ifdef SHOJI_IS_RIGHT
+	    { EILSEQ,  1, -1,   0x0000 },
+#else
+	    /* XXX EILSEQ was introduced in ISO C99.  */
+	    { 0,	  1, -1,   0x0000 },
+#endif
+	    { 0,       1,  2,   0x3042 },
+	    { 0,       1,  2,   0x3042 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "\177\244\242",   MB_LEN_MAX },
+	    { 1, 1, "\377\244\242",   MB_LEN_MAX },
+	    { 1, 1, "\201\244\242",   MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1, +1,   0x007F },
+#ifdef SHOJI_IS_RIGHT
+	    { EILSEQ,  1, -1,   0x0000 },
+#else
+	    { 0,  1, -1,   0x0000 },
+#endif
+	    { 0,  1, +1,   0x0081 },
+	  }
+	}
+      },
+      { /*----------------- #03 -----------------*/
+	{
+	  {
+	    { 1, 1, "",         MB_LEN_MAX },
+	    { 0, 1, "\244\242A",      1          },
+	    { 0, 1, "\244\242A",      2          },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  0,   0x0000 },
+#ifdef SHOJI_IS_RIGHT
+	    { EILSEQ,  1, -1,   0x0000 },
+#else
+	    /* XXX EILSEQ was introduced in ISO C99.  */
+	    { 0,       1, -1,   0x0000 },
+#endif
+	    { 0,  1,  2,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #04 -----------------*/
+	{
+	  {
+	    { 0, 1, "\244\242A",      MB_LEN_MAX },
+	    { 0, 1, "\177\244\242",   MB_LEN_MAX },
+	    { 0, 1, "",         MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  2,   0x0000 },
+	    { 0,  1, +1,   0x0000 },
+	    { 0,  1,  0,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #05 -----------------*/
+	{
+	  {
+	    { 0, 1, "\244\242A",      MB_LEN_MAX },
+	    { 0, 1, "\177\244\242",   MB_LEN_MAX },
+	    { 0, 0, (char)NULL, MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  2,   0x0000 },
+	    { 0,  1, +1,   0x0000 },
+	    { 0,  0,  0,   0x0000 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Tmbtowc, TST_LOC_ja_UTF8 },
+    {
+      { /*----------------- #01 -----------------*/
+	{
+	  {
+	    { 1, 1, "\343\201\202A",      1          },
+	    { 1, 1, "\343\201\202A",      3          },
+	    { 1, 1, "\343\201\202A",      MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+#ifdef SHOJI_IS_RIGHT
+	    { EILSEQ,  1, -1,   0x0000 },
+#else
+	    /* XXX EILSEQ was introduced in ISO C99.  */
+	    { 0,	  1, -1,   0x0000 },
+#endif
+	    { 0,       1,  3,   0x3042 },
+	    { 0,       1,  3,   0x3042 },
+	  }
+	}
+      },
+      { /*----------------- #02 -----------------*/
+	{
+	  {
+	    { 1, 1, "\177\343\201\202",   MB_LEN_MAX },
+	    { 1, 1, "\377\343\201\202",   MB_LEN_MAX },
+	    { 1, 1, "\302\201\343\201\202",   MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1, +1,   0x007F },
+#ifdef SHOJI_IS_RIGHT
+	    { EILSEQ,  1, -1,   0x0000 },
+#else
+	    { 0,  1, -1,   0x0000 },
+#endif
+	    { 0,  1, +2,   0x0081 },
+	  }
+	}
+      },
+      { /*----------------- #03 -----------------*/
+	{
+	  {
+	    { 1, 1, "",         MB_LEN_MAX },
+	    { 0, 1, "\343\201\202A",      1          },
+	    { 0, 1, "\343\201\202A",      3          },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  0,   0x0000 },
+#ifdef SHOJI_IS_RIGHT
+	    { EILSEQ,  1, -1,   0x0000 },
+#else
+	    /* XXX EILSEQ was introduced in ISO C99.  */
+	    { 0,       1, -1,   0x0000 },
+#endif
+	    { 0,  1,  3,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #04 -----------------*/
+	{
+	  {
+	    { 0, 1, "\343\201\202A",      MB_LEN_MAX },
+	    { 0, 1, "\177\343\201\202",   MB_LEN_MAX },
+	    { 0, 1, "",         MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  3,   0x0000 },
+	    { 0,  1, +1,   0x0000 },
+	    { 0,  1,  0,   0x0000 },
+	  }
+	}
+      },
+      { /*----------------- #05 -----------------*/
+	{
+	  {
+	    { 0, 1, "\343\201\202A",      MB_LEN_MAX },
+	    { 0, 1, "\177\343\201\202",   MB_LEN_MAX },
+	    { 0, 0, (char)NULL, MB_LEN_MAX },
+	  }
+	},
+	{
+	  {
+	    { 0,  1,  3,   0x0000 },
+	    { 0,  1, +1,   0x0000 },
+	    { 0,  0,  0,   0x0000 },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Tmbtowc, TST_LOC_end }
+  }
+};

+ 209 - 0
test/locale-mbwc/dat_strcoll.c

@@ -0,0 +1,209 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE: dat_strcoll.c
+ *
+ *	 STRCOLL:  int strcoll (const char *s1, const char *s2);
+ */
+
+/*
+   NOTE:
+
+   If a return value is expected to be 0, set ret_flg=1 and the
+   expected value = 0.	If a return value is expected to be a
+   positive/negative value, set ret_flg=0, and set the expected value
+   = +1/-1.
+   There is inconsistensy between tst_strcoll() and tst_wcscoll()(it
+   has cmp_flg) for input data. I'll fix it.
+
+   Assuming en_US to be en_US.ascii. (maybe, should be iso8859-1).
+
+
+
+   ASCII CODE  : A,B,C, ...  , a, b, c, ...	 B,a:-1	  a,B:+1
+   DICTIONARY : A,a,B,b,C,c,....  a,B:-1 B,a:+1 */
+
+TST_STRCOLL tst_strcoll_loc [] = {
+  {
+    { Tstrcoll, TST_LOC_de },
+    {
+      { /*input.*/ { "ÄBCDEFG", "ÄBCDEFG"	      },  /* #1 */
+	/*expect*/ { 0,1,0,			      },
+      },
+      { /*input.*/ { "XX Ä XX", "XX B XX"	      },  /* #2 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "XX B XX", "XX Ä XX"	      },  /* #3 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "B",	"a"		      },  /* #4 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "a",	"B"		      },  /* #5 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "b",	"A"		      },  /* #6 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "A",	"b"		      },  /* #7 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "ä",	"B"		      },  /* #8 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "B",	"ä"		      },  /* #9 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { .is_last = 1 } /* Last element.  */
+    }
+  },
+  {
+    { Tstrcoll, TST_LOC_en },
+    {
+      { /*input.*/ { "ABCDEFG", "ABCDEFG"	      },  /* #1 */
+	/*expect*/ { 0,1,0,			      },
+      },
+      { /*input.*/ { "XX a XX", "XX B XX"	      },  /* #2 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "XX B XX", "XX a XX"	      },  /* #3 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      {
+	/* <WAIVER> */
+	/*input.*/ { "B",	"a"		      },  /* #4 */
+#ifdef SHOJI_IS_RIGHT
+	/*expect*/ { 0,0,-1,			      },
+#else
+		   /* XXX We are not testing the C locale.  */
+	/*expect*/ { 0,0,+1,			      },
+#endif
+      },
+      {
+	/* <WAIVER> */
+	/*input.*/ { "a",	"B"		      },  /* #5 */
+#ifdef SHOJI_IS_RIGHT
+	/*expect*/ { 0,0,+1,			      },
+#else
+		   /* XXX We are not testing the C locale.  */
+	/*expect*/ { 0,0,-1,			      },
+#endif
+      },
+      { /*input.*/ { "b",	"A"		      },  /* #6 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "A",	"b"		      },  /* #7 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+#ifdef NO_WAIVER
+      /* XXX I do not yet know whether strcoll really should reject
+	 characters outside the multibyte character range.  */
+      {
+	/* #8 */  /* <WAIVER> */
+	/*input.*/ { "\244\242\244\244\244\246\244\250\244\252", "ABCDEFG" },
+	/*expect*/ { EINVAL,0,0,		      },
+      },
+      {
+	/* #9 */  /* <WAIVER> */
+	/*input.*/ { "ABCZEFG", "\244\242\244\244\244\246\244\250\244\252" },
+	/*expect*/ { EINVAL,0,0,		      },
+      },
+#endif
+      { .is_last = 1 } /* Last element.  */
+    }
+  },
+#if 0
+  {
+    { Tstrcoll, TST_LOC_eucJP },
+    {
+      { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252",
+		     "\244\242\244\244\244\246\244\250\244\252" },  /* #1 */
+	/*expect*/ { 0,1,0,			      },
+      },
+      { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252",
+		     "\244\242\244\244\244\363\244\250\244\252" },  /* #2 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "\244\242\244\244\244\363\244\250\244\252",
+		     "\244\242\244\244\244\246\244\250\244\252" },  /* #3 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "B",	"a"		      },  /* #4 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "a",	"B"		      },  /* #5 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "b",	"A"		      },  /* #6 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "A",	"b"		      },  /* #7 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+#ifdef NO_WAIVER
+      /* XXX I do not yet know whether strcoll really should reject
+	 characters outside the multibyte character range.  */
+      {
+	/* <WAIVER> */
+	/*input.*/ { "\200\216\217", "ABCDEFG"	      },  /* #8 */
+	/*expect*/ { EINVAL,0,0,		      },
+      },
+      {
+	/* <WAIVER> */
+	/*input.*/ { "ABCZEFG", "\200\216\217"	      },  /* #9 */
+	/*expect*/ { EINVAL,0,0,		      },
+      },
+#endif
+      { .is_last = 1 } /* Last element.  */
+    }
+  },
+#else
+  {
+    { Tstrcoll, TST_LOC_ja_UTF8 },
+    {
+      { /*input.*/ { "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212",
+		     "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212" },  /* #1 */
+	/*expect*/ { 0,1,0,			      },
+      },
+      { /*input.*/ { "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212",
+		     "\343\201\202\343\201\204\343\202\223\343\201\210\343\201\212" },  /* #2 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "\343\201\202\343\201\204\343\202\223\343\201\210\343\201\212",
+		     "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212" },  /* #3 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "B",	"a"		      },  /* #4 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+      { /*input.*/ { "a",	"B"		      },  /* #5 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "b",	"A"		      },  /* #6 */
+	/*expect*/ { 0,0,+1,			      },
+      },
+      { /*input.*/ { "A",	"b"		      },  /* #7 */
+	/*expect*/ { 0,0,-1,			      },
+      },
+#ifdef NO_WAIVER
+      /* XXX I do not yet know whether strcoll really should reject
+	 characters outside the multibyte character range.  */
+      {
+	/* <WAIVER> */
+	/*input.*/ { "\200\216\217", "ABCDEFG"	      },  /* #8 */
+	/*expect*/ { EINVAL,0,0,		      },
+      },
+      {
+	/* <WAIVER> */
+	/*input.*/ { "ABCZEFG", "\200\216\217"	      },  /* #9 */
+	/*expect*/ { EINVAL,0,0,		      },
+      },
+#endif
+      { .is_last = 1 } /* Last element.  */
+    }
+  },
+#endif
+  {
+    { Tstrcoll, TST_LOC_end }
+  }
+};

+ 268 - 0
test/locale-mbwc/dat_strfmon.c

@@ -0,0 +1,268 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_strfmon.c
+ *
+ *	 STRFMON:  size_t strfmon (char *buf, size_t nbyte, char *fmt, ... );
+ */
+
+/*
+ *  NOTE:
+ *
+ *  The buffer size should be enough to contain a string including a
+ *  null char.
+ *  Returns the number of bytes of the string (NOT including a null char).
+ */
+
+TST_STRFMON tst_strfmon_loc [] = {
+  {
+    { Tstrfmon, TST_LOC_de },
+    {
+      {
+	/* #01 */
+	/*inp*/ { 24, "%n %% %i",	     123.00			},
+	/*exp*/ { 0,1,23,		     "123,00 EUR % 123,00 EUR"	},
+      },
+      {
+	/* #02 */
+	/*inp*/ { 24, "%n %% %i",	     123.00			},
+	/*exp*/ { 0,1,23,		     "123,00 EUR % 123,00 EUR"	},
+      },
+      {
+	/* #03 */
+	/*inp*/ { 23, "%n %% %i",	     123.00			},
+	/*exp*/ { E2BIG,1,-1,	     ""					},
+      },
+      {
+	/* #04 */
+	/*inp*/ { 31, "%n|%i",	     1234.561				},
+	/*exp*/ { 0,1,25,		     "1.234,56 EUR|1.234,56 EUR"},
+      },
+      {
+	/* #05 */
+	/*inp*/ { 33, "%n|%i",	    -1234.561				},
+	/*exp*/ { 0,1,27,		     "-1.234,56 EUR|-1.234,56 EUR"},
+      },
+      {
+	/* #06 */
+	/*inp*/ { 33, "%13n|%12i",	     1234.561			},
+	/*exp*/ { 0,1,26,		     " 1.234,56 EUR|1.234,56 EUR"},
+      },
+      {
+	/* #07 */
+	/*inp*/ { 33, "%12n|%12i",	    -1234.561			},
+	/*exp*/ { 0,1,27,		     "-1.234,56 EUR|-1.234,56 EUR"},
+      },
+      {
+	/* #08 */
+	/*inp*/ { 33, "%#5n|%#5i",	     1234.561			},
+	/*exp*/ { 0,1,29,		     "  1.234,56 EUR|  1.234,56 EUR"},
+      },
+      {
+	/* #09 */
+	/*inp*/ { 33, "%#5n|%#5i",	    -1234.561			},
+	/*exp*/ { 0,1,29,		     "- 1.234,56 EUR|- 1.234,56 EUR"},
+      },
+      {
+	/* #10 */
+	/*inp*/ { 33, "%=*#5n|%=*#5i",	 1234.561			},
+	/*exp*/ { 0,1,29,		     " *1.234,56 EUR| *1.234,56 EUR"},
+      },
+      {
+	/* #11 */
+	/*inp*/ { 33, "%=0#5n|%=0#5i",	-1234.561			},
+	/*exp*/ { 0,1,29,		     "-01.234,56 EUR|-01.234,56 EUR"},
+      },
+      {
+	/* #12 */
+	/*inp*/ { 33, "%^#5n|%^#5i",	-1234.561			},
+	/*exp*/ { 0,1,27,		     "- 1234,56 EUR|- 1234,56 EUR"},
+      },
+      {
+	/* #13 */
+	/*inp*/ { 33, "%#5.0n|%#5.0i",	 1234.444			},
+	/*exp*/ { 0,1,23,		     "  1.234 EUR|  1.234 EUR"	},
+      },
+      {
+	/* #14 */
+	/*inp*/ { 33, "%#5.0n|%#5.4i",	-1234.555			},
+	/*exp*/ { 0,1,28,		     "- 1.235 EUR|- 1.234,5550 EUR"},
+      },
+      {
+	/* #15 */
+	/*inp*/ { 33, "%(#5n|%!(#5i",	-1234.561			},
+	/*exp*/ { 0,1,27,		     "( 1.234,56 EUR)|( 1.234,56)"},
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tstrfmon, TST_LOC_enUS },
+    {
+      {
+	/* #01 */
+	/*inp*/ { 22, "%n %% %i",	     123.00			},
+	/*exp*/ { 0,1,20,		     "$123.00 % USD 123.00"	},
+      },
+      {
+	/* #02 */
+	/*inp*/ { 21, "%n %% %i",	     123.00			},
+	/*exp*/ { 0,1,20,		     "$123.00 % USD 123.00"	},
+      },
+      {
+	/* #03 */
+	/*inp*/ { 20, "%n %% %i",	     123.00			},
+	/*exp*/ { E2BIG,1,-1,	     ""					},
+      },
+      {
+	/* #04 */
+	/*inp*/ { 30, "%n|%i",	     1234.561				},
+	/*exp*/ { 0,1,22,		     "$1,234.56|USD 1,234.56"	},
+      },
+      {
+	/* #05 */
+	/*inp*/ { 32, "%n|%i",	    -1234.561				},
+	/*exp*/ { 0,1,24,		     "-$1,234.56|-USD 1,234.56"	},
+      },
+      {
+	/* #06 */
+	/*inp*/ { 30, "%12n|%12i",	     1234.561			},
+	/*exp*/ { 0,1,25,		     "   $1,234.56|USD 1,234.56"},
+      },
+      {
+	/* #07 */
+	/*inp*/ { 32, "%12n|%12i",	    -1234.561			},
+	/*exp*/ { 0,1,26,		     "  -$1,234.56|-USD 1,234.56"},
+      },
+      {
+	/* #08 */
+	/*inp*/ { 32, "%#5n|%#5i",	     1234.561			},
+	/*exp*/ { 0,1,26,		     " $ 1,234.56| USD  1,234.56"},
+      },
+      {
+	/* #09 */
+	/*inp*/ { 32, "%#5n|%#5i",	    -1234.561			},
+	/*exp*/ { 0,1,26,		     "-$ 1,234.56|-USD  1,234.56"},
+      },
+      {
+	/* #10 */
+	/*inp*/ { 32, "%=*#5n|%=*#5i",	 1234.561			},
+	/*exp*/ { 0,1,26,		     " $*1,234.56| USD *1,234.56"},
+      },
+      {
+	/* #11 */
+	/*inp*/ { 32, "%=0#5n|%=0#5i",	-1234.561			},
+	/*exp*/ { 0,1,26,		     "-$01,234.56|-USD 01,234.56"},
+      },
+      {
+	/* #12 */
+	/*inp*/ { 32, "%^#5n|%^#5i",	-1234.561			},
+	/*exp*/ { 0,1,24,		     "-$ 1234.56|-USD  1234.56"	},
+      },
+      {
+	/* #13 */
+	/*inp*/ { 32, "%#5.0n|%#5.0i",	 1234.444			},
+	/*exp*/ { 0,1,20,		     " $ 1,234| USD  1,234"	},
+      },
+      {
+	/* #14 */
+	/*inp*/ { 32, "%#5.0n|%#5.4i",	-1234.555			},
+	/*exp*/ { 0,1,25,		     "-$ 1,235|-USD  1,234.5550"},
+      },
+      {
+	/* #15 */
+	/*inp*/ { 32, "%(#5n|%!(#5i",	-1234.561			},
+	/*exp*/ { 0,1,24,		     "($ 1,234.56)|( 1,234.56)"	},
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Tstrfmon, TST_LOC_eucJP },
+#else
+    { Tstrfmon, TST_LOC_ja_UTF8 },
+#endif
+    {
+      {
+	/* #01 */
+	/*inp*/ { 17, "%n %% %i",	 123.00				   },
+	/*exp*/ { 0,1,15,		 "\241\357123 % JPY 123"	   },
+      },
+      {
+	/* #02 */
+	/*inp*/ { 16, "%n %% %i",	 123.00				   },
+	/*exp*/ { 0,1,15,		 "\241\357123 % JPY 123"	   },
+      },
+      {
+	/* #03 */
+	/*inp*/ { 15, "%n %% %i",	 123.00				   },
+	/*exp*/ { E2BIG,1,-1,		 ""				   },
+      },
+      {
+	/* #04 */
+	/*inp*/ { 30, "%n|%i",		 1234.561			   },
+	/*exp*/ { 0,1,17,		 "\241\3571,235|JPY 1,235"	   },
+      },
+      {
+	/* #05 */
+	/*inp*/ { 32, "%n|%i",		-1234.561			   },
+	/*exp*/ { 0,1,19,		 "\241\357-1,235|JPY -1,235"	   },
+      },
+      {
+	/* #06 */
+	/*inp*/ { 32, "%12n|%12i",	 1234.561			   },
+	/*exp*/ { 0,1,25,		 "     \241\3571,235|   JPY 1,235" },
+      },
+      {
+	/* #07 */
+	/*inp*/ { 32, "%12n|%12i",	-1234.561			   },
+	/*exp*/ { 0,1,25,		 "    \241\357-1,235|  JPY -1,235" },
+      },
+      {
+	/* #08 */
+	/*inp*/ { 32, "%#5n|%#5i",	 1234.561			   },
+	/*exp*/ { 0,1,21,		 " \241\357 1,235| JPY  1,235"	   },
+      },
+      {
+	/* #09 */
+	/*inp*/ { 32, "%#5n|%#5i",	-1234.561			   },
+	/*exp*/ { 0,1,21,		 "\241\357- 1,235|JPY - 1,235"	   },
+      },
+      {
+	/* #10 */
+	/*inp*/ { 32, "%=*#5n|%=*#5i",	 1234.561			   },
+	/*exp*/ { 0,1,21,		 " \241\357*1,235| JPY *1,235"	   },
+      },
+      {
+	/* #11 */
+	/*inp*/ { 32, "%=0#5n|%=0#5i",	-1234.561			   },
+	/*exp*/ { 0,1,21,		 "\241\357-01,235|JPY -01,235"	   },
+      },
+      {
+	/* #12 */
+	/*inp*/ { 32, "%^#5n|%^#5i",	-1234.561			   },
+	/*exp*/ { 0,1,19,		 "\241\357- 1235|JPY - 1235"	   },
+      },
+      {
+	/* #13 */
+	/*inp*/ { 32, "%#5.0n|%#5.0i",	 1234.444			   },
+	/*exp*/ { 0,1,21,		 " \241\357 1,234| JPY  1,234"	   },
+      },
+      {
+	/* #14 */
+	/*inp*/ { 32, "%#5.0n|%#5.4i",	-1234.555			   },
+	/*exp*/ { 0,1,26,		 "\241\357- 1,235|JPY - 1,234.5550"},
+      },
+      {
+	/* #15 */
+	/*inp*/ { 32, "%(#5n|%!(#5i",	-1234.561			   },
+	/*exp*/ { 0,1,19,		 "(\241\357 1,235)|( 1,235)"	   },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tstrfmon, TST_LOC_end }
+  }
+};

+ 147 - 0
test/locale-mbwc/dat_strxfrm.c

@@ -0,0 +1,147 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_strxfrm.c
+ *
+ *	 STRXFRM:  size_t strxfrm (char *s1, const char s2, size_t n);
+ */
+
+
+/*
+ *  NOTE:
+ *
+ *  Return value and errno value are checked only for 2nd string:
+ *  org2[]; n1 and n2 don't mean bytes to be translated.
+ *  It means a buffer size including a null character.
+ *  Results of this test depens on results of strcoll().
+ *  If you got errors, check both test results.
+ *
+ *  The buffer size should be enough to contain a string including a
+ *  null char.	Returns the number of bytes of the string (NOT
+ *  including a null char).
+ */
+
+
+
+TST_STRXFRM tst_strxfrm_loc [] = {
+  {
+    { Tstrxfrm, TST_LOC_de },
+    {
+      { /*inp*/ { "\xf6\xc4\xe4\xfc", "\xf6\xc4\xe4\xfc", 17, 17 },  /* #01 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "aA", "Aa",	    10, 10 },  /* #02 */
+	/*exp*/ { 0,0,0 ,			   },
+      },
+      { /*inp*/ { "Aa", "aA",	    10, 10 },  /* #03 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "abc", "",	    13, 13 },  /* #04 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "a", "B",		     7,	 7 },  /* #05 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "B", "a",		     7,	 7 },  /* #06 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      {
+	/* hiragana == latin1 */
+	/*inp*/ { "abc", "\244\241\244\242",  13,  9 },	 /* #07 */
+	/*exp*/ { 0,0,0,		       },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Tstrxfrm, TST_LOC_enUS },
+    {
+      { /*inp*/ { "abcd", "abcd",	    17, 17 },  /* #01 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "aA", "Aa",	    10, 10 },  /* #02 */
+	/*exp*/ { 0,0,0 ,			   },
+      },
+      { /*inp*/ { "Aa", "aA",	    10, 10 },  /* #03 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "abc", "",	    13, 13 },  /* #04 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "a", "B",		     7,	 7 },  /* #05 */
+	/*exp*/ { 0,0,0,			   },
+      },
+      { /*inp*/ { "B", "a",		     7,	 7 },  /* #06 */
+	/*exp*/ { 0,0,0,			   },
+      },
+#ifdef NO_WAIVER
+      {
+	/* <WAIVER> */
+	/*inp*/ { "abc", "\244\241\244\242",  13,  9 },	 /* #07 */
+	/*exp*/ { EINVAL,0,0,		       },
+      },
+#endif
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Tstrxfrm, TST_LOC_eucJP },	 /* ??? */
+    {
+      {
+	/* #01 */
+	/*inp*/ { "\244\242\244\241",  "\244\241\244\242",   5,	 5 },
+	/*exp*/ { 0,0,0,		       },
+      },
+      {
+	/* #02 */
+	/*inp*/ { "\244\241\244\242",  "\244\242\244\241",   5,	 5 },
+	/*exp*/ { 0,0,0,		       },
+      },
+      {
+	/* #03 */
+	/*inp*/ { "\244\242\216\261",  "\216\261\244\242",   5,	 5 },
+	/*exp*/ { 0,0,0,		       },
+      },
+#ifdef NO_WAIVER
+      {
+	/*inp*/ { "AAA", "\216\217",	 5,  5 },  /* #04 */ /* <WAIVER> */
+	/*exp*/ { EINVAL,0,0,		       },
+      },
+#endif
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Tstrxfrm, TST_LOC_ja_UTF8 },	 /* ??? */
+    {
+      {
+	/* #01 */
+	/*inp*/ { "\343\201\202\343\201\201",  "\343\201\201\343\201\202",   7,	 7 },
+	/*exp*/ { 0,0,0,		       },
+      },
+      {
+	/* #02 */
+	/*inp*/ { "\343\201\201\343\201\202",  "\343\201\202\343\201\201",   7,	 7 },
+	/*exp*/ { 0,0,0,		       },
+      },
+      {
+	/* #03 */
+	/*inp*/ { "\343\201\202\357\275\261",  "\357\275\261343\201\202",   7,	 7 },
+	/*exp*/ { 0,0,0,		       },
+      },
+#ifdef NO_WAIVER
+      {
+	/*inp*/ { "AAA", "\340\277\220",	 5,  5 },  /* #04 */ /* <WAIVER> */
+	/*exp*/ { EINVAL,0,0,		       },
+      },
+#endif
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Tstrxfrm, TST_LOC_end }
+  }
+};

+ 185 - 0
test/locale-mbwc/dat_swscanf.c

@@ -0,0 +1,185 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_swscanf.c
+ *
+ *	 SWSCANF:  int	swscanf (const wchar_t *s, const wchar_t *fmt, ...);
+ */
+
+
+#include <errno.h>
+#include <stdlib.h>
+#include "tst_types.h"
+#include "tgn_locdef.h"
+
+
+TST_SWSCANF tst_swscanf_loc [] =
+{
+  {
+    { Tswscanf, TST_LOC_de },
+    {
+      /*------------------------ 01 -----------------------*/
+      { { {
+	0x002D, 0x0031,		0x003A,	   /* %d: -1   */
+	0x0032,			0x003A,	   /* %u:  2   */
+	0x0033, 0x002C, 0x0033, 0x003A,	   /* %f:  3.3 */
+	0x00E4,			0x003A,	   /* %c: 'ä'  */
+	0x00C4, 0x00DC, 0x0000, 0x0000,	   /* %s: "ÄÜ" */
+      },
+	  L"%d:%u:%f:%c:%s", 0
+      },
+	{ /* The fields are: err_val, ret_flag, ret_val,
+	     val_int, val_uns, val_flt, val_c, val_s, val_S.  */
+	  0,1,5,
+	  -1, 2, 3.3, 'ä', "ÄÜ", { 0x0000, },
+	},
+      },
+      /*------------------------ 02 -----------------------*/
+      { { {
+	0x00E4, 0x00C4, 0x0000		       /* "äÄ" */
+      },
+	  L"%lc", 'C'
+      },
+	{ 0,1,1,
+	  0,0,0,0,"", { 0x00E4, 0x0000 },
+	},
+      },
+      /*------------------------ 03 -----------------------*/
+      { { {
+	0x00E4, 0x00C4, 0x0000		       /* "äÄ" */
+      },
+	  L"%ls", 'S'
+      },
+	{ 0,1,1,
+	  0,0,0,0,"", { 0x00E4, 0x00C4, 0x0000 },
+	},
+      },
+      /*------------------------ 04 -----------------------*/
+      /* <NO_WAIVER> x 2 */
+      { { {
+	0x00E4, 0x00C4, 0x0000		       /* "äÄ" */
+      },
+	  L"1%d:2%d:3%d:4%d:5%d:6%d:7%d:8%d:9%d", 0
+      },
+#ifdef SHOJI_IS_RIGHT
+	{ 1,EINVAL,1,WEOF,
+	  0,0,0,0,"", { 0x0000 },
+#else
+	{ 0,1,0,
+	  0,0,0,0,"", { 0x0000 },
+#endif
+	},
+      },
+      /*---------------------------------------------------*/
+      { .is_last = 1}	/* Last element.  */
+    }
+  },
+  {
+    { Tswscanf, TST_LOC_enUS },
+    {
+      /*------------------------ 01 -----------------------*/
+      { { { 0x002D, 0x0031,					    0x003A,
+	    0x0032,						    0x003A,
+	    0x0035, 0x0034, 0x002E, 0x0033, 0x0045, 0x002D, 0x0031, 0x003A,
+	    0x0041,						    0x003A,
+	    0x0061, 0x0062, 0x0000,				    0x0000,
+      },
+	  L"%d:%u:%f:%c:%s", 0
+      },
+	{ 0,1,5,
+	  -1, 2, 5.43, 'A', "ab", { 0x0000 },
+	},
+      },
+      /*------------------------ 02 -----------------------*/
+      /* <NO_WAIVER> x 2 */
+      { { {
+	0x0063, 0x0064, 0x0000
+      },
+	  L"%C", 'C'
+      },
+	{ 0,1,1,
+	  0,0,0,0,"", { 0x0063, 0x0000 },
+	},
+      },
+      /*------------------------ 03 -----------------------*/
+      { { {
+	0x0063, 0x0064, 0x0000
+      },
+	  L"%S", 'S'
+      },
+	{ 0,1,1,
+	  0,0,0,0,"", { 0x0063, 0x0064, 0x0000 },
+	},
+      },
+      /*---------------------------------------------------*/
+      { .is_last = 1}	/* Last element.  */
+    }
+  },
+  {
+#if 0
+    { Tswscanf, TST_LOC_eucJP },
+#else
+    { Tswscanf, TST_LOC_ja_UTF8 },
+#endif
+    {
+      /*------------------------ 01 -----------------------*/
+      { { { 0x002D, 0x0031,	    0x003A,
+	    0x0032,		    0x003A,
+	    0x0033, 0x002E, 0x0033, 0x003A,
+	    0x0062,		    0x003A,
+	    0x0061, 0x0062, 0x0000, 0x0000,
+      },
+	  L"%d:%u:%f:%c:%s", 0
+      },
+	{ 0,1,5,
+	  -1, 2, 3.3, 'b', "ab", { 0x0000 }
+	},
+      },
+      /*------------------------ 02 -----------------------*/
+      { { {
+	0x30A2, 0x30A4, 0x0000
+      },
+	  L"%ls", 'S'
+      },
+	{ 0,1,1,
+	  0,0,0,0,"", { 0x30A2, 0x30A4, 0x0000 }
+	},
+      },
+      /*------------------------ 03 -----------------------*/
+      { { {
+	0x0031,			0x003A,
+	0x0030,			0x003A,
+	0x0033, 0x002E, 0x0039, 0x003A,
+	0x0061,			0x003A,
+	0x0063, 0x0064, 0x0000, 0x0000,
+      },
+	  L"%2$d:%1$u:%3$f:%4$c:%5$s", 0
+      },
+	{ 0,1,5,
+	  0, 1, 3.9, 'a', "cd", { 0x0000 }
+	},
+      },
+#ifdef SHOJI_IS_RIGHT
+      /* XXX This test does not make sense.  The format string is
+	 L"\x1\x2\x25\x53" and it is supposed to match the words
+	 0x30A2, 0x30A4, 0x0001.  */
+      /*------------------------ 04 -----------------------*/
+      /* <NO_WAIVER> x 2 */
+      { { {
+	0x30A2, 0x30A4, 0x0001, 0x0000
+      },
+	  { 0x0001,0x0002,0x0025,0x0053,0x0000 }, 'S'
+      },
+	{ EILSEQ,1,EOF,
+	  0,0,0,0,"", { 0x0000 }
+	},
+      },
+#endif
+      /*---------------------------------------------------*/
+      { .is_last = 1}	/* Last element.  */
+    }
+  },
+  {
+    { Tswscanf, TST_LOC_end }
+  }
+};

+ 24 - 0
test/locale-mbwc/dat_tow-funcs.h

@@ -0,0 +1,24 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *       FILE:  dat_tow-funcs.h
+ *
+ *       ISW*:  int tow*( wint_t wc );
+ */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <wctype.h>
+#include "tst_types.h"
+#include "tgn_locdef.h"
+
+#define TST_TOW_LOC(FUNC, func) \
+        TST_TOW## FUNC    tst_tow## func ##_loc[]
+
+#define TST_TOW_REC(locale, func) \
+        {  Ttow## func,    TST_LOC_## locale },
+
+/*
+ *  NOTE:
+ *        need more test data!
+ */

+ 97 - 0
test/locale-mbwc/dat_towctrans.c

@@ -0,0 +1,97 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_towctrans.c
+ *
+ *	 TOWCTRANS:  wint_t towctrans (wint_t wc, wctrans_t charclass);
+ */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <wctype.h>
+#include "tst_types.h"
+#include "tgn_locdef.h"
+
+/*
+ *  NOTE:
+ *    Set ret_flg = 1, when a return value is expected to be 0 (FALSE).
+ *    Set ret_flg = 0, when a return value is expected to be non-zero (TRUE).
+ *
+ *    Since the functions return *non*-zero value for TRUE, can't
+ *    compare an actual return value with an expected return value.
+ *    Set the ret_flg=0 for TRUE cases and the tst_isw*() will check
+ *    the non-zero value.
+ *
+ *  { { WEOF }, { 0,0,1,0 } },
+ *		      | |
+ *		      | ret_val: an expected return value
+ *		      ret_flg: if 1, compare an actual return value with the
+ *			       ret_val; if 0, the test program checks
+ *			       the actual return value.
+ *
+ *    CAUTION: if a charclass is invalid, the test function gives
+ *    towctrans() an invalid wctrans object instead of a return value
+ *    from wctrans() which is supposed to be 0.
+ */
+
+TST_TOWCTRANS tst_towctrans_loc [] = {
+  {
+    { Ttowctrans, TST_LOC_C },
+    {
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x0010, "xxxxxxx" }, { EINVAL,1,0x0010 }  },
+#else
+      {	 { 0x0010, "xxxxxxx" }, { 0,     1,0x0010 }  },
+#endif
+      {	 { 0x007F, "tolower" }, { 0,	   1,0x007F }  },
+      {	 { 0x0061, "toupper" }, { 0,	   1,0x0041 }  },
+      {	 { 0x0041, "tolower" }, { 0,	   1,0x0061 }  },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Ttowctrans, TST_LOC_de },
+    {
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x0010, "tojkata" }, { EINVAL,1,0x0010 }  },
+#else
+      {	 { 0x0010, "tojkata" }, { 0,     1,0x0010 }  },
+#endif
+      {	 { 0x0080, "tolower" }, { 0,	   1,0x0080 }  },
+      {	 { 0x00EC, "toupper" }, { 0,	   1,0x00CC }  },
+      {	 { 0x00CC, "tolower" }, { 0,	   1,0x00EC }  },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Ttowctrans, TST_LOC_enUS },
+    {
+#ifdef SHOJI_IS_RIGHT
+      {	 { 0x0010, "xxxxxxx" }, { EINVAL,1,0x0010 }  },
+#else
+      {	 { 0x0010, "xxxxxxx" }, { 0,     1,0x0010 }  },
+#endif
+      {	 { 0x007F, "tolower" }, { 0,	   1,0x007F }  },
+      {	 { 0x0061, "toupper" }, { 0,	   1,0x0041 }  },
+      {	 { 0x0041, "tolower" }, { 0,	   1,0x0061 }  },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Ttowctrans, TST_LOC_eucJP },
+#else
+    { Ttowctrans, TST_LOC_ja_UTF8 },
+#endif
+    {
+      {	 { 0xFF21, "tolower" }, { 0,	   1,0xFF41 }  },
+      {	 { 0xFF41, "toupper" }, { 0,	   1,0xFF21 }  },
+      {	 { 0x30A1, "tojhira" }, { 0,	   1,0x3041 }  },
+      {	 { 0x3041, "tojkata" }, { 0,	   1,0x30A1 }  },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Ttowctrans, TST_LOC_end }
+  }
+};

+ 47 - 0
test/locale-mbwc/dat_towlower.c

@@ -0,0 +1,47 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_towlower.c
+ *
+ *	 ISW*:	int towlower (wint_t wc);
+ */
+
+
+#include "dat_tow-funcs.h"
+
+
+TST_TOW_LOC (LOWER, lower) = {
+
+  {   TST_TOW_REC (de, lower)
+      {
+	{  { WEOF   }, { 0,  1, (wint_t)-1 }	},
+	{  { 0x0080 }, { 0,  1, 0x0080     }	},
+	{  { 0x00CC }, { 0,  1, 0x00EC     }	},
+	{  { 0x00EC }, { 0,  1, 0x00EC     }	},
+	{ .is_last = 1 } /* Last element.	 */
+      }
+  },
+  {   TST_TOW_REC (enUS, lower)
+      {
+	{  { WEOF   }, { 0,  1, (wint_t)-1 }	},
+	{  { 0x007F }, { 0,  1, 0x007F     }	},
+	{  { 0x0041 }, { 0,  1, 0x0061     }	},
+	{  { 0x0061 }, { 0,  1, 0x0061     }	},
+	{ .is_last = 1 } /* Last element.	 */
+      }
+  },
+#if 0
+  {   TST_TOW_REC (eucJP, lower)
+#else
+  {   TST_TOW_REC (ja_UTF8, lower)
+#endif
+      {
+	{  { 0x007F }, { 0,  1, 0x007F     }	},
+	{  { 0x0080 }, { 0,  1, 0x0080     }	},
+	{  { 0xFF21 }, { 0,  1, 0xFF41     }	},
+	{  { 0xFF41 }, { 0,  1, 0xFF41     }	},
+	{ .is_last = 1 } /* Last element.	 */
+      }
+  },
+  {   TST_TOW_REC (end, lower) }
+};

+ 47 - 0
test/locale-mbwc/dat_towupper.c

@@ -0,0 +1,47 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_towupper.c
+ *
+ *	 ISW*:	int towupper (wint_t wc);
+ */
+
+
+#include "dat_tow-funcs.h"
+
+
+TST_TOW_LOC (UPPER, upper) = {
+
+  {   TST_TOW_REC (de, upper)
+      {
+	{  { WEOF   }, { 0,  1, (wint_t)-1 }	},
+	{  { 0x0080 }, { 0,  1, 0x0080     }	},
+	{  { 0x00EC }, { 0,  1, 0x00CC     }	},
+	{  { 0x00CC }, { 0,  1, 0x00CC     }	},
+	{ .is_last = 1 } /* Last element.	 */
+      }
+  },
+  {   TST_TOW_REC (enUS, upper)
+      {
+	{  { WEOF   }, { 0,  1, (wint_t)-1 }	},
+	{  { 0x0080 }, { 0,  1, 0x0080     }	},
+	{  { 0x0041 }, { 0,  1, 0x0041     }	},
+	{  { 0x0061 }, { 0,  1, 0x0041     }	},
+	{ .is_last = 1 } /* Last element.	 */
+      }
+  },
+#if 0
+  {   TST_TOW_REC (eucJP, upper)
+#else
+  {   TST_TOW_REC (ja_UTF8, upper)
+#endif
+      {
+	{  { WEOF   }, { 0,  1, (wint_t)-1 }	},
+	{  { 0x007F }, { 0,  1, 0x007F     }	},
+	{  { 0xFF41 }, { 0,  1, 0xFF21     }	},
+	{  { 0xFF21 }, { 0,  1, 0xFF21     }	},
+	{ .is_last = 1 } /* Last element.	 */
+      }
+  },
+  {   TST_TOW_REC (end, upper) }
+};

+ 122 - 0
test/locale-mbwc/dat_wcrtomb.c

@@ -0,0 +1,122 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcrtomb.c
+ *
+ *	 WCRTOMB:  intwcrtomb (char *s, wchar_t wc, mbstate_t *ps);
+ *
+ */
+
+TST_WCRTOMB tst_wcrtomb_loc [] = {
+  {
+    { Twcrtomb, TST_LOC_de },
+    {
+      /* #01 : normal case			       */
+      { /*input.*/ { 1,		 0x00FC,   0,0 },
+	/*expect*/ { 0,	   1,1,	 "ü"	       },
+      },
+      /* #02 : normal case			       */
+      { /*input.*/ { 1,		 0x00D6,   0,0 },
+	/*expect*/ { 0,	   1,1,	 "Ö"	       },
+      },
+      /* #03 : error case			       */
+      { /*input.*/ { 1,		 0xFFA1,   0,0 },
+	/*expect*/ {  EILSEQ,1,-1, ""	       },
+      },
+      /* #04 :				       */
+      { /*input.*/ { 0,		 0x0041,   0,0 },
+	/*expect*/ { 0,	   1,1,	 ""	       },
+      },
+      /* #05 :				       */
+      { /*input.*/ { 0,		 0x0092,   0,0 },
+	/*expect*/ { 0,	   1,1,	 ""	       },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcrtomb, TST_LOC_enUS },
+    {
+      /* #01 : normal case			       */
+      { /*input.*/ { 1,		 0x0041,   0,0 },
+	/*expect*/ { 0,	   1,1,	 "A"	       },
+      },
+      /* #02 : normal case			       */
+      { /*input.*/ { 1,		 0x0042,   0,0 },
+	/*expect*/ { 0,	   1,1,	 "B"	       },
+      },
+      /* #03 : error case			       */
+      /* <WAIVER> x 2 */
+      { /*input.*/ { 1,		 0x0092,   0,0 },  /* assume ascii */
+	/*expect*/ {  EILSEQ,1,-1, ""	       },
+      },
+      /* #04 :				       */
+      { /*input.*/ { 0,		 0x0041,   0,0 },
+	/*expect*/ { 0,	   1,1,	 ""	       },
+      },
+      /* #05 :				       */
+      { /*input.*/ { 0,		 0x0092,   0,0 },
+	/*expect*/ { 0,	   1,1,	 ""	       },
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Twcrtomb, TST_LOC_eucJP },
+    {
+      /* #01 : normal case			       */
+      { /*input.*/ { 1,		 0x3042,   0,0 },
+	/*expect*/ { 0,      1,2,  "\244\242"	   },
+      },
+      /* #02 : normal case			       */
+      { /*input.*/ { 1,		 0x3044,   0,0 },
+	/*expect*/ { 0,      1,2,  "\244\244"	   },
+      },
+      /* #03 : normal case			       */
+      { /*input.*/ { 1,		 0x008E,   0,0 },
+	/*expect*/ { EILSEQ, 1,-1, ""	       },
+      },
+      /* #04 :				       */
+      { /*input.*/ { 0,		 0x3042,   0,0 },
+	/*expect*/ { 0,	   0,0,	 ""	       },
+      },
+      /* #05 :				       */
+      { /*input.*/ { 0,		 0x008E,   0,0 },
+	/*expect*/ { 0,	   0,0,	 ""	       },
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Twcrtomb, TST_LOC_ja_UTF8 },
+    {
+      /* #01 : normal case			       */
+      { /*input.*/ { 1,		 0x3042,   0,0 },
+	/*expect*/ { 0,      1,3,  "\343\201\202"	   },
+      },
+      /* #02 : normal case			       */
+      { /*input.*/ { 1,		 0x3044,   0,0 },
+	/*expect*/ { 0,      1,3,  "\343\201\204"	   },
+      },
+      /* #03 : normal case			       */
+      { /*input.*/ { 1,		 0x008E,   0,0 },
+	/*expect*/ { EILSEQ, 1,-1, ""	       },
+      },
+      /* #04 :				       */
+      { /*input.*/ { 0,		 0x3042,   0,0 },
+	/*expect*/ { 0,	   0,0,	 ""	       },
+      },
+      /* #05 :				       */
+      { /*input.*/ { 0,		 0x008E,   0,0 },
+	/*expect*/ { 0,	   0,0,	 ""	       },
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Twcrtomb, TST_LOC_end }
+  }
+};

+ 116 - 0
test/locale-mbwc/dat_wcscat.c

@@ -0,0 +1,116 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcscat.c
+ *
+ *	 WCSCAT:  wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2)
+ */
+
+/* NOTE:
+   Since this is not a locale sensitive function,
+   it doesn't make sense to test the function on some
+   locales. Better make different test cases for each locale ...
+   (Also some wc* functions are not locale sensitive.)
+*/
+
+
+TST_WCSCAT tst_wcscat_loc [] = {
+
+  {
+    {Twcscat, TST_LOC_de},
+    {
+      /* 1 */
+      {{{ 0x00C1,0x00C2,0x0000	},
+	{			0x00C3,0x00C4,0x0000 }, },
+       {   0,	0,    0,
+	   { 0x00C1,0x00C2,0x00C3,0x00C4,0x0000 }	},
+      },
+      /* 2 */
+      {{{ 0x0001,0x0002,0x0000	},
+	{			0x0003,0x0004,0x0000 }, },
+       {   0,	0,    0,
+	   { 0x0001,0x0002,0x0003,0x0004,0x0000 }	},
+      },
+      /* 3 */
+      {{{ 0x0000		  },
+	{			0x00C3,0x00C4,0x0000 }, },
+       {   0,	0,    0,
+	   {		0x00C3,0x00C4,0x0000 }	},
+      },
+      /* 4 */
+      {{{ 0x0001,0xFFFF,0x0000	},
+	{			0x0080,0x0090,0x0000 }, },
+       {   0,	0,    0,
+	   { 0x0001,0xFFFF,0x0080,0x0090,0x0000 }	},
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+    {Twcscat, TST_LOC_enUS},
+    {
+      /* 1 */
+      {{{ 0x0041,0x0042,0x0000	},
+	{		  0x0043,0x0044,0x0000 }, },
+       {   0,	  0,	0,
+	   { 0x0041,0x0042,0x0043,0x0044,0x0000 }  },
+      },
+      /* 2 */
+      {{{ 0x0001,0x0002,0x0000	},
+	{		  0x0003,0x0004,0x0000 }, },
+       {   0,	  0,	0,
+	   { 0x0001,0x0002,0x0003,0x0004,0x0000 }  },
+      },
+      /* 3 */
+      {{{ 0x0000		    },
+	{		  0x0043,0x0044,0x0000 }, },
+       {   0,	  0,	0,
+	   {		  0x0043,0x0044,0x0000 }  },
+      },
+      /* 4 */
+      {{{ 0x0001,0xFFFF,0x0000	},
+	{		  0x0080,0x0090,0x0000 }, },
+       {   0,	  0,	0,
+	   { 0x0001,0xFFFF,0x0080,0x0090,0x0000 }  },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+#if 0
+    {Twcscat, TST_LOC_eucJP},
+#else
+    {Twcscat, TST_LOC_ja_UTF8},
+#endif
+    {
+      /* 1 */
+      {{{ 0x30A2,0x74E0,0x0000	},
+	{			0xFF71,0x0041,0x0000 }, },
+       {   0,	0,    0,
+	   { 0x30A2,0x74E0,0xFF71,0x0041,0x0000 }	},
+      },
+      /* 2 */
+      {{{ 0x0001,0x0002,0x0000	},
+	{			0x0003,0x0004,0x0000 }, },
+       {   0,	0,    0,
+	   { 0x0001,0x0002,0x0003,0x0004,0x0000 }	},
+      },
+      /* 3 */
+      {{{ 0x30A2,0xFF71,0x0000	},
+	{			0x0000		     }, },
+       {   0,	0,    0,
+	   { 0x30A2,0xFF71,0x0000		     }	},
+      },
+      /* 4 */
+      {{{ 0x0001,0xFFFF,0x0000	},
+	{			0x0080,0x0090,0x0000 }, },
+       {   0,	0,    0,
+	   { 0x0001,0xFFFF,0x0080,0x0090,0x0000 }	},
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+    {Twcscat, TST_LOC_end}
+  }
+};

+ 94 - 0
test/locale-mbwc/dat_wcschr.c

@@ -0,0 +1,94 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcschr.c
+ *
+ *	 WCSCHR:  wchar_t  *wcschr (const wchar_t *ws, wchar_t wc);
+ */
+
+TST_WCSCHR tst_wcschr_loc [] = {
+
+    {	{ Twcschr, TST_LOC_de },
+	{
+	  { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C0 },  /* #1 */
+	    /*expect*/ { 0,1,(wchar_t *)NULL },
+	  },
+	  { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C1 },  /* #2 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C2 },  /* #3 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C3 },  /* #4 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x0000 },  /* #5 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x0000,0x00C2,0x00C3,0x0000 }, 0x00C1 },  /* #6 */
+	    /*expect*/ { 0,1,(wchar_t *)NULL },
+	  },
+	  { /*input.*/ { { 0x0000,0x00C2,0x00C3,0x0000 }, 0x0000 },  /* #7 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twcschr, TST_LOC_enUS },
+	{
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0040 },  /* #1 */
+	    /*expect*/ { 0,1,(wchar_t *)NULL },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0041 },  /* #2 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0042 },  /* #3 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0043 },  /* #4 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0000 },  /* #5 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, 0x0041 },  /* #6 */
+	    /*expect*/ { 0,1,(wchar_t *)NULL },
+	  },
+	  { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, 0x0000 },  /* #7 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+#if 0
+    {	{ Twcschr, TST_LOC_eucJP },
+#else
+    {	{ Twcschr, TST_LOC_ja_UTF8 },
+#endif
+	{
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3040 },  /* #1 */
+	    /*expect*/ { 0,1,(wchar_t *)NULL },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3041 },  /* #2 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3042 },  /* #3 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3043 },  /* #4 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x0000 },  /* #5 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, 0x3041 },  /* #6 */
+	    /*expect*/ { 0,1,(wchar_t *)NULL },
+	  },
+	  { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, 0x0000 },  /* #7 */
+	    /*expect*/ { 0,0,0 },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twcschr, TST_LOC_end } }
+};

+ 137 - 0
test/locale-mbwc/dat_wcscmp.c

@@ -0,0 +1,137 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE: dat_wcscmp.c
+ *
+ *	 WCSCMP:  int  wcscmp (const wchar_t *ws1, const wchar_t *ws2);
+ */
+
+/* NOTE:
+	This is not a locale sensitive function and
+	it may not make sence testing it for each locale ...
+*/
+
+
+TST_WCSCMP tst_wcscmp_loc [] = {
+  {
+    { Twcscmp, TST_LOC_de },
+    {
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #1 */
+	/*expect*/ { 0,1,0,			  },
+      },
+      { /*input.*/ { { 0x0000,0x00D1,0x00D3,0x0000 },
+		     { 0x0000,0x00D2,0x00D3,0x0000 }, },  /* #2 */
+	/*expect*/ { 0,1,0,			  },
+      },
+      { /*input.*/ { { 0x00D1,0x00D1,0x00D3,0x0000 },
+		     { 0x0000,0x00D2,0x00D3,0x0000 }, },  /* #3 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D1,0x00D3,0x0000 }, },  /* #4 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x00D1,0x00D5,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #5 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D9,0x0000 }, },  /* #6 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x0000	       },
+		     { 0x00D1,0x00D2,0x00D9,0x0000 }, },  /* #7 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D9,0x0000 },
+		     { 0x00D1,0x00D2,0x0000	       }, },  /* #8 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcscmp, TST_LOC_enUS },
+    {
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, },  /* #1 */
+	/*expect*/ { 0,1,0,			  },
+      },
+      { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 },
+		     { 0x0000,0x0042,0x0043,0x0000 }, },  /* #2 */
+	/*expect*/ { 0,1,0,			  },
+      },
+      { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 },
+		     { 0x0000,0x0042,0x0043,0x0000 }, },  /* #3 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0041,0x0043,0x0000 }, },  /* #4 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x0041,0x0045,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, },  /* #5 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0049,0x0000 }, },  /* #6 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0000	       },
+		     { 0x0041,0x0042,0x0049,0x0000 }, },  /* #7 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 },
+		     { 0x0041,0x0042,0x0000	       }, },  /* #8 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcscmp, TST_LOC_eucJP},
+#else
+    { Twcscmp, TST_LOC_ja_UTF8},
+#endif
+    {
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, },  /* #1 */
+	/*expect*/ { 0,1,0,			  },
+      },
+      { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 },
+		     { 0x0000,0x3042,0x3043,0x0000 }, },  /* #2 */
+	/*expect*/ { 0,1,0,			  },
+      },
+      { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 },
+		     { 0x0000,0x3042,0x3043,0x0000 }, },  /* #3 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3041,0x3043,0x0000 }, },  /* #4 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x3041,0x3045,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, },  /* #5 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3049,0x0000 }, },  /* #6 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x0000	       },
+		     { 0x3041,0x3042,0x3049,0x0000 }, },  /* #7 */
+	/*expect*/ { 0,1,-1,			  },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3049,0x0000 },
+		     { 0x3041,0x3042,0x0000	       }, },  /* #8 */
+	/*expect*/ { 0,1,1,			  },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcschr, TST_LOC_end}
+  }
+};

+ 210 - 0
test/locale-mbwc/dat_wcscoll.c

@@ -0,0 +1,210 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE: dat_wcscoll.c
+ *
+ *	 WCSCOLL:  int	wcscoll (const wchar_t *ws1, const wchar_t *ws2);
+ */
+
+/*
+ *  CAUTION:
+ *	     When LC_COLLATE (or LC_ALL) is set for ja_JP.EUC,
+ *	     wcscoll() core-dumps for big values such as 0x3041
+ *	     (0x0041 is okay) in glibc 2.1.2.
+ *
+ *  NOTE:
+ *    a) When 0 is expected as a return value, set ret_flg=1.
+ *	 - the return value is compared with an expected value: ret_val.
+ *    b) When a positive value is expected as a return value,
+ *	 set ret_flg=0 and set cmp_flg=+1.
+ *	 - the return value is not compared with the expected value
+ *	   (can not be compared); instead, the test program checks
+ *	   if the return value is positive when cmp_flg=+1.
+ *    c) When a negative value is expected as a return value,
+ *	 ......
+ *    d) When data contains invalid values, set err_val to the expected errno.
+ *	 Set ret_flg=0 and cmp_flg=0 so that it doesn't compare
+ *	 the return value with an expected value or doesn't check
+ *	 the sign of the return value.
+ *
+ *
+ *	     -------------------------------------------
+ *	     CASE  err_val   ret_flg  ret_val	 cmp_flg
+ *	     -------------------------------------------
+ *	      a)      0	 1	  0	    0
+ *	      b)      0	 0	  0	   +1
+ *	      c)      0	 0	  0	   -1
+ *	      d)    EINVAL	 0	  0	    0
+ *	     -------------------------------------------
+ */
+
+
+TST_WCSCOLL tst_wcscoll_loc [] = {
+
+    {	{ Twcscoll, TST_LOC_de },
+	{
+	  { /*input.*/ { { 0x00E1,0x00E2,0x00E3,0x0000 },
+			 { 0x00E1,0x00E2,0x00E3,0x0000 }, },  /* #1 */
+	    /*expect*/ { 0,1,0, 0,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x00E1,0x00E3,0x0000 },
+			 { 0x0000,0x00E2,0x00E3,0x0000 }, },  /* #2 */
+	    /*expect*/ { 0,1,0, 0,			  },
+	  },
+	  { /*input.*/ { { 0x00E1,0x00E1,0x00E3,0x0000 },
+			 { 0x0000,0x00E2,0x00E3,0x0000 }, },  /* #3 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x00E2,0x00E3,0x0000 },
+			 { 0x00E1,0x00E1,0x00E3,0x0000 }, },  /* #4 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x00E1,0x0042,0x00E3,0x0000 },
+			 { 0x00E1,0x0061,0x00E3,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x00E1,0x0061,0x00E3,0x0000 },
+			 { 0x00E1,0x0042,0x00E3,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x00E1,0x00E2,0x0000	       },
+			 { 0x00E1,0x00E2,0x00E9,0x0000 }, },  /* #7 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x00E1,0x00E2,0x00E9,0x0000 },
+			 { 0x00E1,0x00E2,0x0000	       }, },  /* #8 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x00E1,0x0092,0x00E9,0x0000 },
+			 { 0x00E1,0x008E,0x00E9,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,0,0, +1,		       },
+	  },
+	  { /*input.*/ { { 0x00E1,0x008E,0x00E9,0x0000 },
+			 { 0x00E1,0x0092,0x00E9,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,0,0, -1,		       },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twcscoll, TST_LOC_en },
+	{
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #1 */
+	    /*expect*/ { 0,1,0, 0,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 },
+			 { 0x0000,0x0042,0x0043,0x0000 }, },  /* #2 */
+	    /*expect*/ { 0,1,0, 0,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 },
+			 { 0x0000,0x0042,0x0043,0x0000 }, },  /* #3 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+			 { 0x0041,0x0041,0x0043,0x0000 }, },  /* #4 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+#ifdef SHOJI_IS_RIGHT
+	  /* <WAIVER> */ /* assume ascii */
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0041,0x0061,0x0043,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  /* <WAIVER> */ /* assume ascii */
+	  { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 },
+			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+#else
+	  /* XXX Correct order is lowercase before uppercase.  */
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0041,0x0061,0x0043,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 },
+			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+#endif
+	  { /*input.*/ { { 0x0041,0x0042,0x0000	       },
+			 { 0x0041,0x0042,0x0049,0x0000 }, },  /* #7 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 },
+			 { 0x0041,0x0042,0x0000	       }, },  /* #8 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+#ifdef SHOJI_IS_RIGHT
+	  { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 },
+			 { 0x0041,0x008E,0x0049,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,0,0, +1,		       },
+	  },
+	  { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 },
+			 { 0x0041,0x0092,0x0049,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,0,0, -1,		       },
+	  },
+#else
+	  /* Do not assume position of character out of range.  */
+	  { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 },
+			 { 0x0041,0x008E,0x0049,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,0,0, 0,		       },
+	  },
+	  { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 },
+			 { 0x0041,0x0092,0x0049,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,0,0, 0,		       },
+	  },
+#endif
+	  { .is_last = 1 }
+	}
+    },
+#if 0
+    {	{ Twcscoll, TST_LOC_eucJP },
+#else
+    {	{ Twcscoll, TST_LOC_ja_UTF8 },
+#endif
+	{
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 { 0x3041,0x3042,0x3043,0x0000 }, },  /* #1 */
+	    /*expect*/ { 0,1,0, 0,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 },
+			 { 0x0000,0x3042,0x3043,0x0000 }, },  /* #2 */
+	    /*expect*/ { 0,1,0, 0,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 },
+			 { 0x0000,0x3042,0x3043,0x0000 }, },  /* #3 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+			 { 0x3041,0x3041,0x3043,0x0000 }, },  /* #4 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x0042,0x3043,0x0000 },
+			 { 0x3041,0x0061,0x3043,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x0061,0x3043,0x0000 },
+			 { 0x3041,0x0042,0x3043,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0xFF71,0x0000 },
+			 { 0x3041,0x3042,0x30A2,0x0000 }, },  /* #7 */
+	    /*expect*/ { 0,0,0, -1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x30A2,0x0000 },
+			 { 0x3041,0x3042,0xFF71,0x0000 }, },  /* #8 */
+	    /*expect*/ { 0,0,0, +1,			  },
+	  },
+	  { /*input.*/ { { 0x30FF,0x3092,0x3049,0x0000 },
+			 { 0x3041,0x308E,0x3049,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,0,0, -1,		       },
+	  },
+	  { /*input.*/ { { 0x3041,0x308E,0x3049,0x0000 },
+			 { 0x30FF,0x3092,0x3049,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,0,0, +1,		       },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twcscoll, TST_LOC_end } }
+};

+ 44 - 0
test/locale-mbwc/dat_wcscpy.c

@@ -0,0 +1,44 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcscpy.c
+ *
+ *	 WCSCPY:  wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2);
+ */
+
+TST_WCSCPY tst_wcscpy_loc [] = {
+
+    {	{ Twcscpy, TST_LOC_de },
+	{
+	    { {		  { 0x00F1,0x00F2,0x00F3,0x0000	 }, },	   /* 1 */
+	      {	 0,0,0,   { 0x00F1,0x00F2,0x00F3,0x0000, }  }, },
+	    { {		  { 0x0000,0x00F2,0x00F3,0x0000	 }, },	   /* 2 */
+	      {	 0,0,0,   { 0x0000,			 }  }, },
+	    { .is_last = 1 }
+	}
+    },
+    {	{ Twcscpy, TST_LOC_enUS },
+	{
+	    { {		  { 0x0041,0x0082,0x0043,0x0000	 }, },	   /* 1 */
+	      {	 0,0,0,   { 0x0041,0x0082,0x0043,0x0000, }  }, },
+	    { {		  { 0x0000,0x0082,0x0043,0x0000	 }, },	   /* 2 */
+	      {	 0,0,0,   { 0x0000,			 }  }, },
+	    { .is_last = 1 }
+	}
+    },
+#if 0
+    {	{ Twcscpy, TST_LOC_eucJP },
+#else
+    {	{ Twcscpy, TST_LOC_ja_UTF8 },
+#endif
+	{
+	    { {		  { 0x3041,0x0092,0x3043,0x0000	 }, },	   /* 1 */
+	      {	 0,0,0,   { 0x3041,0x0092,0x3043,0x0000, }  }, },
+	    { {		  { 0x0000,0x0092,0x3043,0x0000	 }, },	   /* 2 */
+	      {	 0,0,0,   { 0x0000,			 }  }, },
+	    { .is_last = 1 }
+	}
+    },
+    {	{ Twcscpy, TST_LOC_end }}
+
+};

+ 164 - 0
test/locale-mbwc/dat_wcscspn.c

@@ -0,0 +1,164 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcscspn.c
+ *
+ *	 WCSCSPN:  size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2);
+ */
+
+
+TST_WCSCSPN tst_wcscspn_loc [] = {
+
+    {	{ Twcscspn, TST_LOC_de },
+	{
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 { 0x00D1,0x0000	       }, },  /* #1 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 {	  0x00D2,0x0000	       }, },  /* #2 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 {		 0x00D3,0x0000 }, },  /* #3 */
+	    /*expect*/ { 0,1,2,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 {	  0x00D2,0x00D3,0x0000 }, },  /* #4 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 { 0x00D2,0x00D3,0x00D4,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 { 0x00D3,0x00D4,0x00D5,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,1,2,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #7 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+			 { 0x00D2,0x000		       }, },  /* #8 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+			 { 0x0000,0x00D2,0x00D3,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,1,3,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x0000	       },
+			 { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x00D1,0x00D2,0x0000	       },
+			 { 0x00D1,0x00D3,0x00D4,0x0000 }, },  /* #11 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twcscspn, TST_LOC_enUS },
+	{
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0041,0x0000	       }, },  /* #1 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 {	  0x0042,0x0000	       }, },  /* #2 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 {		 0x0043,0x0000 }, },  /* #3 */
+	    /*expect*/ { 0,1,2,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 {	  0x0042,0x0043,0x0000 }, },  /* #4 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0042,0x0043,0x0044,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0043,0x0044,0x0045,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,1,2,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #7 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+			 { 0x0042,0x000		       }, },  /* #8 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+			 { 0x0000,0x0042,0x0043,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,1,3,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0000	       },
+			 { 0x0041,0x0042,0x0043,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x0041,0x0042,0x0000	       },
+			 { 0x0041,0x0043,0x0044,0x0000 }, },  /* #11 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+#if 0
+    {	{ Twcscspn, TST_LOC_eucJP },
+#else
+    {	{ Twcscspn, TST_LOC_ja_UTF8 },
+#endif
+	{
+	  { /*input.*/ { { 0x3041,0x3042,0x0043,0x0000 },
+			 { 0x3041,0x0000	       }, },  /* #1 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x0043,0x0000 },
+			 {	  0x3042,0x0000	       }, },  /* #2 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 {		 0x3043,0x0000 }, },  /* #3 */
+	    /*expect*/ { 0,1,2,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 {	  0x3042,0x3043,0x0000 }, },  /* #4 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 { 0x3042,0x3043,0x3044,0x0000 }, },  /* #5 */
+	    /*expect*/ { 0,1,1,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 { 0x3043,0x3044,0x3045,0x0000 }, },  /* #6 */
+	    /*expect*/ { 0,1,2,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 { 0x3041,0x3042,0x3043,0x0000 }, },  /* #7 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+			 { 0x3042,0x0000	       }, },  /* #8 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+			 { 0x0000,0x3042,0x3043,0x0000 }, },  /* #9 */
+	    /*expect*/ { 0,1,3,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x0000	       },
+			 { 0x3041,0x3042,0x3043,0x0000 }, },  /* #10 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { /*input.*/ { { 0x3041,0x3042,0x0000	       },
+			 { 0x3041,0x3043,0x3044,0x0000 }, },  /* #11 */
+	    /*expect*/ { 0,1,0,			  },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twcscspn, TST_LOC_end }}
+};

+ 62 - 0
test/locale-mbwc/dat_wcslen.c

@@ -0,0 +1,62 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *       FILE:  dat_wcslen.c
+ *
+ *       WCSLEN:  size_t wcslen (const wchar_t *ws);
+ */
+
+
+/*
+ *  NOTE:
+ *
+ *      a header in each expected data:
+ *
+ *         int  err_val;  ... expected value for errno
+ *        <typ> ret_flg; ... set ret_flg=1 to compare an expected
+ *                           value with an actual value
+ *        <typ> ret_val; ... expected value for return
+ */
+
+
+TST_WCSLEN tst_wcslen_loc [] = {
+
+  {   { Twcslen, TST_LOC_de },
+      {
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 } },  /* #01 */
+	  /*expect*/ { 0,1,3,                        },
+	},
+	{ /*input.*/ { { 0x0000 }                      },  /* #02 */
+	  /*expect*/ { 0,1,0,                        },
+	},
+	{ .is_last = 1 }
+      }
+  },
+  {   { Twcslen, TST_LOC_enUS },
+      {
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 } },  /* #01 */
+	  /*expect*/ { 0,1,3,                        },
+	},
+	{ /*input.*/ { { 0x0000 }                      },  /* #02 */
+	  /*expect*/ { 0,1,0,                        },
+	},
+	{ .is_last = 1 }
+      }
+  },
+#if 0
+  {   { Twcslen, TST_LOC_eucJP },
+#else
+  {   { Twcslen, TST_LOC_ja_UTF8 },
+#endif
+      {
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 } },  /* #01 */
+	  /*expect*/ { 0,1,3,                        },
+	},
+	{ /*input.*/ { { 0x0000 }                      },  /* #02 */
+	  /*expect*/ { 0,1,0,                        },
+	},
+	{ .is_last = 1 }
+      }
+  },
+  {   { Twcslen, TST_LOC_end }}
+};

+ 158 - 0
test/locale-mbwc/dat_wcsncat.c

@@ -0,0 +1,158 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcsncat.c
+ *
+ *	 WCSNCAT:  wchar_t *wcsncat (wchar_t *ws1, wchar_t *ws2, size_t n);
+ */
+
+
+/*
+ *  Note:
+ *	  A terminating null wide chararacter is always appended to
+ *	  the result: ws1.
+ *
+ */
+
+
+TST_WCSNCAT tst_wcsncat_loc [] = {
+  {
+    {Twcsncat, TST_LOC_de},
+    {
+      /* 1 */
+      {
+	/* Input: */
+	{{ 0x00D1,0x00D2,0x0000	 },
+	 {		    0x00D3,0x00D4,0x0000 }, 3 },
+	/* Expect: */
+	{   0,	0,    0,
+	    { 0x00D1,0x00D2,0x00D3,0x00D4,0x0000 }    },
+      },
+      /* 2 */
+      {{{ 0x00D1,0x00D2,0x0000	},
+	{		   0x00D3,0x00D4,0x0000 }, 2 },
+       {   0,    0,    0,
+	   { 0x00D1,0x00D2,0x00D3,0x00D4,0x0000 }    },
+      },
+      /* 3 */
+      {{{ 0x00E1,0x00E2,0x0000	},
+	{		   0x00E3,0x00E4,0x0000 }, 1 },
+       {   0,    0,    0,
+	   { 0x00E1,0x00E2,0x00E3,0x0000	}    },
+      },
+      /* 4 */
+      {{{ 0x00E1,0x00E2,0x0000	},
+	{		   0x00E3,0x00E4,0x0000 }, 0 },
+       {   0,    0,    0,
+	   { 0x00E1,0x00E2,0x0000		}    },
+      },
+      /* 5 */
+      {{{ 0x0000		},
+	{		   0x00D3,0x00D4,0x0000 }, 3 },
+       {   0,    0,    0,
+	   {		   0x00D3,0x00D4,0x0000 }    },
+      },
+      /* 6 */
+      {{{ 0x00E1,0x00E2,0x0000	},
+	{		   0x0000		}, 3 },
+       {   0,    0,    0,
+	   { 0x00E1,0x00E2,0x0000		}    },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+    {Twcsncat, TST_LOC_enUS},
+    {
+      /* 1 */
+      {
+	/* Input:  */
+	{{ 0x0041,0x0042,0x0000	 },
+	 {		    0x0043,0x0044,0x0000 }, 3 },
+	/* Expect:  */
+	{   0,	0,    0,
+	    { 0x0041,0x0042,0x0043,0x0044,0x0000 }    },
+      },
+      /* 2 */
+      {{{ 0x0041,0x0042,0x0000	},
+	{		   0x0043,0x0044,0x0000 }, 2 },
+       {   0,    0,    0,
+	   { 0x0041,0x0042,0x0043,0x0044,0x0000 }    },
+      },
+      /* 3 */
+      {{{ 0x0051,0x0052,0x0000	},
+	{		   0x0053,0x0054,0x0000 }, 1 },
+       {   0,    0,    0,
+	   { 0x0051,0x0052,0x0053,0x0000	}    },
+      },
+      /* 4 */
+      {{{ 0x0051,0x0052,0x0000	},
+	{		   0x0053,0x0054,0x0000 }, 0 },
+       {   0,    0,    0,
+	   { 0x0051,0x0052,0x0000		}    },
+      },
+      /* 5 */
+      {{{ 0x0000		},
+	{		   0x0043,0x0044,0x0000 }, 3 },
+       {   0,    0,    0,
+	   {		   0x0043,0x0044,0x0000 }    },
+      },
+      /* 6 */
+      {{{ 0x0051,0x0052,0x0000	},
+	{		   0x0000		}, 3 },
+       {   0,    0,    0,
+	   { 0x0051,0x0052,0x0000		}    },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+#if 0
+    {Twcsncat, TST_LOC_eucJP},
+#else
+    {Twcsncat, TST_LOC_ja_UTF8},
+#endif
+    {
+      /* 1 */
+      {{{ 0x3041,0x3042,0x0000	},
+	{		   0x3043,0x3044,0x0000 }, 3 },
+       {   0,    0,    0,
+	   { 0x3041,0x3042,0x3043,0x3044,0x0000 }    },
+      },
+      /* 2 */
+      {{{ 0x30A2,0x30A3,0x0000	},
+	{		   0xFF71,0xFF72,0x0000 }, 2 },
+       {   0,    0,    0,
+	   { 0x30A2,0x30A3,0xFF71,0xFF72,0x0000 }    },
+      },
+      /* 3 */
+      {{{ 0x3051,0x3052,0x0000	},
+	{		   0x3053,0x3054,0x0000 }, 1 },
+       {   0,    0,    0,
+	   { 0x3051,0x3052,0x3053,0x0000	}    },
+      },
+      /* 4 */
+      {{{ 0x3051,0x3052,0x0000	},
+	{		   0x3053,0x3054,0x0000 }, 0 },
+       {   0,    0,    0,
+	   { 0x3051,0x3052,0x0000		}    },
+      },
+      /* 5 */
+      {{{ 0x0000		},
+	{		   0x3043,0x3044,0x0000 }, 3 },
+       {   0,    0,    0,
+	   {		   0x3043,0x3044,0x0000 }    },
+      },
+      /* 6 */
+      {{{ 0x3051,0x3052,0x0000	},
+	{		   0x0000		}, 3 },
+       {   0,    0,    0,
+	   { 0x3051,0x3052,0x0000		}    },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+    {Twcsncat, TST_LOC_end}
+  }
+};

+ 144 - 0
test/locale-mbwc/dat_wcsncmp.c

@@ -0,0 +1,144 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcsncmp.c
+ *
+ *	 WCSNCMP:  int wcsncmp (const wchar_t *ws1, const wchar_t *ws2,
+ *				size_t n);
+ */
+
+TST_WCSNCMP tst_wcsncmp_loc [] = {
+  {
+    { Twcsncmp, TST_LOC_de },
+    {
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, 4 },  /* #01 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, 3 },  /* #02 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D1,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, 2 },  /* #03 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D0,0x00D2,0x00D3,0x0000 }, 0 },  /* #04 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		     { 0x0000,0x00D2,0x00D1,0x0000 }, 3 },  /* #05 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x0000,0x00D2,0x00D3,0x0000 }, 3 },  /* #06 */
+	/*expect*/ { 0,1,0x00D1,			},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D9,0x0000 }, 2 },  /* #07 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D9,0x0000 }, 3 },  /* #08 */
+	/*expect*/ { 0,1,-0x0006,			},
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x0000	   }, 4 },  /* #09 */
+	/*expect*/ { 0,1,0x00D3,			},
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsncmp, TST_LOC_enUS },
+    {
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, 4 },  /* #01 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, 3 },  /* #02 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0041,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, 2 },  /* #03 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0040,0x0042,0x0043,0x0000 }, 0 },  /* #04 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		     { 0x0000,0x0042,0x0041,0x0000 }, 3 },  /* #05 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0000,0x0042,0x0043,0x0000 }, 3 },  /* #06 */
+	/*expect*/ { 0,1,0x0041,			},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0049,0x0000 }, 2 },  /* #07 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0049,0x0000 }, 3 },  /* #08 */
+	/*expect*/ { 0,1,-0x0006,			},
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0000	   }, 4 },  /* #09 */
+	/*expect*/ { 0,1,0x0043,			},
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcsncmp, TST_LOC_eucJP },
+#else
+    { Twcsncmp, TST_LOC_ja_UTF8 },
+#endif
+    {
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, 4 },  /* #01 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, 3 },  /* #02 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3041,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, 2 },  /* #03 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3040,0x3042,0x3043,0x0000 }, 0 },  /* #04 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		     { 0x0000,0x3042,0x3041,0x0000 }, 3 },  /* #05 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x0000,0x3042,0x3043,0x0000 }, 3 },  /* #06 */
+	/*expect*/ { 0,1,0x3041,			},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3049,0x0000 }, 2 },  /* #07 */
+	/*expect*/ { 0,1,0,				},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3049,0x0000 }, 3 },  /* #08 */
+	/*expect*/ { 0,1,-0x0006,			},
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x0000	   }, 4 },  /* #09 */
+	/*expect*/ { 0,1,0x3043,			},
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsncmp, TST_LOC_end }
+  }
+};

+ 119 - 0
test/locale-mbwc/dat_wcsncpy.c

@@ -0,0 +1,119 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *       FILE:  dat_wcsncpy.c
+ *
+ *       WCSNCPY:  wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2,
+ *                                   size_t n);
+ */
+
+
+/* Note:
+ *
+ *       An initial value of ws1 in the test program is defined as:
+ *
+ *       #define WCSNUM_NCPY 7
+ *       wchar_t ws1 [WCSSIZE] = { 0x9999, 0x9999, 0x9999, 0x9999,
+ *                                 0x9999, 0x9999, 0x0000 };
+ * */
+
+
+TST_WCSNCPY tst_wcsncpy_loc [] = {
+  {
+    {Twcsncpy, TST_LOC_de},
+    {
+      /* 1 */
+      {{           { 0x00D1,0x00D2,0x00D3,0x0000                      }, 6 },
+       {    0,0,0, { 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000 }    },
+      },
+      /* 2 */
+      {{           { 0x00D1,0x00D2,0x00D3,0x0000                      }, 5 },
+       {    0,0,0, { 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x9999,0x0000 }    },
+      },
+      /* 3 */
+      {{           { 0x00D1,0x00D2,0x00D3,0x0000                      }, 3 },
+       {    0,0,0, { 0x00D1,0x00D2,0x00D3,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 4 */
+      {{           { 0x00D1,0x00D2,0x00D3,0x0000                      }, 2 },
+       {    0,0,0, { 0x00D1,0x00D2,0x9999,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 5 */
+      {{           { 0x00D1,0x00D2,0x00D3,0x0000                      }, 0 },
+       {    0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 6 */
+      {{           { 0x0000,0x00D2,0x00D3,0x0000                      }, 3 },
+       {    0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+    {Twcsncpy, TST_LOC_enUS},
+    {
+      /* 1 */
+      {{           { 0x0041,0x0042,0x0043,0x0000                      }, 6 },
+       {    0,0,0, { 0x0041,0x0042,0x0043,0x0000,0x0000,0x0000,0x0000 }    },
+      },
+      /* 2 */
+      {{           { 0x0041,0x0042,0x0043,0x0000                      }, 5 },
+       {    0,0,0, { 0x0041,0x0042,0x0043,0x0000,0x0000,0x9999,0x0000 }    },
+      },
+      /* 3 */
+      {{           { 0x0041,0x0042,0x0043,0x0000                      }, 3 },
+       {    0,0,0, { 0x0041,0x0042,0x0043,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 4 */
+      {{           { 0x0041,0x0042,0x0043,0x0000                      }, 2 },
+       {    0,0,0, { 0x0041,0x0042,0x9999,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 5 */
+      {{           { 0x0041,0x0042,0x0043,0x0000                      }, 0 },
+       {    0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 6 */
+      {{           { 0x0000,0x0042,0x0043,0x0000                      }, 3 },
+       {    0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+#if 0
+    {Twcsncpy, TST_LOC_eucJP},
+#else
+    {Twcsncpy, TST_LOC_ja_UTF8},
+#endif
+    {
+      /* 1 */
+      {{           { 0x3041,0x3042,0x3043,0x0000                      }, 6 },
+       {    0,0,0, { 0x3041,0x3042,0x3043,0x0000,0x0000,0x0000,0x0000 }    },
+      },
+      /* 2 */
+      {{           { 0x3041,0x3042,0x3043,0x0000                      }, 5 },
+       {    0,0,0, { 0x3041,0x3042,0x3043,0x0000,0x0000,0x9999,0x0000 }    },
+      },
+      /* 3 */
+      {{           { 0x3041,0x3042,0x3043,0x0000                      }, 3 },
+       {    0,0,0, { 0x3041,0x3042,0x3043,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 4 */
+      {{           { 0x3041,0x3042,0x3043,0x0000                      }, 2 },
+       {    0,0,0, { 0x3041,0x3042,0x9999,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 5 */
+      {{           { 0x3041,0x3042,0x3043,0x0000                      }, 0 },
+       {    0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      /* 6 */
+      {{           { 0x0000,0x3042,0x3043,0x0000                      }, 3 },
+       {    0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 }    },
+      },
+      {.is_last = 1}
+    }
+  },
+  {
+    {Twcsncpy, TST_LOC_end}
+  }
+};

+ 176 - 0
test/locale-mbwc/dat_wcspbrk.c

@@ -0,0 +1,176 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcspbrk.c
+ *
+ *	 WCSSTR:  wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2);
+ */
+
+
+/*
+ * NOTE:
+ *	 This is not a locale sensitive function.
+ *	 So those data in each locale doesn't make sense
+ *	 ... (redundant test cases)
+ */
+
+
+TST_WCSPBRK tst_wcspbrk_loc [] = {
+  {
+    { Twcspbrk, TST_LOC_de },
+    {
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x0000		   }, },  /* #01 */
+	/*expect*/ { 0,0,0,		    0x00D1    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     {	      0x00D2,0x0000	   }, },  /* #02 */
+	/*expect*/ { 0,0,0,		    0x00D2    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     {		     0x00D3,0x0000 }, },  /* #03 */
+	/*expect*/ { 0,0,0,		    0x00D3    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x0000	   }, },  /* #04 */
+	/*expect*/ { 0,0,0,		    0x00D1    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     {	      0x00D2,0x00D3,0x0000 }, },  /* #05 */
+	/*expect*/ { 0,0,0,		    0x00D2    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #06 */
+	/*expect*/ { 0,0,0,		    0x00D1    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D0,0x00D4,0x00D5,0x0000 }, },  /* #07 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D5,0x00D0,0x00D4,0x0000 }, },  /* #08 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x0000			   }, },  /* #09 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x0000		   }, },  /* #10 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		     { 0x0000			   }, },  /* #11 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcspbrk, TST_LOC_enUS },
+    {
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0000		   }, },  /* #01 */
+	/*expect*/ { 0,0,0,		    0x0041    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     {	      0x0042,0x0000	   }, },  /* #02 */
+	/*expect*/ { 0,0,0,		    0x0042    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     {		     0x0043,0x0000 }, },  /* #03 */
+	/*expect*/ { 0,0,0,		    0x0043    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0000	   }, },  /* #04 */
+	/*expect*/ { 0,0,0,		    0x0041    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     {	      0x0042,0x0043,0x0000 }, },  /* #05 */
+	/*expect*/ { 0,0,0,		    0x0042    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, },  /* #06 */
+	/*expect*/ { 0,0,0,		    0x0041    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0040,0x0044,0x0045,0x0000 }, },  /* #07 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0045,0x0040,0x0044,0x0000 }, },  /* #08 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0000			   }, },  /* #09 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0000		   }, },  /* #10 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		     { 0x0000			   }, },  /* #11 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcspbrk, TST_LOC_eucJP },
+#else
+    { Twcspbrk, TST_LOC_ja_UTF8 },
+#endif
+    {
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x0000		   }, },  /* #01 */
+	/*expect*/ { 0,0,0,		    0x3041    },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     {	      0x3042,0x0000	   }, },  /* #02 */
+	/*expect*/ { 0,0,0,		    0x3042    },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     {		     0x3043,0x0000 }, },  /* #03 */
+	/*expect*/ { 0,0,0,		    0x3043    },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x0000	   }, },  /* #04 */
+	/*expect*/ { 0,0,0,		    0x3041    },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     {	      0x3042,0x3043,0x0000 }, },  /* #05 */
+	/*expect*/ { 0,0,0,		    0x3042    },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, },  /* #06 */
+	/*expect*/ { 0,0,0,		    0x3041    },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3042,0x3043,0x3044,0x0000 }, },  /* #07 */
+	/*expect*/ { 0,0,0, 0x3042		      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3040,0x3041,0x3042,0x0000 }, },  /* #08 */
+	/*expect*/ { 0,0,0, 0x3041		      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x0000			   }, },  /* #09 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x0000		   }, },  /* #10 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		     { 0x0000			   }, },  /* #11 */
+	/*expect*/ { 0,1,(wchar_t *)NULL, 0x0000    },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcspbrk, TST_LOC_end }
+  }
+};

+ 272 - 0
test/locale-mbwc/dat_wcsrtombs.c

@@ -0,0 +1,272 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcsrtombs.c
+ *
+ *	 WCSTOMBS:  size_t wcsrtombs (char *s, const wchar_t **ws,
+ *				      size_t n, mbstate *ps)
+ */
+
+
+/*
+ *  CAUTION:
+ *	     Do not use a value 0x01 for string data. The test program
+ *	     uses it.
+ *
+ */
+
+
+TST_WCSRTOMBS tst_wcsrtombs_loc [] = {
+  {
+    { Twcsrtombs, TST_LOC_de },
+    {
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0},
+	/*expect*/ { 0,1,0,	 ""					},
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 },
+	/*expect*/ { 0,1,1,	 "Ä"					 },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 2, 0, 0 },
+	/*expect*/ { 0,1,2,	 "ÄÖ"					 },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 3, 0, 0 },
+	/*expect*/ { 0,1,3,	 "ÄÖÜ"					 },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 4, 0, 0 },
+	/*expect*/ { 0,1,3,	 "ÄÖÜ"					 },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 },
+	/*expect*/ { 0,1,3,	 "ÄÖÜ"					 },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			 },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,3,	 ""					 },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 },
+	/*expect*/ { 0,1,3,	 ""					 },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 },
+	/*expect*/ { 0,1,3,	 ""					 },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			 },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsrtombs, TST_LOC_enUS },
+    {
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 },
+	/*expect*/ { 0,1,1,	 "A"					 },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination. */
+      { /*input.*/ { 1,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 2, 0, 0 },
+	/*expect*/ { 0,1,2,	 "AB"					 },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 3, 0, 0 },
+	/*expect*/ { 0,1,3,	 "ABC"					 },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 4, 0, 0 },
+	/*expect*/ { 0,1,3,	 "ABC"					 },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 },
+	/*expect*/ { 0,1,3,	 "ABC"					 },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""					},
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,3,	 ""					 },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 },
+	/*expect*/ { 0,1,3,	 ""					 },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 },
+	/*expect*/ { 0,1,3,	 ""					 },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			 },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Twcsrtombs, TST_LOC_eucJP },
+    {
+
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 2, 0, 0 },
+	/*expect*/ { 0,1,2,	    "\244\242"				 },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 4, 0, 0 },
+	/*expect*/ { 0,1,4,	    "\244\242\244\244"			 },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 },
+	/*expect*/ { 0,1,6,	    "\244\242\244\244\216\263"		 },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 7, 0, 0 },
+	/*expect*/ { 0,1,6,	    "\244\242\244\244\216\263"		 },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 },
+	/*expect*/ { 0,1,6,	    "\244\242\244\244\216\263"		 },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
+	/*expect*/ { EILSEQ,1,-1, ""					 },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,6,	 ""					 },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 },
+	/*expect*/ { 0,1,6,	 ""					 },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 },
+	/*expect*/ { 0,1,6,	 ""					 },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			 },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Twcsrtombs, TST_LOC_ja_UTF8 },
+    {
+
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 3, 0, 0 },
+	/*expect*/ { 0,1,3,	    "\343\201\202"			 },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 },
+	/*expect*/ { 0,1,6,	    "\343\201\202\343\201\204"		 },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 9, 0, 0 },
+	/*expect*/ { 0,1,9,    "\343\201\202\343\201\204\357\275\263"	 },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 10, 0, 0 },
+	/*expect*/ { 0,1,9,	"\343\201\202\343\201\204\357\275\263"	 },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination. */
+      { /*input.*/ { 1,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 11, 0, 0 },
+	/*expect*/ { 0,1,9,	"\343\201\202\343\201\204\357\275\263"	  },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
+	/*expect*/ { EILSEQ,1,-1, ""					 },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 },
+	/*expect*/ { 0,1,9,	 ""					 },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 },
+	/*expect*/ { 0,1,9,	 ""					 },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 },
+	/*expect*/ { 0,1,9,	 ""					 },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			 },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	{ 0x0000 },			 5, 0, 0 },
+	/*expect*/ { 0,1,0,	 ""					 },
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Twcsrtombs, TST_LOC_end }
+  }
+};

+ 179 - 0
test/locale-mbwc/dat_wcsspn.c

@@ -0,0 +1,179 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcsspn.c
+ *
+ *	 WCSSPN:  size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2);
+ */
+
+TST_WCSSPN tst_wcsspn_loc [] = {
+    {
+      { Twcsspn, TST_LOC_de },
+      {
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       { 0x00D1,0x0000		     }, },  /* #01 */
+	  /*expect*/ { 0,1,1,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       {	0x00D2,0x0000	     }, },  /* #02 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       {	       0x00D3,0x0000 }, },  /* #03 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       {	       0x00D4,0x0000 }, },  /* #04 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       {	0x00D2,0x00D3,0x0000 }, },  /* #05 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       {	0x00D3,0x00D4,0x0000 }, },  /* #06 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #07 */
+	  /*expect*/ { 0,1,3,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x0000	     },
+		       { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #08 */
+	  /*expect*/ { 0,1,2,				},
+	},
+	{ /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		       { 0x00D2,0x0000		     }, },  /* #09 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       { 0x0000,0x00D2,0x0000	     }, },  /* #10 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		       { 0x0000,0x00D2,0x0000	     }, },  /* #11 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		       { 0x00D2,0x00D1,0x0000	     }, },  /* #12 */
+	  /*expect*/ { 0,1,2,				},
+	},
+	{ .is_last = 1 }
+      }
+    },
+    {
+      { Twcsspn, TST_LOC_enUS },
+      {
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       { 0x0041,0x0000		     }, },  /* #01 */
+	  /*expect*/ { 0,1,1,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       {	0x0042,0x0000	     }, },  /* #02 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       {	       0x0043,0x0000 }, },  /* #03 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       {	       0x0044,0x0000 }, },  /* #04 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       {	0x0042,0x0043,0x0000 }, },  /* #05 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       {	0x0043,0x0044,0x0000 }, },  /* #06 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       { 0x0041,0x0042,0x0043,0x0000 }, },  /* #07 */
+	  /*expect*/ { 0,1,3,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0000	     },
+		       { 0x0041,0x0042,0x0043,0x0000 }, },  /* #08 */
+	  /*expect*/ { 0,1,2,				},
+	},
+	{ /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		       { 0x0042,0x0000		     }, },  /* #09 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       { 0x0000,0x0042,0x0000	     }, },  /* #10 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		       { 0x0000,0x0042,0x0000	     }, },  /* #11 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		       { 0x0042,0x0041,0x0000	     }, },  /* #12 */
+	  /*expect*/ { 0,1,2,				},
+	},
+	{ .is_last = 1 }
+      }
+    },
+    {
+#if 0
+      { Twcsspn, TST_LOC_eucJP },
+#else
+      { Twcsspn, TST_LOC_ja_UTF8 },
+#endif
+      {
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       { 0x3041,0x0000		     }, },  /* #1 */
+	  /*expect*/ { 0,1,1,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       {	0x3042,0x0000	     }, },  /* #2 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       {	       0x3043,0x0000 }, },  /* #3 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       {	       0x3044,0x0000 }, },  /* #4 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       {	0x3042,0x3043,0x0000 }, },  /* #5 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       {	0x3043,0x3044,0x0000 }, },  /* #6 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       { 0x3041,0x3042,0x3043,0x0000 }, },  /* #7 */
+	  /*expect*/ { 0,1,3,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x0000	     },
+		       { 0x3041,0x3042,0x3043,0x0000 }, },  /* #8 */
+	  /*expect*/ { 0,1,2,				},
+	},
+	{ /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		       { 0x3042,0x0000		     }, },  /* #9 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       { 0x0000,0x3042,0x0000	     }, },  /* #10 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		       { 0x0000,0x3042,0x0000	     }, },  /* #11 */
+	  /*expect*/ { 0,1,0,				},
+	},
+	{ /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		       { 0x3042,0x3041,0x0000	     }, },  /* #12 */
+	  /*expect*/ { 0,1,2,				},
+	},
+	{ .is_last = 1 }
+      }
+    },
+    {
+      { Twcsspn, TST_LOC_end }
+    }
+};

+ 175 - 0
test/locale-mbwc/dat_wcsstr.c

@@ -0,0 +1,175 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcsstr.c
+ *
+ *	 WCSSTR:  wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2);
+ */
+
+/*
+ * NOTE:
+ *	 This is not a locale sensitive function.
+ *	 So those data in each locale doesn't make sense ...
+ *	 (redundant test cases)
+ */
+
+
+TST_WCSSTR tst_wcsstr_loc [] = {
+  {
+    { Twcsstr, TST_LOC_de },
+    {
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x0000		   }, },  /* #01 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     {	      0x00D2,0x0000	   }, },  /* #02 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     {		     0x00D3,0x0000 }, },  /* #03 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x0000	   }, },  /* #04 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     {	      0x00D2,0x00D3,0x0000 }, },  /* #05 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x00D2,0x00D3,0x0000 }, },  /* #06 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D2,0x00D3,0x00D4,0x0000 }, },  /* #07 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x00D0,0x00D1,0x00D2,0x0000 }, },  /* #08 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+		     { 0x0000			   }, },  /* #09 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		     { 0x00D1,0x0000		   }, },  /* #10 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 },
+		     { 0x0000			   }, },  /* #11 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsstr, TST_LOC_enUS },
+    {
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0000		   }, },  /* #01 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     {	      0x0042,0x0000	   }, },  /* #02 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     {		     0x0043,0x0000 }, },  /* #03 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0000	   }, },  /* #04 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     {	      0x0042,0x0043,0x0000 }, },  /* #05 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0042,0x0043,0x0000 }, },  /* #06 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0042,0x0043,0x0044,0x0000 }, },  /* #07 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0040,0x0041,0x0042,0x0000 }, },  /* #08 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+		     { 0x0000			   }, },  /* #09 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		     { 0x0041,0x0000		   }, },  /* #10 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 },
+		     { 0x0000			   }, },  /* #11 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcsstr, TST_LOC_eucJP },
+#else
+    { Twcsstr, TST_LOC_ja_UTF8 },
+#endif
+    {
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x0000		   }, },  /* #01 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     {	      0x3042,0x0000	   }, },  /* #02 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     {		     0x3043,0x0000 }, },  /* #03 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x0000	   }, },  /* #04 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     {	      0x3042,0x3043,0x0000 }, },  /* #05 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x3042,0x3043,0x0000 }, },  /* #06 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3042,0x3043,0x3044,0x0000 }, },  /* #07 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x3040,0x3041,0x3042,0x0000 }, },  /* #08 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+		     { 0x0000			   }, },  /* #09 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		     { 0x3041,0x0000		   }, },  /* #10 */
+	/*expect*/ { 0,1,(wchar_t *)NULL,	      },
+      },
+      { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 },
+		     { 0x0000			   }, },  /* #11 */
+	/*expect*/ { 0,0,0,			      },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsstr, TST_LOC_end }
+  }
+};

+ 78 - 0
test/locale-mbwc/dat_wcstod.c

@@ -0,0 +1,78 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_wcstod.c
+ *
+ *	 WCSTOD:  double wcstod (const wchar_t *np, wchar_t **endp);
+ */
+
+
+/*
+ *  NOTE:
+ *	  need more test data!
+ *
+ */
+
+
+TST_WCSTOD tst_wcstod_loc [] = {
+  {
+    { Twcstod, TST_LOC_de },
+    {
+      {
+	/*01*/
+	/*I*/
+	{{ 0x0030,0x0030,0x0030,0x002C,0x0030,0x0030,0x0030,0x0030,0x0000 }},
+	/*E*/
+	{ 0,1,0.0,	       0.0,				  0x0000   }
+      },
+      {
+	/*02*/
+	/*I*/
+	{{ 0x0031,0x0032,0x0033,0x002C,0x0034,0x0035,0x0036,0x0040,0x0000 }},
+	/*E*/
+	{ 0,1,123.456,	       123.456,			   0x0040  }
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcstod, TST_LOC_enUS },
+    {
+      {
+	/*01*/
+	/*I*/
+	{{ 0x0030,0x0030,0x0030,0x002E,0x0030,0x0030,0x0030,0x0030,0x0000 }},
+	/*E*/
+	{ 0,1,0.0,	       0.0,				  0x0000   }
+      },
+      {
+	/*02*/
+	/*I*/
+	{{ 0x0031,0x0032,0x0033,0x002E,0x0034,0x0035,0x0036,0x0040,0x0000 }},
+	/*E*/
+	{ 0,1,123.456,	       123.456,			   0x0040  }
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcstod, TST_LOC_eucJP },
+#else
+    { Twcstod, TST_LOC_ja_UTF8 },
+#endif
+    {
+      {
+	/*01*/
+	/*I*/
+	{{ 0x0031,0x0032,0x0033,0x002E,0x0034,0x0035,0x0036,0x0040,0x0000 }},
+	/*E*/
+	{ 0,1,123.456,	       123.456,			   0x0040  }
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcstod, TST_LOC_end }
+  }
+};

+ 138 - 0
test/locale-mbwc/dat_wcstok.c

@@ -0,0 +1,138 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_wcstok.c
+ *
+ *	 WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm,
+ *				  wchar_t **pt);
+ */
+
+/*
+ *  NOTE:
+ *	  need more test data!
+ *	  locale insensitive function...
+ */
+
+
+
+
+TST_WCSTOK tst_wcstok_loc [] = {
+  {
+    { Twcstok, TST_LOC_de },
+    {
+      {
+	{
+	  {
+	    { 1, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8,
+		   0x00D9,0x0000 },
+	      {	       0x00D3,0x00D2,	    0x00D5 }
+	    },
+	    { 0, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8,
+		   0x00D9,0x0000 },
+	      {	       0x00D3,0x00D2,	    0x00D5 }
+	    },
+	    { 0, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8,
+		   0x00D9,0x0000 },
+	      {	       0x00D3,0x00D2,	    0x00D5 }
+	    },
+	  }
+	},
+	{
+	  {
+	    { 0, 0,0,
+	      { 0x00D1,0x0000 }
+	    },
+	    { 0, 0,0,
+	      {			     0x00D4,0x0000 }
+	    },
+	    { 0, 0,0,
+	      { 0x00D6,0x00D7,0x00D8,0x00D9,0x0000 }
+	    },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcstok, TST_LOC_enUS },
+    {
+      {
+	{
+	  {
+	    { 1, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
+		   0x0049,0x0000 },
+	      {	       0x0043,0x0042,	    0x0045 }
+	    },
+	    { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
+		   0x0049,0x0000 },
+	      {	       0x0043,0x0042,	    0x0045 }
+	    },
+	    { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
+		   0x0049,0x0000 },
+	      {	       0x0043,0x0042,	    0x0045 }
+	    },
+	  }
+	},
+	{
+	  {
+	    { 0, 0,0,
+	      { 0x0041,0x0000 }
+	    },
+	    { 0, 0,0,
+	      {			     0x0044,0x0000 }
+	    },
+	    { 0, 0,0,
+	      { 0x0046,0x0047,0x0048,0x0049,0x0000 }
+	    },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcstok, TST_LOC_eucJP },
+#else
+    { Twcstok, TST_LOC_ja_UTF8 },
+#endif
+    {
+      {
+	{
+	  {
+	    { 1, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
+		   0x0049,0x0000 },
+	      {	       0x0043,0x0042,	    0x0045 }
+	    },
+	    { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
+		   0x0049,0x0000 },
+	      {	       0x0043,0x0042,	    0x0045 }
+	    },
+	    { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,
+		   0x0049,0x0000 },
+	      {	       0x0043,0x0042,	    0x0045 }
+	    },
+	  }
+	},
+	{
+	  {
+	    { 0, 0,0,
+	      { 0x0041,0x0000 }
+	    },
+	    { 0, 0,0,
+	      {			     0x0044,0x0000 }
+	    },
+	    { 0, 0,0,
+	      { 0x0046,0x0047,0x0048,0x0049,0x0000 }
+	    },
+	  }
+	}
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcstok, TST_LOC_end }
+  }
+};

+ 271 - 0
test/locale-mbwc/dat_wcstombs.c

@@ -0,0 +1,271 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcstombs.c
+ *
+ *	 WCSTOMBS:  size_t wcstombs (char *s, const wchar_t *ws, size_t n)
+ */
+
+
+/*
+ *  CAUTION:
+ *	     Do not use a value 0x01 for string data. The test program
+ *	     uses it.
+ *
+ */
+
+
+TST_WCSTOMBS tst_wcstombs_loc [] = {
+  {
+    { Twcstombs, TST_LOC_de },
+    {
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 },
+	/*expect*/ { 0,1,0,	 ""					  },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 },	1 },
+	/*expect*/ { 0,1,1,	 "Ä"					  },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 },	2 },
+	/*expect*/ { 0,1,2,	 "ÄÖ"					  },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 },	3 },
+	/*expect*/ { 0,1,3,	 "ÄÖÜ"					  },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 },	4 },
+	/*expect*/ { 0,1,3,	 "ÄÖÜ"					  },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 },	5 },
+	/*expect*/ { 0,1,3,	 "ÄÖÜ"					  },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s. */
+      { /*input.*/ { 1,1,	       { 0x0201,0x0221,0x0000,0x0000 },	2 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			  },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 },
+	/*expect*/ { 0,1,3,	 ""					  },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 },
+	/*expect*/ { 0,1,3,	 ""					  },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 },
+	/*expect*/ { 0,1,3,	 ""					  },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 5 },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			  },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0000 },			5 },
+	/*expect*/ { 0,1,0,	 ""					  },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0000 },			5 },
+	/*expect*/ { 0,1,0,	 ""					  },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcstombs, TST_LOC_enUS },
+    {
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x00C4,0x0042,0x0043,0x0000 },	0  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 1  },
+	/*expect*/ { 0,1,1,	 "A"					   },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 2  },
+	/*expect*/ { 0,1,2,	 "AB"					   },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 3  },
+	/*expect*/ { 0,1,3,	 "ABC"					   },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 4  },
+	/*expect*/ { 0,1,3,	 "ABC"					   },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 5  },
+	/*expect*/ { 0,1,3,	 "ABC"					   },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 2  },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			   },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 0  },
+	/*expect*/ { 0,1,3,	 ""					   },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 1  },
+	/*expect*/ { 0,1,3,	 ""					   },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0041,0x0042,0x0043,0x0000 }, 5  },
+	/*expect*/ { 0,1,3,	 ""					   },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 5  },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			   },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0000 },			5, },
+	/*expect*/ { 0,1,0,	 ""			                   },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0000 },			5  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Twcstombs, TST_LOC_eucJP },
+    {
+
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 0  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 2  },
+	/*expect*/ { 0,1,2,	     "\244\242"				   },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 4  },
+	/*expect*/ { 0,1,4,	     "\244\242\244\244"			   },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 6  },
+	/*expect*/ { 0,1,6,	     "\244\242\244\244\216\263"		   },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 7  },
+	/*expect*/ { 0,1,6,	     "\244\242\244\244\216\263"		   },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 8  },
+	/*expect*/ { 0,1,6,	     "\244\242\244\244\216\263"		   },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 2  },
+	/*expect*/ { EILSEQ,1,-1,	 ""				   },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 0  },
+	/*expect*/ { 0,1,6,	 ""					   },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 1  },
+	/*expect*/ { 0,1,6,	 ""					   },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 8  },
+	/*expect*/ { 0,1,6,	 ""					   },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 5  },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			   },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0000 },			5  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0000 },			5  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Twcstombs, TST_LOC_ja_UTF8 },
+    {
+
+      /* #01 : Any chars including a null char should not be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 0  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      /* #02 : Only one chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 3  },
+	/*expect*/ { 0,1,3,	     "\343\201\202"			   },
+      },
+      /* #03 : Only two chars should be stored in s. No null termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 6  },
+	/*expect*/ { 0,1,6,	     "\343\201\202\343\201\204"		   },
+      },
+      /* #04 : Only three chars should be stored in s. No null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 9  },
+	/*expect*/ { 0,1,9,	"\343\201\202\343\201\204\357\275\263"	   },
+      },
+      /* #05 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 10 },
+	/*expect*/ { 0,1,9,	"\343\201\202\343\201\204\357\275\263"	   },
+      },
+      /* #06 : Only three chars should be stored in s with a null
+	       termination.  */
+      { /*input.*/ { 1,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 11 },
+	/*expect*/ { 0,1,9,	"\343\201\202\343\201\204\357\275\263"	   },
+      },
+      /* #07 : Invalid mb sequence. No chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 2  },
+	/*expect*/ { EILSEQ,1,-1,	 ""				   },
+      },
+      /* #08 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 0  },
+	/*expect*/ { 0,1,9,	 ""					   },
+      },
+      /* #09 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 1  },
+	/*expect*/ { 0,1,9,	 ""					   },
+      },
+      /* #10 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x3042,0x3044,0xFF73,0x0000 }, 8  },
+	/*expect*/ { 0,1,9,	 ""					   },
+      },
+      /* #11 : s is a null pointer. No chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0201,0x0221,0x0000,0x0000 }, 5  },
+	/*expect*/ { EILSEQ,1,(size_t)-1,	 ""			   },
+      },
+      /* #12 : ws is a null wc string, no chars should be stored in s.  */
+      { /*input.*/ { 1,1,	       { 0x0000 },			5  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      /* #13 : s is a null pointer, no chars should be stored in s.  */
+      { /*input.*/ { 0,1,	       { 0x0000 },			5  },
+	/*expect*/ { 0,1,0,	 ""					   },
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Twcstombs, TST_LOC_end }
+  }
+};

+ 263 - 0
test/locale-mbwc/dat_wcswidth.c

@@ -0,0 +1,263 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcswidth.c
+ *
+ *	 WCSWIDTH:  int	 wcswidth (const wchar_t *ws, size_t n);
+ */
+
+TST_WCSWIDTH tst_wcswidth_loc [] = {
+  {
+    { Twcswidth, TST_LOC_de },
+    {
+      { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 },	 0 },  /* 01 */
+	/*expect*/ { 0,1,0				   },
+      },
+      { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 },	 1 },  /* 02 */
+	/*expect*/ { 0,1,1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 },	 2 },  /* 03 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 },	 3 },  /* 04 */
+	/*expect*/ { 0,1,3				   },
+      },
+      { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 },	 4 },  /* 05 */
+	/*expect*/ { 0,1,3				   },
+      },
+      { /*input.*/ { { 0x0000 },			 1 },  /* 06 */
+	/*expect*/ { 0,1,0				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0001,0x0000 },		 2 },  /* 07 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0001,0x0000 },		 1 },  /* 08 */
+	/*expect*/ { 0,1,1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0001,0x0000 },		 2 },  /* 09 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0092,0x0000 },		 2 },  /* 10 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0020,0x0000 },		 2 },  /* 11 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0021,0x0000 },		 2 },  /* 12 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x00C1,0x007E,0x0000 },		 2 },  /* 13 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x00C1,0x007F,0x0000 },		 2 },  /* 14 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x0080,0x0000 },		 2 },  /* 15 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x00A0,0x0000 },		 2 },  /* 16 */
+#ifdef SHOJI_IS_RIGHT
+	/*expect*/ { 0,1,-1				   },
+#else
+	/*expect*/ { 0,1,2				   },
+#endif
+      },
+      { /*input.*/ { { 0x00C1,0x00A1,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x00C1,0x00FF,0x0000 },		 2 },  /* 18 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x00C1,0x3042,0x0000 },		 2 },  /* 19 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x00C1,0x3044,0x0000 },		 2 },  /* 20 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcswidth, TST_LOC_enUS },
+    {
+      { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 },	 0 },  /* 01 */
+	/*expect*/ { 0,1,0				   },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 },	 1 },  /* 02 */
+	/*expect*/ { 0,1,1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 },	 2 },  /* 03 */
+	/*expect*/ { 0,1,2				   },
+      },
+#ifdef SHOJI_IS_RIGHT
+      { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 },	 3 },  /* 04 */
+	/*expect*/ { 0,1,3				   },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 },	 4 },  /* 05 */
+	/*expect*/ { 0,1,3				   },
+      },
+#else
+      { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 },	 3 },  /* 04 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },	 4 },  /* 05 */
+	/*expect*/ { 0,1,3				   },
+      },
+#endif
+      { /*input.*/ { { 0x0000 },			 1 },  /* 06 */
+	/*expect*/ { 0,1,0				   },
+      },
+      { /*input.*/ { { 0x0041,0x0001,0x0000 },		 2 },  /* 07 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0001,0x0000 },		 1 },  /* 08 */
+	/*expect*/ { 0,1,1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0001,0x0000 },		 2 },  /* 09 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0092,0x0000 },		 2 },  /* 10 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0020,0x0000 },		 2 },  /* 11 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x0021,0x0000 },		 2 },  /* 12 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x007E,0x0000 },		 2 },  /* 13 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x007F,0x0000 },		 2 },  /* 14 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0080,0x0000 },		 2 },  /* 15 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x00A0,0x0000 },		 2 },  /* 16 */
+	/*expect*/ { 0,1,-1				   },
+      },
+#ifdef SHOJI_IS_RIGHT
+      { /*input.*/ { { 0x0041,0x00A1,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x00FF,0x0000 },		 2 },  /* 18 */
+	/*expect*/ { 0,1,2				   },
+      },
+#else
+      { /*input.*/ { { 0x0041,0x007E,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x0020,0x0000 },		 2 },  /* 18 */
+	/*expect*/ { 0,1,2				   },
+      },
+#endif
+      { /*input.*/ { { 0x0041,0x3042,0x0000 },		 2 },  /* 19 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x3044,0x0000 },		 2 },  /* 20 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcswidth, TST_LOC_eucJP },
+#else
+    { Twcswidth, TST_LOC_ja_UTF8 },
+#endif
+    {
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },	 0 },  /* 01 */
+	/*expect*/ { 0,1,0				   },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },	 1 },  /* 02 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },	 2 },  /* 03 */
+	/*expect*/ { 0,1,4				   },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },	 3 },  /* 04 */
+	/*expect*/ { 0,1,6				   },
+      },
+      { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },	 4 },  /* 05 */
+	/*expect*/ { 0,1,6				   },
+      },
+      { /*input.*/ { { 0x0000 },			 1 },  /* 06 */
+	/*expect*/ { 0,1,0				   },
+      },
+      { /*input.*/ { { 0x008E,0x0001,0x0000 },		 2 },  /* 07 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x3041,0x008E,0x0000 },		 1 },  /* 08 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x3041,0x008E,0x0000 },		 2 },  /* 09 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x3041,0x0001,0x0000 },		 2 },  /* 10 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x3041,0x3000,0x0000 },		 2 },  /* 11 */
+	/*expect*/ { 0,1,4				   },
+      },
+      { /*input.*/ { { 0x0041,0x0021,0x0000 },		 2 },  /* 12 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x007E,0x0000 },		 2 },  /* 13 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x007F,0x0000 },		 2 },  /* 14 */
+	/*expect*/ { 0,1,-1				   },
+      },
+      { /*input.*/ { { 0x0041,0x0080,0x0000 },		 2 },  /* 15 */
+	/*expect*/ { 0,1,-1				   },
+      },
+#if 0
+      { /*input.*/ { { 0x0041,0x00A0,0x0000 },		 2 },  /* 16 */
+	/*expect*/ { 0,1,-1				   },
+      },
+#ifdef NO_WAIVER
+      /* <NO_WAIVER> */	 /* returns 3 */
+      { /*input.*/ { { 0x0041,0x00A1,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,-1				   },
+      },
+#else
+      /* XXX U00A1 is valid -> /x8f/xa2/xc4 in JIS X 0212 */
+      { /*input.*/ { { 0x0041,0x00A1,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,3				   },
+      },
+#endif
+#else
+      /* XXX U00A0 i UTF8 is valid -> /xc2/xa0 */
+      { /*input.*/ { { 0x0041,0x00A0,0x0000 },		 2 },  /* 16 */
+	/*expect*/ { 0,1,2				   },
+      },
+#ifdef NO_WAIVER
+      /* <NO_WAIVER> */	 /* returns 3 */
+      { /*input.*/ { { 0x0041,0x00A1,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,-1				   },
+      },
+#else
+      /* XXX U00A1 in UTF-8 is valid -> /xc2/xa1 */
+      { /*input.*/ { { 0x0041,0x00A1,0x0000 },		 2 },  /* 17 */
+	/*expect*/ { 0,1,2				   },
+      },
+#endif
+#endif
+      { /*input.*/ { { 0x0041,0xFF71,0x0000 },		 2 },  /* 18 */
+	/*expect*/ { 0,1,2				   },
+      },
+      { /*input.*/ { { 0x0041,0x3042,0x0000 },		 2 },  /* 19 */
+	/*expect*/ { 0,1,3				   },
+      },
+      { /*input.*/ { { 0x0041,0x3044,0x0000 },		 2 },  /* 20 */
+	/*expect*/ { 0,1,3				   },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcswidth, TST_LOC_end }
+  }
+};

+ 102 - 0
test/locale-mbwc/dat_wcsxfrm.c

@@ -0,0 +1,102 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_wcsxfrm.c
+ *
+ *	 WCSXFRM:  size_t  wcsxfrm (char *s1, const char s2, size_t n);
+ */
+
+/*
+ *  NOTE:
+ *
+ *  Return value and errno value are checked only for 2nd string:
+ *  org2[]; n1 and n2 don't mean bytes to be translated.
+ *  It means a buffer size including a null character.
+ *  Results of this test depens on results of wcscoll().
+ *  If you got errors, check both test results.
+ */
+
+
+TST_WCSXFRM tst_wcsxfrm_loc [] = {
+
+  {
+    { Twcsxfrm, TST_LOC_de },
+    {
+      { /*inp*/ { { 0x00C1,0x0000 }, { 0x00C1,0x0000 }, 7, 7 },	 /* #01 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 },	 /* #02 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 },	 /* #03 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x00E4,0x0000 }, { 0x00DC,0x0000 }, 7, 7 },	 /* #04 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x00DC,0x0000 }, { 0x00E4,0x0000 }, 7, 7 },	 /* #05 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsxfrm, TST_LOC_enUS },
+    {
+      { /*inp*/ { { 0x0041,0x0000 }, { 0x0041,0x0000 }, 7, 7 },	 /* #01 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 },	 /* #02 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 },	 /* #03 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0000,0x0000 }, { 0x0000,0x0000 }, 7, 7 },	 /* #04 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+#ifdef NO_WAIVER
+      { /* <WAIVER> x 2 */
+	/*inp*/ { { 0x3061,0x0000 }, { 0xFF42,0x0000 }, 7, 7 },	 /* #05 */
+	/* <WAIVER>	*/
+	/*exp*/ {   EINVAL,	       1,(size_t)-1,	     },
+      },
+#endif
+      { .is_last = 1 }
+    }
+  },
+  {
+#if 0
+    { Twcsxfrm, TST_LOC_eucJP },	     /* need more test data ! */
+#else
+    { Twcsxfrm, TST_LOC_ja_UTF8 },	     /* need more test data ! */
+#endif
+    {
+      { /*inp*/ { { 0x3041,0x0000 }, { 0x3041,0x0000 }, 7, 7 },	 /* #01 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 },	 /* #02 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 },	 /* #03 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0x30A2,0x0000 }, { 0xFF71,0x0000 }, 7, 7 },	 /* #04 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+      { /*inp*/ { { 0xFF71,0x0000 }, { 0x30A2,0x0000 }, 7, 7 },	 /* #05 */
+	/*exp*/ {   0,	       0,0,		     },
+      },
+#ifdef NO_WAIVER
+      /* <WAIVER> x 2 */
+      { /*inp*/ { { 0x008E,0x0000 }, { 0x008F,0x0000 }, 7, 7 },	 /* #06 */
+	/*exp*/ {   EINVAL,	       1,(size_t)-1,	     },
+      },
+#endif
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twcsxfrm, TST_LOC_end }
+  }
+};

+ 61 - 0
test/locale-mbwc/dat_wctob.c

@@ -0,0 +1,61 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wctob.c
+ *
+ *	 ISW*:	int wctob( wint_t wc );
+ */
+
+
+TST_WCTOB tst_wctob_loc [] = {
+
+    {	{ Twctob, TST_LOC_de },
+	{
+	  {  { WEOF   }, { 0,	 1, EOF	       }  },
+	  {  { 0x0020 }, { 0,	 1, 0x20       }  },
+	  {  { 0x0061 }, { 0,	 1, 0x61       }  },
+	  {  { 0x0080 }, { 0,	 1, 0x80       }  },
+	  {  { 0x00C4 }, { 0,	 1, 0xC4       }  },
+	  {  { 0x30C4 }, { 0,	 1, EOF	       }  },
+	  {  .is_last = 1 } /* Last element.  */
+	}
+    },
+    {	{ Twctob, TST_LOC_enUS },
+	{
+	  {  { WEOF   }, { 0,	 1, EOF	       }  },
+	  {  { 0x0020 }, { 0,	 1, 0x20       }  },
+	  {  { 0x0061 }, { 0,	 1, 0x61       }  },
+#ifdef SHOJI_IS_RIGHT
+	  {  { 0x0080 }, { 0,	 1, 0x80       }  },
+	  {  { 0x00C4 }, { 0,	 1, 0xC4       }  },
+#else
+	  /* XXX These are no valid characters.  */
+	  {  { 0x0080 }, { 0,	 1, EOF        }  },
+	  {  { 0x00C4 }, { 0,	 1, EOF        }  },
+#endif
+	  {  { 0x30C4 }, { 0,	 1, EOF	       }  },
+	  {  .is_last = 1 } /* Last element.  */
+	}
+    },
+#if 0
+    {	{ Twctob, TST_LOC_eucJP },
+#else
+    {	{ Twctob, TST_LOC_ja_UTF8 },
+#endif
+	{
+	  {  { WEOF   }, { 0,	 1, EOF	       }  },
+	  {  { 0x0020 }, { 0,	 1, 0x20       }  },
+	  {  { 0x0061 }, { 0,	 1, 0x61       }  },
+#if 0
+	  {  { 0x0080 }, { 0,	 1, 0x80       }  },
+#else
+	  {  { 0x0080 }, { 0,	 1, EOF       }  },
+#endif
+	  {  { 0x00FF }, { 0,	 1, EOF        }  },
+	  {  { 0x00C4 }, { 0,	 1, EOF	       }  },
+	  {  { 0x30C4 }, { 0,	 1, EOF	       }  },
+	  {  .is_last = 1 } /* Last element.  */
+	}
+    },
+    {	{ Twctob, TST_LOC_end } }
+};

+ 168 - 0
test/locale-mbwc/dat_wctomb.c

@@ -0,0 +1,168 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wctomb.c
+ *
+ *	 WCTOMB:  int wctomb (char *s, wchar_t wc)
+ */
+
+
+/*
+ *  FUNCTION:
+ *
+ *	  int  wctomb (char *s, wchar_t wc);
+ *
+ *	       return: the number of bytes
+ *
+ *  NOTE:
+ *
+ *	 o When you feed a null pointer for a string (s) to the function,
+ *	   set s_flg=0 instead of putting just a 'NULL' there.
+ *	   Even if you put a 'NULL', it means a null string as well as "".
+ *
+ *	 o When s is a null pointer, the function checks state dependency.
+ *
+ *	       state-dependent encoding	     - return  NON-zero
+ *	       state-independent encoding    - return  0
+ *
+ *	   If state-dependent encoding is expected, set
+ *
+ *	       s_flg = 0,  ret_flg = 0,	 ret_val = +1
+ *
+ *	   If state-independent encoding is expected, set
+ *
+ *	       s_flg = 0,  ret_flg = 0,	 ret_val = 0
+ *
+ *
+ *	   When you set ret_flg=1, the test program simply compares an
+ *	   actual return value with an expected value. You can check
+ *	   state-independent case (return value is 0) in that way, but
+ *	   you can not check state-dependent case. So when you check
+ *	   state- dependency in this test function: tst_wctomb(), set
+ *	   ret_flg=0 always. It's a special case, and the test
+ *	   function takes care of it.
+ *
+ *	      Input	  Expect
+ *
+ *		s_flg=0		  ret_flg=0
+ *		|		  |
+ *	      { 0, 0 },	  { 0, 0, 0,  x,  "" }
+ *		   |		      |
+ *		   not used	      ret_val: 0/+1
+ * (expected val)
+ */
+
+
+TST_WCTOMB tst_wctomb_loc [] = {
+  {
+    { Twctomb, TST_LOC_de },
+    {
+      /* #01 : normal case		   */
+      { /*input.*/ { 1,	   0x00C4  },
+	/*expect*/ { 0,1,1,  "Ä"	   },
+      },
+      /* #02 : normal case		   */
+      { /*input.*/ { 1,	   0x00DC  },
+	/*expect*/ { 0,1,1,  "Ü"	   },
+      },
+      /* #03 : normal case		   */
+      { /*input.*/ { 1,	   0x0092  },
+	/*expect*/ { 0,1,1,  "\222"  },
+      },
+      /* #04 : error case		   */
+      { /*input.*/ { 1,	   0x3041  },
+	/*expect*/ { 0,1,-1, ""	   },
+      },
+      /* #05 : state dependency	   */
+      { /*input.*/ { 0,	   0x0000  },
+	/*expect*/ { 0,0,0,  ""	   },
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { Twctomb, TST_LOC_enUS },
+    {
+      /* #01 : normal case		   */
+      { /*input.*/ { 1,	   0x0041  },
+	/*expect*/ { 0,1,1,  "A"	   },
+      },
+      /* #02 : normal case		   */
+      { /*input.*/ { 1,	   0x0042  },
+	/*expect*/ { 0,1,1,  "B"	   },
+      },
+      /* #03 : error case		   */
+      /* <WAIVER> */
+      { /*input.*/ { 1,	   0x00C4  },
+	/*expect*/ { 0,1,-1, ""	   },
+      },
+      /* #04 : error case		   */
+      { /*input.*/ { 1,	   0x30A4  },
+	/*expect*/ { 0,1,-1, ""	   },
+      },
+      /* #05 : state dependency	   */
+      { /*input.*/ { 0,	   0x0000  },
+	/*expect*/ { 0,0,0,  ""	   },
+      },
+      { .is_last = 1 }
+    }
+  },
+#if 0
+  {
+    { Twctomb, TST_LOC_eucJP },
+    {
+      /* #01 : normal case		   */
+      { /*input.*/ { 1,	   0x3042  },
+	/*expect*/ { 0,1,2,  "\244\242"   },
+      },
+      /* #02 : normal case		   */
+      { /*input.*/ { 1,	   0x3044  },
+	/*expect*/ { 0,1,2,  "\244\244"   },
+      },
+      /* #03 : normal case		   */
+      { /*input.*/ { 1,	   0x008E  },
+	/*expect*/ { 0,1,-1, ""	   },
+      },
+      /* #04 : jisX0212		   */
+      { /*input.*/ { 1,	   0x00C4	  },
+	/*expect*/ { 0,1,3,  "\217\252\243" }, /* jisx0210  returns 3 */
+      },
+      /* #05 : state dependency	   */
+      { /*input.*/ { 0,	   0x008E  },
+	/*expect*/ { 0,0,0,  ""	   },
+      },
+      { .is_last = 1 }
+    }
+  },
+#else
+  {
+    { Twctomb, TST_LOC_ja_UTF8 },
+    {
+      /* #01 : normal case		   */
+      { /*input.*/ { 1,	   0x3042  },
+	/*expect*/ { 0,1,3,  "\343\201\202"   },
+      },
+      /* #02 : normal case		   */
+      { /*input.*/ { 1,	   0x3044  },
+	/*expect*/ { 0,1,3,  "\343\201\204"   },
+      },
+      /* #03 : normal case		   */
+      { /*input.*/ { 1,	   0x008E  },
+	/*expect*/ { 0,1,2, "\302\216"	   },
+      },
+      /* #04 : jisX0212		   */
+      { /*input.*/ { 1,	   0x00C4	  },
+	/*expect*/ { 0,1,2,  "\303\204" }, /* jisx0210  returns 3 */
+      },
+      /* #05 : state dependency	   */
+      { /*input.*/ { 0,	   0x008E  },
+	/*expect*/ { 0,0,0,  ""	   },
+      },
+      { .is_last = 1 }
+    }
+  },
+#endif
+  {
+    { Twctomb, TST_LOC_end }
+  }
+};

+ 99 - 0
test/locale-mbwc/dat_wctrans.c

@@ -0,0 +1,99 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *       FILE:  dat_wctrans.c
+ *
+ *       WCTRANS:  wctrans_t  wctrans( const char *charclass );
+ */
+
+/*
+ *  NOTE:
+ *        When a return value is expected to be 0 (false),
+ *        set ret_flg=1 and set ret_val=0.
+ *        Otherwise just set ret_flg=0.
+ */
+
+
+TST_WCTRANS tst_wctrans_loc [] = {
+
+    {   { Twctrans, TST_LOC_de },
+        {
+          { /*inp*/ { ""               },  /* #1 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "upper"          },  /* #2 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "lower"          },  /* #3 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "toupper"        },  /* #4 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "tolower"        },  /* #5 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "xxxxx"          },  /* #6 */
+            /*exp*/ { 0,1,0,         },
+          },
+	  { .is_last = 1 }
+        }
+    },
+    {   { Twctrans, TST_LOC_enUS },
+        {
+          { /*inp*/ { ""               },  /* #1 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "upper"          },  /* #2 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "lower"          },  /* #3 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "toupper"        },  /* #4 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "tolower"        },  /* #5 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "xxxxx"          },  /* #6 */
+            /*exp*/ { 0,1,0,         },
+          },
+	  { .is_last = 1 }
+        }
+    },
+#if 0
+    {   { Twctrans, TST_LOC_eucJP },
+#else
+    {   { Twctrans, TST_LOC_ja_UTF8 },
+#endif
+        {
+          { /*inp*/ { ""               },  /* #1 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "upper"          },  /* #2 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "lower"          },  /* #3 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "toupper"        },  /* #4 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "tolower"        },  /* #5 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "xxxxx"          },  /* #6 */
+            /*exp*/ { 0,1,0,         },
+          },
+          { /*inp*/ { "tojhira"        },  /* #7 */
+            /*exp*/ { 0,0,0,         },
+          },
+          { /*inp*/ { "tojkata"        },  /* #8 */
+            /*exp*/ { 0,0,0,         },
+          },
+	  { .is_last = 1 }
+        }
+    },
+    {   { Twctrans, TST_LOC_end }}
+};

+ 189 - 0
test/locale-mbwc/dat_wctype.c

@@ -0,0 +1,189 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *	 FILE:	dat_wctype.c
+ *
+ *	 WCTYPE:  wctype_t  wctype( const char *class );
+ */
+
+/*
+ *  NOTE:
+ *	  When a return value is expected to be 0 (false),
+ *	  set ret_flg=1 and set ret_val=0.
+ *	  Otherwise just set ret_flg=0.
+ */
+
+
+TST_WCTYPE tst_wctype_loc [] = {
+
+    {	{ Twctype, TST_LOC_de },
+	{
+	  { /*inp*/ { "alnum"	       },  /* #01 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "alpha"	       },  /* #02 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "cntrl"	       },  /* #03 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "digit"	       },  /* #04 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "graph"	       },  /* #05 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "lower"	       },  /* #06 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "print"	       },  /* #07 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "punct"	       },  /* #08 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "space"	       },  /* #09 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "upper"	       },  /* #10 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "xdigit"	       },  /* #11 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { ""	       },  /* #12 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "ideograph"      },  /* #13 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "english"	       },  /* #14 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "ascii"	       },  /* #15 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "special"	       },  /* #16 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twctype, TST_LOC_enUS },
+	{
+	  { /*inp*/ { "alnum"	       },  /* #01 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "alpha"	       },  /* #02 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "cntrl"	       },  /* #03 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "digit"	       },  /* #04 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "graph"	       },  /* #05 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "lower"	       },  /* #06 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "print"	       },  /* #07 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "punct"	       },  /* #08 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "space"	       },  /* #09 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "upper"	       },  /* #10 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "xdigit"	       },  /* #11 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { ""	       },  /* #12 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "ideograph"      },  /* #13 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "english"	       },  /* #14 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "ascii"	       },  /* #15 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "special"	       },  /* #16 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+#if 0
+    {	{ Twctype, TST_LOC_eucJP },
+#else
+    {	{ Twctype, TST_LOC_ja_UTF8 },
+#endif
+	{
+	  { /*inp*/ { "alnum"	       },  /* #01 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "alpha"	       },  /* #02 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "cntrl"	       },  /* #03 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "digit"	       },  /* #04 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "graph"	       },  /* #05 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "lower"	       },  /* #06 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "print"	       },  /* #07 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "punct"	       },  /* #08 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "space"	       },  /* #09 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "upper"	       },  /* #10 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "xdigit"	       },  /* #11 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "ideogram"       },  /* #12 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "phonogram"      },  /* #13 */
+	    /*exp*/ { 0,1,0,	       },
+	  },
+	  { /*inp*/ { "jspace"	       },  /* #14 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "jhira"	       },  /* #15 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "jkata"	       },  /* #16 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "jkanji"	       },  /* #17 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { /*inp*/ { "jdigit"	       },  /* #18 */
+	    /*exp*/ { 0,0,0,	       },
+	  },
+	  { .is_last = 1 }
+	}
+    },
+    {	{ Twctype, TST_LOC_end }}
+};

+ 149 - 0
test/locale-mbwc/dat_wcwidth.c

@@ -0,0 +1,149 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	dat_wcwidth.c
+ *
+ *	 WCWIDTH:  int wcwidth (wchar_t wc);
+ */
+
+TST_WCWIDTH tst_wcwidth_loc [] = {
+    {
+      { Twcwidth, TST_LOC_de },
+      {
+	{ /*inp*/ { 0x0000		     },	 /* #01 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+	{ /*inp*/ { 0x0020		     },	 /* #02 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+	{ /*inp*/ { 0x007F		     },	 /* #03 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x0080		     },	 /* #04 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x00A1		     },	 /* #05 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+	{ /*inp*/ { 0x00C1		     },	 /* #06 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+#ifdef SHOJI_IS_RIGHT
+	/* <WAIVER> */	/* CHECK : wint_t */
+	{ /*inp*/ { 0x3041		     },	 /* #07 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+#else
+	{ /*inp*/ { 0x3041		     },	 /* #07 */
+	  /*exp*/ { 0,	1,EOF,	     },
+	},
+#endif
+	{ .is_last = 1 }
+      }
+    },
+    {
+      { Twcwidth, TST_LOC_enUS },
+      {
+	{ /*inp*/ { 0x0000		     },	 /* #01 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+	{ /*inp*/ { 0x0020		     },	 /* #02 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+	{ /*inp*/ { 0x007F		     },	 /* #03 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x0080		     },	 /* #04 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x00A1		     },	 /* #05 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x00C1		     },	 /* #06 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x3041		     },	 /* #07 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ .is_last = 1 }
+      }
+    },
+#if 0
+    {
+      { Twcwidth, TST_LOC_eucJP },
+      {
+	{ /*inp*/ { 0x0000		     },	 /* #01 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+	{ /*inp*/ { 0x0020		     },	 /* #02 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+	{ /*inp*/ { 0x007F		     },	 /* #03 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x0080		     },	 /* #04 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+#ifdef SHOJI_IS_RIGHT
+	/* <NO_WAIVER> */
+	{ /*inp*/ { 0x00A1		     },	 /* #05 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+#else
+	/* XXX U00A1 is a valid character in EUC-JP.  */
+	{ /*inp*/ { 0x00A1		     },	 /* #05 */
+	  /*exp*/ { 0,	1,2,	     },
+	},
+#endif
+	/* jisx0212 */
+	{ /*inp*/ { 0x00C1		     },	 /* #06 */
+	  /*exp*/ { 0,	1,2,	     },
+	},
+	{ /*inp*/ { 0x3041		     },	 /* #07 */
+	  /*exp*/ { 0,	1,2,	     },
+	},
+	{ .is_last = 1 }
+      }
+    },
+#else
+    {
+      { Twcwidth, TST_LOC_ja_UTF8 },
+      {
+	{ /*inp*/ { 0x0000		     },	 /* #01 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+	{ /*inp*/ { 0x0020		     },	 /* #02 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+	{ /*inp*/ { 0x007F		     },	 /* #03 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+	{ /*inp*/ { 0x0080		     },	 /* #04 */
+	  /*exp*/ { 0,	1,-1,	     },
+	},
+#ifdef SHOJI_IS_RIGHT
+	/* <NO_WAIVER> */
+	{ /*inp*/ { 0x00A1		     },	 /* #05 */
+	  /*exp*/ { 0,	1,0,	     },
+	},
+#else
+	/* XXX U00A1 is a valid character in EUC-JP.UTF-8.  */
+	{ /*inp*/ { 0x00A1		     },	 /* #05 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+#endif
+	/* jisx0212 */
+	{ /*inp*/ { 0x00C1		     },	 /* #06 */
+	  /*exp*/ { 0,	1,1,	     },
+	},
+	{ /*inp*/ { 0x3041		     },	 /* #07 */
+	  /*exp*/ { 0,	1,2,	     },
+	},
+	{ .is_last = 1 }
+      }
+    },
+#endif
+    {
+      { Twcwidth, TST_LOC_end }
+    }
+};

+ 160 - 0
test/locale-mbwc/tgn_funcdef.h

@@ -0,0 +1,160 @@
+#ifndef TGN_FUNCDEF_H
+#define TGN_FUNCDEF_H
+
+/* Unique number for each test.  */
+#define	 Tiswalnum		1
+#define	 Tiswalpha		2
+#define	 Tiswcntrl		3
+#define	 Tiswctype		4
+#define	 Tiswdigit		5
+#define	 Tiswgraph		6
+#define	 Tiswlower		7
+#define	 Tiswprint		8
+#define	 Tiswpunct		9
+#define	 Tiswspace		10
+#define	 Tiswupper		11
+#define	 Tiswxdigit		12
+#define	 Tmblen			13
+#define	 Tmbrlen		14
+#define	 Tmbrtowc		15
+#define	 Tmbsrtowcs		16
+#define	 Tmbstowcs		17
+#define	 Tmbtowc		18
+#define	 Tstrcoll		19
+#define	 Tstrfmon		20
+#define	 Tstrxfrm		21
+#define	 Tswscanf		22
+#define	 Ttowctrans		23
+#define	 Ttowlower		24
+#define	 Ttowupper		25
+#define	 Twcrtomb		26
+#define	 Twcscat		27
+#define	 Twcschr		28
+#define	 Twcscmp		29
+#define	 Twcscoll		30
+#define	 Twcscpy		31
+#define	 Twcscspn		32
+#define	 Twcslen		33
+#define	 Twcsncat		34
+#define	 Twcsncmp		35
+#define	 Twcsncpy		36
+#define	 Twcspbrk		37
+#define	 Twcsrtombs		38
+#define	 Twcsspn		39
+#define	 Twcsstr		40
+#define	 Twcstod		41
+#define	 Twcstok		42
+#define	 Twcstombs		43
+#define	 Twcswidth		44
+#define	 Twcsxfrm		45
+#define	 Twctob			46
+#define	 Twctomb		47
+#define	 Twctrans		48
+#define	 Twctype		49
+#define	 Twcwidth		50
+
+/* Name of each test.  */
+#define	 S_ISWALNUM	"iswalnum"
+#define	 S_ISWALPHA	"iswalpha"
+#define	 S_ISWCNTRL	"iswcntrl"
+#define	 S_ISWCTYPE	"iswctype"
+#define	 S_ISWDIGIT	"iswdigit"
+#define	 S_ISWGRAPH	"iswgraph"
+#define	 S_ISWLOWER	"iswlower"
+#define	 S_ISWPRINT	"iswprint"
+#define	 S_ISWPUNCT	"iswpunct"
+#define	 S_ISWSPACE	"iswspace"
+#define	 S_ISWUPPER	"iswupper"
+#define	 S_ISWXDIGIT	"iswxdigit"
+#define	 S_MBLEN	"mblen"
+#define	 S_MBRLEN	"mbrlen"
+#define	 S_MBRTOWC	"mbrtowc"
+#define	 S_MBSRTOWCS	"mbsrtowcs"
+#define	 S_MBSTOWCS	"mbstowcs"
+#define	 S_MBTOWC	"mbtowc"
+#define	 S_STRCOLL	"strcoll"
+#define	 S_STRFMON	"strfmon"
+#define	 S_STRXFRM	"strxfrm"
+#define	 S_SWSCANF	"swscanf"
+#define	 S_TOWCTRANS	"towctrans"
+#define	 S_TOWLOWER	"towlower"
+#define	 S_TOWUPPER	"towupper"
+#define	 S_WCRTOMB	"wcrtomb"
+#define	 S_WCSCAT	"wcscat"
+#define	 S_WCSCHR	"wcschr"
+#define	 S_WCSCMP	"wcscmp"
+#define	 S_WCSCOLL	"wcscoll"
+#define	 S_WCSCPY	"wcscpy"
+#define	 S_WCSCSPN	"wcscspn"
+#define	 S_WCSLEN	"wcslen"
+#define	 S_WCSNCAT	"wcsncat"
+#define	 S_WCSNCMP	"wcsncmp"
+#define	 S_WCSNCPY	"wcsncpy"
+#define	 S_WCSPBRK	"wcspbrk"
+#define	 S_WCSRTOMBS	"wcsrtombs"
+#define	 S_WCSSPN	"wcsspn"
+#define	 S_WCSSTR	"wcsstr"
+#define	 S_WCSTOD	"wcstod"
+#define	 S_WCSTOK	"wcstok"
+#define	 S_WCSTOMBS	"wcstombs"
+#define	 S_WCSWIDTH	"wcswidth"
+#define	 S_WCSXFRM	"wcsxfrm"
+#define	 S_WCTOB	"wctob"
+#define	 S_WCTOMB	"wctomb"
+#define	 S_WCTRANS	"wctrans"
+#define	 S_WCTYPE	"wctype"
+#define	 S_WCWIDTH	"wcwidth"
+
+/* Prototypes for test functions.  */
+extern int tst_iswalnum (FILE *, int);
+extern int tst_iswalpha (FILE *, int);
+extern int tst_iswcntrl (FILE *, int);
+extern int tst_iswctype (FILE *, int);
+extern int tst_iswdigit (FILE *, int);
+extern int tst_iswgraph (FILE *, int);
+extern int tst_iswlower (FILE *, int);
+extern int tst_iswprint (FILE *, int);
+extern int tst_iswpunct (FILE *, int);
+extern int tst_iswspace (FILE *, int);
+extern int tst_iswupper (FILE *, int);
+extern int tst_iswxdigit (FILE *, int);
+extern int tst_mblen (FILE *, int);
+extern int tst_mbrlen (FILE *, int);
+extern int tst_mbrtowc (FILE *, int);
+extern int tst_mbsrtowcs (FILE *, int);
+extern int tst_mbstowcs (FILE *, int);
+extern int tst_mbtowc (FILE *, int);
+extern int tst_strcoll (FILE *, int);
+extern int tst_strfmon (FILE *, int);
+extern int tst_strxfrm (FILE *, int);
+extern int tst_swscanf (FILE *, int);
+extern int tst_towctrans (FILE *, int);
+extern int tst_towlower (FILE *, int);
+extern int tst_towupper (FILE *, int);
+extern int tst_wcrtomb (FILE *, int);
+extern int tst_wcscat (FILE *, int);
+extern int tst_wcschr (FILE *, int);
+extern int tst_wcscmp (FILE *, int);
+extern int tst_wcscoll (FILE *, int);
+extern int tst_wcscpy (FILE *, int);
+extern int tst_wcscspn (FILE *, int);
+extern int tst_wcslen (FILE *, int);
+extern int tst_wcsncat (FILE *, int);
+extern int tst_wcsncmp (FILE *, int);
+extern int tst_wcsncpy (FILE *, int);
+extern int tst_wcspbrk (FILE *, int);
+extern int tst_wcsrtombs (FILE *, int);
+extern int tst_wcsspn (FILE *, int);
+extern int tst_wcsstr (FILE *, int);
+extern int tst_wcstod (FILE *, int);
+extern int tst_wcstok (FILE *, int);
+extern int tst_wcstombs (FILE *, int);
+extern int tst_wcswidth (FILE *, int);
+extern int tst_wcsxfrm (FILE *, int);
+extern int tst_wctob (FILE *, int);
+extern int tst_wctomb (FILE *, int);
+extern int tst_wctrans (FILE *, int);
+extern int tst_wctype (FILE *, int);
+extern int tst_wcwidth (FILE *, int);
+
+#endif /* TGN_FUNCDEF_H */

+ 32 - 0
test/locale-mbwc/tgn_locdef.h

@@ -0,0 +1,32 @@
+#ifndef TGN_LOCDEF_H
+#define TGN_LOCDEF_H
+
+/* Defines for all locales used in the suite.  */
+
+/* POSIX C locale.  */
+#define TST_LOC_C	"C"
+
+/* German locale with ISO-8859-1.  */
+#define TST_LOC_de	"de_DE.ISO-8859-1"
+
+/* For US we use ANSI_X3.4-1968 (ASCII). Changed in en_US.ISO-8859-1  */
+#define TST_LOC_en	"en_US.ISO-8859-1"
+#define TST_LOC_enUS	TST_LOC_C
+
+/* NOTE: ja_JP.EUC-JP locale isn't supported into the uClibc!
+         UTF-8 is the only multibyte codeset supported. */
+/* Japanese locale with EUC-JP. */
+#if 0
+#define TST_LOC_eucJP	"ja_JP.EUC-JP"
+#endif
+
+/* Japanese locale with UTF-8. */
+#define TST_LOC_ja_UTF8	"ja_JP.UTF-8"
+
+/* German locale with UTF-8.  */
+#define TST_LOC_de_UTF8	"de_DE.UTF-8"
+
+/* End marker - must appear in each table as last entry.  */
+#define	TST_LOC_end	"lastEntry"
+
+#endif /* TGN_LOCDEF_H */

+ 64 - 0
test/locale-mbwc/tsp_common.c

@@ -0,0 +1,64 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *  Main driver
+ */
+
+
+#define TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func)
+#define _TST_FUNCTION_CALL(func) tst ##_## func
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
+#include <errno.h>
+#include <signal.h>
+
+#include "tst_types.h"
+#include "tgn_locdef.h"
+
+
+int
+main (int argc, char *argv[])
+{
+  int ret;
+  int debug;
+
+  debug = argc > 1 ? atoi (argv[1]) : 0;
+
+  if (debug)
+    {
+      fprintf (stdout, "\nTST_MBWC ===> %s ...\n", argv[0]);
+    }
+  ret = TST_FUNCTION_CALL (TST_FUNCTION) (stdout, debug);
+
+  return (ret != 0);
+}
+
+#define	 MAX_RESULT_REC	 132
+char result_rec[MAX_RESULT_REC];
+
+
+int
+result (FILE * fp, char res, const char *func, const char *loc, int rec_no,
+	int seq_no, int case_no, const char *msg)
+{
+  if (fp == NULL
+      || strlen (func) + strlen (loc) + strlen (msg) + 32 > MAX_RESULT_REC)
+    {
+      fprintf (stderr,
+	       "Warning: result(): can't write the result: %s:%s:%d:%d:%s\n",
+	       func, loc, rec_no, case_no, msg);
+      return 0;
+    }
+
+  sprintf (result_rec, "%s:%s:%d:%d:%d:%c:%s\n", func, loc, rec_no, seq_no,
+	   case_no, res, msg);
+
+  if (fputs (result_rec, fp) == EOF)
+    {
+      return 0;
+    }
+
+  return 1;
+}

+ 272 - 0
test/locale-mbwc/tst_funcs.h

@@ -0,0 +1,272 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	tst_funcs.h
+ *
+ *	 Definitions of macros
+ */
+
+
+#ifndef TST_FUNCS_H
+#define TST_FUNCS_H
+
+#define C_SUCCESS	   'S'	/* test case test passed		 */
+#define C_FAILURE	   'F'	/* test case failed			 */
+#define C_IGNORED	   'I'	/* test case/result ignored (not tested) */
+#define C_INVALID	   'D'	/* test data may be wrong		 */
+#define C_LOCALES	   'L'	/* can't set locale (skip)		 */
+
+
+extern int result (FILE * fp, char res, const char *func, const char *loc,
+		   int rec_no, int seq_num, int case_no, const char *msg);
+
+#define Result(C, S, E, M) \
+  result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M))
+
+#define CASE_0	  0
+#define CASE_1	  1
+#define CASE_2	  2
+#define CASE_3	  3
+#define CASE_4	  4
+#define CASE_5	  5
+#define CASE_6	  6
+#define CASE_7	  7
+#define CASE_8	  8
+#define CASE_9	  9
+
+#define MS_PASSED "PASSED"
+#define MS_SPACE  "	 "
+#define MS_FAILED "	 "
+#define MS_NOTEST "NOTEST"
+#define MS_ABORTU "ABEND0"
+#define MS_ABORT  "ABEND1"
+
+#define MK_PASSED 0x00
+#define MK_SPACE  0x01
+#define MK_NOTEST 0x02
+#define MK_ABORTU 0x04
+#define MK_ABORT  0x08
+
+
+
+/* ------------------ COMMON MACROS ------------------ */
+
+#define TST_ABS(x)  (((x) > 0) ? (x) : -(x))
+
+#define TMD_ERRET(_type_)   int	  err_val; \
+			    int	  ret_flg; \
+			    _type_ ret_val
+
+#define TMD_RECHEAD(_FUNC_)				      \
+									 \
+			      typedef struct {				 \
+				  TIN_##_FUNC_##_REC  input;		 \
+				  TEX_##_FUNC_##_REC  expect;		 \
+				  int is_last;				 \
+			      }	  TST_##_FUNC_##_REC;			 \
+			      typedef struct {				 \
+				  TST_HEAD	      hd;		 \
+				  TST_##_FUNC_##_REC  rec[ MAX_LOC_TEST ]; \
+			      }	  TST_##_FUNC_
+
+#define TST_FTYP(func)		tst_##func##_loc
+#define TST_HEAD(func)		tst_##func##_loc[ loc ].hd
+#define TST_INPUT(func)		tst_##func##_loc[ loc ].rec[ rec ].input
+#define TST_EXPECT(func)	tst_##func##_loc[ loc ].rec[ rec ].expect
+#define TST_INPUT_SEQ(func) \
+	tst_##func##_loc[ loc ].rec[ rec ].input.seq[ seq_num ]
+#define TST_EXPECT_SEQ(func) \
+	tst_##func##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ]
+#define TST_IS_LAST(func) \
+	tst_##func##_loc[ loc ].rec[ rec ].is_last
+
+
+#define TST_DECL_VARS(_type_)				\
+	int   loc, rec, err_count = 0;			\
+	int   warn_count __attribute__ ((unused));	\
+	int   func_id, seq_num = 0;			\
+	const char *locale;				\
+	int   err_exp, ret_flg;				\
+	int errno_save = 0;				\
+	_type_ ret_exp;					\
+	_type_ ret
+
+#define TST_DO_TEST(o_func) \
+	for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc)
+
+
+#define TST_HEAD_LOCALE(ofunc, s_func) \
+  func_id = TST_HEAD (ofunc).func_id;					      \
+  locale  = TST_HEAD (ofunc).locale;					      \
+  if (setlocale (LC_ALL, locale) == NULL)				      \
+    {									      \
+      fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n",      \
+	       locale);							      \
+      result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale");    \
+      ++err_count;							      \
+      continue;								      \
+    }
+
+#define TST_DO_REC(ofunc) \
+	for (rec=0; !TST_IS_LAST (ofunc); ++rec)
+
+#define TST_DO_SEQ(_count_) \
+	for (seq_num=0; seq_num < _count_; seq_num++)
+
+#define TST_GET_ERRET(_ofunc_)			\
+	err_exp = TST_EXPECT (_ofunc_).err_val; \
+	ret_flg = TST_EXPECT (_ofunc_).ret_flg; \
+	ret_exp = TST_EXPECT (_ofunc_).ret_val
+
+#define TST_GET_ERRET_SEQ(_ofunc_)		    \
+	err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; \
+	ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; \
+	ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val
+
+#define TST_CLEAR_ERRNO \
+	errno = 0
+
+#define TST_SAVE_ERRNO \
+	errno_save = errno
+
+/* Test value of ret and of errno if it should have a value.  */
+#define TST_IF_RETURN(_s_func_) \
+  if (err_exp != 0)							      \
+    {									      \
+      if (errno_save == err_exp)					      \
+	{								      \
+	  result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 1,	      \
+		  MS_PASSED);						      \
+	}								      \
+      else								      \
+	{								      \
+	  err_count++;							      \
+	  result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1,	      \
+		  "the value of errno is different from an expected value");  \
+	}								      \
+    }									      \
+									      \
+  if (ret_flg == 1)							      \
+    {									      \
+      if (ret == ret_exp)						      \
+	{								      \
+	  result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2,	      \
+		  MS_PASSED);						      \
+	}								      \
+      else								      \
+	{								      \
+	  err_count++;							      \
+	  result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2,	      \
+		  "the return value is different from an expected value");    \
+	}								      \
+    }									      \
+  else
+
+#define TEX_ERRET_REC(_type_)			\
+	struct {				\
+	    TMD_ERRET (_type_);			\
+	}
+
+#define TEX_ERRET_REC_SEQ(_type_, _count_)	\
+	struct {				\
+	    struct {				\
+		TMD_ERRET (_type_);		\
+	    } seq[ _count_ ];			\
+	}
+
+
+
+/* ------------------ FUNCTION: ISW*() ------------------- */
+
+#define TST_ISW_STRUCT(_FUNC_, _func_)			\
+	typedef						\
+	struct {					\
+	    wint_t   wc;				\
+	} TIN_ISW##_FUNC_##_REC;			\
+	typedef						\
+	TEX_ERRET_REC (int)   TEX_ISW##_FUNC_##_REC;	\
+	TMD_RECHEAD (ISW##_FUNC_)
+
+#define TST_FUNC_ISW(_FUNC_, _func_) \
+int									      \
+tst_isw##_func_ (FILE *fp, int debug_flg)				      \
+{									      \
+  TST_DECL_VARS(int);							      \
+  wint_t wc;								      \
+  TST_DO_TEST (isw##_func_)						      \
+    {									      \
+      TST_HEAD_LOCALE (isw##_func_, S_ISW##_FUNC_);			      \
+      TST_DO_REC(isw##_func_)						      \
+	{								      \
+	  TST_GET_ERRET (isw##_func_);					      \
+	  wc = TST_INPUT (isw##_func_).wc;				      \
+	  ret = isw##_func_ (wc);					      \
+	  if (debug_flg)						      \
+	    {								      \
+	      fprintf (stdout, "isw*() [ %s : %d ] ret = %d\n", locale,	      \
+		       rec+1, ret);					      \
+	    }								      \
+									      \
+	  TST_IF_RETURN (S_ISW##_FUNC_)					      \
+	    {								      \
+	      if (ret != 0)						      \
+		{							      \
+		  result (fp, C_SUCCESS, S_ISW##_FUNC_, locale, rec+1,	      \
+			  seq_num+1, 3, MS_PASSED);			      \
+		}							      \
+	      else							      \
+		{							      \
+		  err_count++;						      \
+		  result (fp, C_FAILURE, S_ISW##_FUNC_, locale, rec+1,	      \
+			  seq_num+1, 3,					      \
+			  "the function returned 0, but should be non-zero"); \
+		}							      \
+	    }								      \
+	}								      \
+    }									      \
+									      \
+  return err_count;							      \
+}
+
+
+
+/* ------------------ FUNCTION: TOW*() ------------------ */
+
+#define TST_TOW_STRUCT(_FUNC_, _func_)			\
+	typedef						\
+	struct {					\
+	    wint_t   wc;				\
+	} TIN_TOW##_FUNC_##_REC;			\
+	typedef						\
+	TEX_ERRET_REC (wint_t)	TEX_TOW##_FUNC_##_REC;	\
+	TMD_RECHEAD (TOW##_FUNC_)
+
+#define TST_FUNC_TOW(_FUNC_, _func_)					\
+int									\
+tst_tow##_func_ (FILE *fp, int debug_flg)				\
+{									\
+  TST_DECL_VARS (wint_t);						\
+  wint_t wc;								\
+  TST_DO_TEST (tow##_func_)						\
+    {									\
+      TST_HEAD_LOCALE (tow##_func_, S_TOW##_FUNC_);			\
+      TST_DO_REC (tow##_func_)						\
+	{								\
+	  TST_GET_ERRET (tow##_func_);					\
+	  wc = TST_INPUT (tow##_func_).wc;				\
+	  ret = tow##_func_ (wc);					\
+	  if (debug_flg)						\
+	    {								\
+	      fprintf (stdout, "tow*() [ %s : %d ] ret = 0x%x\n",	\
+		       locale, rec+1, ret);				\
+	    }								\
+									\
+	  TST_IF_RETURN (S_TOW##_FUNC_) { };				\
+	}								\
+    }									\
+									\
+  return err_count;							\
+}
+
+
+#endif /* TST_FUNCS_H */

+ 10 - 0
test/locale-mbwc/tst_iswalnum.c

@@ -0,0 +1,10 @@
+/*
+  ISWALNUM: int iswalnum (wint_t wc)
+*/
+
+#define TST_FUNCTION iswalnum
+
+#include "tsp_common.c"
+#include "dat_iswalnum.c"
+
+TST_FUNC_ISW (ALNUM, alnum);

+ 10 - 0
test/locale-mbwc/tst_iswalpha.c

@@ -0,0 +1,10 @@
+/*
+  ISWALPHA: int iswalpha (wint_t wc);
+*/
+
+#define TST_FUNCTION iswalpha
+
+#include "tsp_common.c"
+#include "dat_iswalpha.c"
+
+TST_FUNC_ISW (ALPHA, alpha);

+ 10 - 0
test/locale-mbwc/tst_iswcntrl.c

@@ -0,0 +1,10 @@
+/*
+  ISWCNTRL: int iswcntrl (wint_t wc);
+*/
+
+#define TST_FUNCTION iswcntrl
+
+#include "tsp_common.c"
+#include "dat_iswcntrl.c"
+
+TST_FUNC_ISW (CNTRL, cntrl);

+ 53 - 0
test/locale-mbwc/tst_iswctype.c

@@ -0,0 +1,53 @@
+/*
+  ISWCTYPE: int iswctype (wint_t wc, wctype_t desc);
+*/
+
+#define TST_FUNCTION iswctype
+
+#include "tsp_common.c"
+#include "dat_iswctype.c"
+
+
+int
+tst_iswctype (FILE *fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  wint_t wc;
+  const char *ts;
+
+  TST_DO_TEST (iswctype)
+    {
+      TST_HEAD_LOCALE (iswctype, S_ISWCTYPE);
+      TST_DO_REC (iswctype)
+	{
+	  TST_GET_ERRET (iswctype);
+	  wc = TST_INPUT (iswctype).wc;
+	  ts = TST_INPUT (iswctype).ts;
+	  ret = iswctype (wc, wctype (ts));
+	  TST_SAVE_ERRNO;
+	  if (debug_flg)
+	    {
+	      fprintf (stdout, "iswctype() [ %s : %d ] ret = %d\n",
+		       locale, rec+1, ret);
+	    }
+
+	  TST_IF_RETURN (S_ISWCTYPE)
+	    {
+	      if (ret != 0)
+		{
+		  result (fp, C_SUCCESS, S_ISWCTYPE, locale, rec+1,
+			  seq_num+1, 3, MS_PASSED);
+		}
+	      else
+		{
+		  err_count++;
+		  result (fp, C_FAILURE, S_ISWCTYPE, locale, rec+1,
+			  seq_num+1, 3,
+			  "the function returned 0, but should be non-zero");
+		}
+	    }
+	}
+    }
+
+  return err_count;
+}

+ 11 - 0
test/locale-mbwc/tst_iswdigit.c

@@ -0,0 +1,11 @@
+/*
+  ISWDIGIT: int iswdigit (wint_t wc);
+*/
+
+
+#define TST_FUNCTION iswdigit
+
+#include "tsp_common.c"
+#include "dat_iswdigit.c"
+
+TST_FUNC_ISW (DIGIT, digit);

+ 10 - 0
test/locale-mbwc/tst_iswgraph.c

@@ -0,0 +1,10 @@
+/*
+  ISWGRAPH: int iswgraph (wint_t wc);
+*/
+
+#define TST_FUNCTION iswgraph
+
+#include "tsp_common.c"
+#include "dat_iswgraph.c"
+
+TST_FUNC_ISW (GRAPH, graph);

+ 10 - 0
test/locale-mbwc/tst_iswlower.c

@@ -0,0 +1,10 @@
+/*
+  ISWLOWER: int iswlower (wint_t wc);
+*/
+
+#define TST_FUNCTION iswlower
+
+#include "tsp_common.c"
+#include "dat_iswlower.c"
+
+TST_FUNC_ISW (LOWER, lower);

+ 10 - 0
test/locale-mbwc/tst_iswprint.c

@@ -0,0 +1,10 @@
+/*
+  ISWPRINT: int iswprint (wint_t wc);
+*/
+
+#define TST_FUNCTION iswprint
+
+#include "tsp_common.c"
+#include "dat_iswprint.c"
+
+TST_FUNC_ISW (PRINT, print);

+ 10 - 0
test/locale-mbwc/tst_iswpunct.c

@@ -0,0 +1,10 @@
+/*
+  ISWPUNCT: int iswpunct (wint_t wc);
+*/
+
+#define TST_FUNCTION iswpunct
+
+#include "tsp_common.c"
+#include "dat_iswpunct.c"
+
+TST_FUNC_ISW (PUNCT, punct);

+ 10 - 0
test/locale-mbwc/tst_iswspace.c

@@ -0,0 +1,10 @@
+/*
+  ISWSPACE: int iswspace (wint_t wc);
+*/
+
+#define TST_FUNCTION iswspace
+
+#include "tsp_common.c"
+#include "dat_iswspace.c"
+
+TST_FUNC_ISW (SPACE, space);

+ 10 - 0
test/locale-mbwc/tst_iswupper.c

@@ -0,0 +1,10 @@
+/*
+  ISWUPPER: int iswupper (wint_t wc);
+*/
+
+#define TST_FUNCTION iswupper
+
+#include "tsp_common.c"
+#include "dat_iswupper.c"
+
+TST_FUNC_ISW (UPPER, upper);

+ 10 - 0
test/locale-mbwc/tst_iswxdigit.c

@@ -0,0 +1,10 @@
+/*
+  ISWXDIGIT: int iswxdigit (wint_t wc);
+*/
+
+#define TST_FUNCTION iswxdigit
+
+#include "tsp_common.c"
+#include "dat_iswxdigit.c"
+
+TST_FUNC_ISW (XDIGIT, xdigit);

+ 85 - 0
test/locale-mbwc/tst_mblen.c

@@ -0,0 +1,85 @@
+/*
+  MBLEN: int mblen (char *s, size_t n)
+*/
+
+#define TST_FUNCTION mblen
+
+#include "tsp_common.c"
+#include "dat_mblen.c"
+
+int
+tst_mblen (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  char s_flg;
+  const char *s_in;
+  size_t n;
+
+  TST_DO_TEST (mblen)
+  {
+    TST_HEAD_LOCALE (mblen, S_MBLEN);
+    TST_DO_REC (mblen)
+    {
+      TST_GET_ERRET (mblen);
+      s_flg = TST_INPUT (mblen).s_flg;
+      s_in = TST_INPUT (mblen).s;
+      n = TST_INPUT (mblen).n;
+
+      if (s_flg == 0)
+	{
+	  s_in = NULL;
+	}
+
+      if (n == USE_MBCURMAX)
+	{
+	  n = MB_CUR_MAX;
+	}
+
+      TST_CLEAR_ERRNO;
+      ret = mblen (s_in, n);
+      TST_SAVE_ERRNO;
+
+      TST_IF_RETURN (S_MBLEN)
+      {
+	if (s_in == NULL)
+	  {			/* state dependency */
+	    if (ret_exp == +1)
+	      {			/* state-dependent  */
+		if (ret != 0)
+		  {
+		    /* non-zero: state-dependent encoding */
+		    Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED);
+		  }
+		else
+		  {
+		    err_count++;
+		    Result (C_FAILURE, S_MBLEN, CASE_3,
+			    "should be state-dependent encoding, "
+			    "but the return value shows it is"
+			    " state-independent");
+		  }
+	      }
+
+	    if (ret_exp == 0)
+	      {			/* state-independent */
+		if (ret == 0)
+		  {
+		    /* non-zero: state-dependent encoding */
+		    Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED);
+		  }
+		else
+		  {
+		    err_count++;
+		    Result (C_FAILURE, S_MBLEN, CASE_3,
+			    "should be state-independent encoding, "
+			    "but the return value shows it is"
+			    " state-dependent");
+		  }
+	      }
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 82 - 0
test/locale-mbwc/tst_mbrlen.c

@@ -0,0 +1,82 @@
+/*
+  MBRLEN: size_t mbrlen (char *s, size_t n, mbstate_t *ps)
+*/
+
+#define TST_FUNCTION mbrlen
+
+#include "tsp_common.c"
+#include "dat_mbrlen.c"
+
+
+int
+tst_mbrlen (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char s_flg;
+  const char *s_in;
+  size_t n;
+  char t_flg;
+  char t_ini;
+  static mbstate_t s = { 0 };
+  mbstate_t *ps;
+
+  TST_DO_TEST (mbrlen)
+  {
+    TST_HEAD_LOCALE (mbrlen, S_MBRLEN);
+    TST_DO_REC (mbrlen)
+    {
+      if (mbrlen (NULL, 0, &s) != 0)
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_MBRLEN, CASE_3,
+		  "Initialization (external mbstate object) failed "
+		  "- skipped this test case.");
+	  continue;
+	}
+
+      TST_DO_SEQ (MBRLEN_SEQNUM)
+      {
+	TST_GET_ERRET_SEQ (mbrlen);
+	s_flg = TST_INPUT_SEQ (mbrlen).s_flg;
+	s_in = TST_INPUT_SEQ (mbrlen).s;
+	n = TST_INPUT_SEQ (mbrlen).n;
+	t_flg = TST_INPUT_SEQ (mbrlen).t_flg;
+	t_ini = TST_INPUT_SEQ (mbrlen).t_init;
+	if (s_flg == 0)
+	  {
+	    s_in = NULL;
+	  }
+
+	if (n == USE_MBCURMAX)	/* rewrite tst_mblen() like this */
+	  {
+	    n = MB_CUR_MAX;
+	  }
+
+	ps = (t_flg == 0) ? NULL : &s;
+
+	if (t_ini != 0)
+	  {
+	    memset (&s, 0, sizeof (s));
+	    mbrlen (NULL, 0, NULL);
+	  }
+
+	TST_CLEAR_ERRNO;
+	ret = mbrlen (s_in, n, ps);
+	TST_SAVE_ERRNO;
+
+	if (debug_flg)
+	  {
+	    fprintf (stdout, "mbrlen() [ %s : %d : %d ] ret = %zd\n",
+		     locale, rec + 1, seq_num + 1, ret);
+	    fprintf (stdout, "			   errno = %d\n", errno_save);
+	  }
+
+	TST_IF_RETURN (S_MBRLEN)
+	{
+	};
+      }
+    }
+  }
+
+  return err_count;
+}

+ 8009 - 0
test/locale-mbwc/tst_mbrlen.i

@@ -0,0 +1,8009 @@
+# 1 "tst_mbrlen.c"
+# 1 "/vob/stsca_uClibc-nptl/uClibc-nptl/test/locale-mbwc//"
+# 1 "<built-in>"
+#define __STDC__ 1
+# 1 "<built-in>"
+#define __STDC_HOSTED__ 1
+# 1 "<built-in>"
+#define __GNUC__ 4
+# 1 "<built-in>"
+#define __GNUC_MINOR__ 1
+# 1 "<built-in>"
+#define __GNUC_PATCHLEVEL__ 1
+# 1 "<built-in>"
+#define __SIZE_TYPE__ unsigned int
+# 1 "<built-in>"
+#define __PTRDIFF_TYPE__ int
+# 1 "<built-in>"
+#define __WCHAR_TYPE__ long int
+# 1 "<built-in>"
+#define __WINT_TYPE__ unsigned int
+# 1 "<built-in>"
+#define __INTMAX_TYPE__ long long int
+# 1 "<built-in>"
+#define __UINTMAX_TYPE__ long long unsigned int
+# 1 "<built-in>"
+#define __GXX_ABI_VERSION 1002
+# 1 "<built-in>"
+#define __SCHAR_MAX__ 127
+# 1 "<built-in>"
+#define __SHRT_MAX__ 32767
+# 1 "<built-in>"
+#define __INT_MAX__ 2147483647
+# 1 "<built-in>"
+#define __LONG_MAX__ 2147483647L
+# 1 "<built-in>"
+#define __LONG_LONG_MAX__ 9223372036854775807LL
+# 1 "<built-in>"
+#define __WCHAR_MAX__ 2147483647
+# 1 "<built-in>"
+#define __CHAR_BIT__ 8
+# 1 "<built-in>"
+#define __INTMAX_MAX__ 9223372036854775807LL
+# 1 "<built-in>"
+#define __FLT_EVAL_METHOD__ 0
+# 1 "<built-in>"
+#define __FLT_RADIX__ 2
+# 1 "<built-in>"
+#define __FLT_MANT_DIG__ 24
+# 1 "<built-in>"
+#define __FLT_DIG__ 6
+# 1 "<built-in>"
+#define __FLT_MIN_EXP__ (-125)
+# 1 "<built-in>"
+#define __FLT_MIN_10_EXP__ (-37)
+# 1 "<built-in>"
+#define __FLT_MAX_EXP__ 128
+# 1 "<built-in>"
+#define __FLT_MAX_10_EXP__ 38
+# 1 "<built-in>"
+#define __FLT_MAX__ 3.40282347e+38F
+# 1 "<built-in>"
+#define __FLT_MIN__ 1.17549435e-38F
+# 1 "<built-in>"
+#define __FLT_EPSILON__ 1.19209290e-7F
+# 1 "<built-in>"
+#define __FLT_DENORM_MIN__ 1.40129846e-45F
+# 1 "<built-in>"
+#define __FLT_HAS_INFINITY__ 1
+# 1 "<built-in>"
+#define __FLT_HAS_QUIET_NAN__ 1
+# 1 "<built-in>"
+#define __DBL_MANT_DIG__ 53
+# 1 "<built-in>"
+#define __DBL_DIG__ 15
+# 1 "<built-in>"
+#define __DBL_MIN_EXP__ (-1021)
+# 1 "<built-in>"
+#define __DBL_MIN_10_EXP__ (-307)
+# 1 "<built-in>"
+#define __DBL_MAX_EXP__ 1024
+# 1 "<built-in>"
+#define __DBL_MAX_10_EXP__ 308
+# 1 "<built-in>"
+#define __DBL_MAX__ 1.7976931348623157e+308
+# 1 "<built-in>"
+#define __DBL_MIN__ 2.2250738585072014e-308
+# 1 "<built-in>"
+#define __DBL_EPSILON__ 2.2204460492503131e-16
+# 1 "<built-in>"
+#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
+# 1 "<built-in>"
+#define __DBL_HAS_INFINITY__ 1
+# 1 "<built-in>"
+#define __DBL_HAS_QUIET_NAN__ 1
+# 1 "<built-in>"
+#define __LDBL_MANT_DIG__ 53
+# 1 "<built-in>"
+#define __LDBL_DIG__ 15
+# 1 "<built-in>"
+#define __LDBL_MIN_EXP__ (-1021)
+# 1 "<built-in>"
+#define __LDBL_MIN_10_EXP__ (-307)
+# 1 "<built-in>"
+#define __LDBL_MAX_EXP__ 1024
+# 1 "<built-in>"
+#define __LDBL_MAX_10_EXP__ 308
+# 1 "<built-in>"
+#define __DECIMAL_DIG__ 17
+# 1 "<built-in>"
+#define __LDBL_MAX__ 1.7976931348623157e+308L
+# 1 "<built-in>"
+#define __LDBL_MIN__ 2.2250738585072014e-308L
+# 1 "<built-in>"
+#define __LDBL_EPSILON__ 2.2204460492503131e-16L
+# 1 "<built-in>"
+#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
+# 1 "<built-in>"
+#define __LDBL_HAS_INFINITY__ 1
+# 1 "<built-in>"
+#define __LDBL_HAS_QUIET_NAN__ 1
+# 1 "<built-in>"
+#define __REGISTER_PREFIX__
+# 1 "<built-in>"
+#define __USER_LABEL_PREFIX__
+# 1 "<built-in>"
+#define __VERSION__ "4.1.1 (STMicroelectronics Special) [build Jun 26 2007]"
+# 1 "<built-in>"
+#define __NO_INLINE__ 1
+# 1 "<built-in>"
+#define __FINITE_MATH_ONLY__ 1
+# 1 "<built-in>"
+#define __sh__ 1
+# 1 "<built-in>"
+#define __SH4__ 1
+# 1 "<built-in>"
+#define __SH_FPU_ANY__ 1
+# 1 "<built-in>"
+#define __SH_FPU_DOUBLE__ 1
+# 1 "<built-in>"
+#define __LITTLE_ENDIAN__ 1
+# 1 "<built-in>"
+#define __gnu_linux__ 1
+# 1 "<built-in>"
+#define __linux 1
+# 1 "<built-in>"
+#define __linux__ 1
+# 1 "<built-in>"
+#define linux 1
+# 1 "<built-in>"
+#define __unix 1
+# 1 "<built-in>"
+#define __unix__ 1
+# 1 "<built-in>"
+#define unix 1
+# 1 "<built-in>"
+#define __ELF__ 1
+# 1 "<command line>"
+#define DEBUG 1
+# 1 "<command line>"
+#define _GNU_SOURCE 1
+# 1 "<command line>"
+#define __USE_GNU 1
+# 1 "<command line>"
+# 1 "./../../include/libc-symbols.h" 1
+# 23 "./../../include/libc-symbols.h"
+#define _LIBC_SYMBOLS_H 1
+# 41 "./../../include/libc-symbols.h"
+# 1 "../../include/bits/uClibc_arch_features.h" 1
+
+
+
+
+
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+
+
+
+
+#define __UCLIBC_ABORT_INSTRUCTION__ "trapa #0xff"
+
+
+
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+
+#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
+
+
+#define __UCLIBC_NO_UNDERSCORES__
+
+
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+
+#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+
+
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+
+
+#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+
+
+#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+
+#define __UCLIBC_HAVE_SIGNED_ZERO__
+# 42 "./../../include/libc-symbols.h" 2
+# 51 "./../../include/libc-symbols.h"
+#define _LIBC 1
+
+
+#define _GNU_SOURCE 1
+
+
+
+
+
+
+#define likely(x) __builtin_expect((!!(x)),1)
+
+
+#define unlikely(x) __builtin_expect((!!(x)),0)
+
+
+#define __LINUX_COMPILER_H
+
+
+#define __cast__(_to)
+
+
+#define attribute_unused __attribute__ ((unused))
+
+
+#define attribute_noreturn __attribute__ ((__noreturn__))
+
+
+
+
+
+#define IS_IN_libc 1
+
+
+
+#define NO_UNDERSCORES
+
+
+
+
+
+#define HAVE_ASM_SET_DIRECTIVE
+
+
+
+
+
+
+
+#define ASM_GLOBAL_DIRECTIVE .global
+
+
+
+#define HAVE_ASM_WEAK_DIRECTIVE
+
+
+
+
+
+
+
+#undef HAVE_ASM_WEAKEXT_DIRECTIVE
+
+
+
+
+
+#undef HAVE_ASM_GLOBAL_DOT_NAME
+
+
+
+#define HAVE_WEAK_SYMBOLS
+
+
+#undef C_SYMBOL_NAME
+
+
+#define C_SYMBOL_NAME(name) name
+
+
+
+
+
+
+#define ASM_LINE_SEP ;
+# 154 "./../../include/libc-symbols.h"
+#define strong_alias(name,aliasname) _strong_alias(name, aliasname)
+#define _strong_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name)));
+
+
+
+
+#define weak_function __attribute__ ((weak))
+#define weak_const_function __attribute__ ((weak, __const__))
+
+
+
+
+
+#define weak_alias(name,aliasname) _weak_alias (name, aliasname)
+#define _weak_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
+
+
+
+#define weak_extern(symbol) _weak_extern (weak symbol)
+#define _weak_extern(expr) _Pragma (#expr)
+# 278 "./../../include/libc-symbols.h"
+#define internal_function
+
+
+
+#define __make_section_unallocated(section_string) __asm__ (".section " section_string "\n\t.previous");
+
+
+
+
+
+
+
+#define __sec_comment "\n\t#"
+
+
+
+
+
+
+
+#define link_warning(symbol,msg) __make_section_unallocated (".gnu.warning." #symbol) static const char __evoke_link_warning_ ##symbol[] __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) = msg;
+# 323 "./../../include/libc-symbols.h"
+#define INTUSE(name) name
+#define INTDEF(name)
+#define INTVARDEF(name)
+#define INTDEF2(name,newname)
+#define INTVARDEF2(name,newname)
+# 419 "./../../include/libc-symbols.h"
+#define attribute_hidden __attribute__ ((visibility ("hidden")))
+#define __hidden_proto_hiddenattr(attrs...) __attribute__ ((visibility ("hidden"), ##attrs))
+
+
+
+
+
+
+
+#define hidden_proto(name,attrs...) __hidden_proto (name, __GI_ ##name, ##attrs)
+#define __hidden_proto(name,internal,attrs...) extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) __hidden_proto_hiddenattr (attrs);
+
+
+#define __hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name)
+#define __hidden_asmname1(prefix,name) __hidden_asmname2(prefix, name)
+#define __hidden_asmname2(prefix,name) #prefix name
+#define __hidden_ver1(local,internal,name) extern __typeof (name) __EI_ ##name __asm__(__hidden_asmname (#internal)); extern __typeof (name) __EI_ ##name __attribute__((alias (__hidden_asmname1 (,#local))))
+
+
+#define hidden_def(name) __hidden_ver1(__GI_ ##name, name, name);
+#define hidden_data_def(name) hidden_def(name)
+#define hidden_weak(name) __hidden_ver1(__GI_ ##name, name, name) __attribute__((weak));
+#define hidden_data_weak(name) hidden_weak(name)
+# 515 "./../../include/libc-symbols.h"
+#define versioned_symbol(lib,local,symbol,version)
+#define hidden_ver(local,name)
+#define hidden_data_ver(local,name)
+
+
+#define libc_hidden_proto(name,attrs...) hidden_proto (name, ##attrs)
+#define libc_hidden_def(name) hidden_def (name)
+#define libc_hidden_weak(name) hidden_weak (name)
+#define libc_hidden_ver(local,name) hidden_ver (local, name)
+#define libc_hidden_data_def(name) hidden_data_def (name)
+#define libc_hidden_data_weak(name) hidden_data_weak (name)
+#define libc_hidden_data_ver(local,name) hidden_data_ver (local, name)
+# 546 "./../../include/libc-symbols.h"
+#define rtld_hidden_proto(name,attrs...)
+#define rtld_hidden_def(name)
+#define rtld_hidden_weak(name)
+#define rtld_hidden_ver(local,name)
+#define rtld_hidden_data_def(name)
+#define rtld_hidden_data_weak(name)
+#define rtld_hidden_data_ver(local,name)
+# 564 "./../../include/libc-symbols.h"
+#define libm_hidden_proto(name,attrs...)
+#define libm_hidden_def(name)
+#define libm_hidden_weak(name)
+#define libm_hidden_ver(local,name)
+#define libm_hidden_data_def(name)
+#define libm_hidden_data_weak(name)
+#define libm_hidden_data_ver(local,name)
+# 582 "./../../include/libc-symbols.h"
+#define libresolv_hidden_proto(name,attrs...)
+#define libresolv_hidden_def(name)
+#define libresolv_hidden_weak(name)
+#define libresolv_hidden_ver(local,name)
+#define libresolv_hidden_data_def(name)
+#define libresolv_hidden_data_weak(name)
+#define libresolv_hidden_data_ver(local,name)
+# 600 "./../../include/libc-symbols.h"
+#define librt_hidden_proto(name,attrs...)
+#define librt_hidden_def(name)
+#define librt_hidden_weak(name)
+#define librt_hidden_ver(local,name)
+#define librt_hidden_data_def(name)
+#define librt_hidden_data_weak(name)
+#define librt_hidden_data_ver(local,name)
+# 618 "./../../include/libc-symbols.h"
+#define libdl_hidden_proto(name,attrs...)
+#define libdl_hidden_def(name)
+#define libdl_hidden_weak(name)
+#define libdl_hidden_ver(local,name)
+#define libdl_hidden_data_def(name)
+#define libdl_hidden_data_weak(name)
+#define libdl_hidden_data_ver(local,name)
+# 636 "./../../include/libc-symbols.h"
+#define libintl_hidden_proto(name,attrs...)
+#define libintl_hidden_def(name)
+#define libintl_hidden_weak(name)
+#define libintl_hidden_ver(local,name)
+#define libintl_hidden_data_def(name)
+#define libintl_hidden_data_weak(name)
+#define libintl_hidden_data_ver(local,name)
+# 654 "./../../include/libc-symbols.h"
+#define libnsl_hidden_proto(name,attrs...)
+#define libnsl_hidden_def(name)
+#define libnsl_hidden_weak(name)
+#define libnsl_hidden_ver(local,name)
+#define libnsl_hidden_data_def(name)
+#define libnsl_hidden_data_weak(name)
+#define libnsl_hidden_data_ver(local,name)
+# 672 "./../../include/libc-symbols.h"
+#define libutil_hidden_proto(name,attrs...)
+#define libutil_hidden_def(name)
+#define libutil_hidden_weak(name)
+#define libutil_hidden_ver(local,name)
+#define libutil_hidden_data_def(name)
+#define libutil_hidden_data_weak(name)
+#define libutil_hidden_data_ver(local,name)
+# 690 "./../../include/libc-symbols.h"
+#define libcrypt_hidden_proto(name,attrs...)
+#define libcrypt_hidden_def(name)
+#define libcrypt_hidden_weak(name)
+#define libcrypt_hidden_ver(local,name)
+#define libcrypt_hidden_data_def(name)
+#define libcrypt_hidden_data_weak(name)
+#define libcrypt_hidden_data_ver(local,name)
+# 708 "./../../include/libc-symbols.h"
+#define libpthread_hidden_proto(name,attrs...)
+#define libpthread_hidden_def(name)
+#define libpthread_hidden_weak(name)
+#define libpthread_hidden_ver(local,name)
+#define libpthread_hidden_data_def(name)
+#define libpthread_hidden_data_weak(name)
+#define libpthread_hidden_data_ver(local,name)
+# 1 "<command line>" 2
+# 1 "tst_mbrlen.c"
+
+
+
+
+#define TST_FUNCTION mbrlen
+
+# 1 "tsp_common.c" 1
+
+
+
+
+
+
+#define TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func)
+#define _TST_FUNCTION_CALL(func) tst ##_ ## func
+
+# 1 "../../include/stdio.h" 1
+# 27 "../../include/stdio.h"
+#define _STDIO_H 1
+# 1 "../../include/features.h" 1
+# 20 "../../include/features.h"
+#define _FEATURES_H 1
+
+
+
+
+#define __UCLIBC__ 1
+# 34 "../../include/features.h"
+#define __need_uClibc_config_h
+# 1 "../../include/bits/uClibc_config.h" 1
+# 12 "../../include/bits/uClibc_config.h"
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+#undef __TARGET_alpha__
+#undef __TARGET_arm__
+#undef __TARGET_bfin__
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#undef __TARGET_i386__
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#undef __TARGET_powerpc__
+#define __TARGET_sh__ 1
+#undef __TARGET_sh64__
+#undef __TARGET_sparc__
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#undef __TARGET_x86_64__
+
+
+
+
+#define __TARGET_ARCH__ "sh"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#undef __CONFIG_SH2A__
+#undef __CONFIG_SH2__
+#undef __CONFIG_SH3__
+#define __CONFIG_SH4__ 1
+#define __ARCH_HAS_BWD_MEMCPY__ 1
+#define __TARGET_SUBARCH__ "sh4"
+
+
+
+
+#define __ARCH_ANY_ENDIAN__ 1
+#define __ARCH_LITTLE_ENDIAN__ 1
+#undef __ARCH_WANTS_BIG_ENDIAN__
+#define __ARCH_WANTS_LITTLE_ENDIAN__ 1
+#define __ARCH_HAS_MMU__ 1
+#define __ARCH_USE_MMU__ 1
+#define __UCLIBC_HAS_FLOATS__ 1
+#define __UCLIBC_HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#define __KERNEL_HEADERS__ "/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include"
+#define __HAVE_DOT_CONFIG__ 1
+
+
+
+
+#undef __HAVE_NO_PIC__
+#undef __DOPIC__
+#undef __HAVE_NO_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#define __HAVE_SHARED__ 1
+#define __FORCE_SHAREABLE_TEXT_SEGMENTS__ 1
+#define __LDSO_LDD_SUPPORT__ 1
+#define __LDSO_CACHE_SUPPORT__ 1
+#undef __LDSO_PRELOAD_FILE_SUPPORT__
+#define __LDSO_BASE_FILENAME__ "ld.so"
+#undef __UCLIBC_STATIC_LDCONFIG__
+#define __LDSO_RUNPATH__ 1
+#define __UCLIBC_CTOR_DTOR__ 1
+#define __LDSO_GNU_HASH_SUPPORT__ 1
+#undef __HAS_NO_THREADS__
+#define __UCLIBC_HAS_THREADS__ 1
+#define __UCLIBC_HAS_THREADS_NATIVE__ 1
+#define __PTHREADS_DEBUG_SUPPORT__ 1
+#undef __LINUXTHREADS_OLD__
+#define __UCLIBC_HAS_LFS__ 1
+#undef __MALLOC__
+#undef __MALLOC_SIMPLE__
+#define __MALLOC_STANDARD__ 1
+#undef __MALLOC_GLIBC_COMPAT__
+#undef __UCLIBC_DYNAMIC_ATEXIT__
+#define __COMPAT_ATEXIT__ 1
+#define __UCLIBC_SUSV3_LEGACY__ 1
+#undef __UCLIBC_SUSV3_LEGACY_MACROS__
+#define __UCLIBC_HAS_SHADOW__ 1
+#undef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
+#define __UCLIBC_HAS___PROGNAME__ 1
+#define __UNIX98PTY_ONLY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#define __UCLIBC_HAS_TZ_CACHING__ 1
+#define __UCLIBC_HAS_TZ_FILE__ 1
+#define __UCLIBC_HAS_TZ_FILE_READ_MANY__ 1
+#define __UCLIBC_TZ_FILE_PATH__ "/etc/TZ"
+
+
+
+
+#define __UCLIBC_HAS_IPV6__ 1
+#define __UCLIBC_HAS_RPC__ 1
+#define __UCLIBC_HAS_FULL_RPC__ 1
+#define __UCLIBC_HAS_REENTRANT_RPC__ 1
+#undef __UCLIBC_USE_NETLINK__
+
+
+
+
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#define __UCLIBC_HAS_WCHAR__ 1
+#define __UCLIBC_HAS_LOCALE__ 1
+#undef __UCLIBC_PREGENERATED_LOCALE_DATA__
+#undef __UCLIBC_HAS_XLOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_DIGIT_GROUPING__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_256__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_4096__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#define __UCLIBC_HAS_PRINTF_M_SPEC__ 1
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#define __UCLIBC_HAS_SYS_ERRLIST__ 1
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#undef __UCLIBC_HAS_GETTEXT_AWARENESS__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_STDIO_FUTEXES__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+
+
+
+#define __UCLIBC_HAS_REGEX__ 1
+#undef __UCLIBC_HAS_REGEX_OLD__
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#define __UCLIBC_HAS_GNU_GLOB__ 1
+
+
+
+
+#define __SHARED_LIB_LOADER_PREFIX__ "/lib"
+#define __RUNTIME_PREFIX__ "/"
+#define __DEVEL_PREFIX__ "/usr"
+
+
+
+
+#undef __UCLIBC_HAS_ARC4RANDOM__
+#undef __HAVE_NO_SSP__
+#undef __UCLIBC_HAS_SSP__
+#define __UCLIBC_BUILD_RELRO__ 1
+#undef __UCLIBC_BUILD_NOW__
+#define __UCLIBC_BUILD_NOEXECSTACK__ 1
+
+
+
+
+#define __CROSS_COMPILER_PREFIX__ "sh4-linux-uclibc-"
+#define __UCLIBC_EXTRA_CFLAGS__ ""
+#define __DODEBUG__ 1
+#define __DOASSERTS__ 1
+#define __SUPPORT_LD_DEBUG__ 1
+#define __SUPPORT_LD_DEBUG_EARLY__ 1
+#undef __UCLIBC_MALLOC_DEBUGGING__
+#define __WARNINGS__ "-Wall"
+#define __EXTRA_WARNINGS__ 1
+#undef __DOMULTI__
+#define __UCLIBC_MJN3_ONLY__ 1
+# 36 "../../include/features.h" 2
+#undef __need_uClibc_config_h
+
+
+
+
+#define __OPTIMIZE_SIZE__ 1
+# 113 "../../include/features.h"
+#undef __USE_ISOC99
+#undef __USE_POSIX
+#undef __USE_POSIX2
+#undef __USE_POSIX199309
+#undef __USE_POSIX199506
+#undef __USE_XOPEN
+#undef __USE_XOPEN_EXTENDED
+#undef __USE_UNIX98
+#undef __USE_XOPEN2K
+#undef __USE_LARGEFILE
+#undef __USE_LARGEFILE64
+#undef __USE_FILE_OFFSET64
+#undef __USE_BSD
+#undef __USE_SVID
+#undef __USE_MISC
+#undef __USE_ATFILE
+#undef __USE_GNU
+#undef __USE_REENTRANT
+#undef __USE_FORTIFY_LEVEL
+#undef __FAVOR_BSD
+#undef __KERNEL_STRICT_NAMES
+
+
+
+
+#define __KERNEL_STRICT_NAMES
+
+
+
+#define __USE_ANSI 1
+# 152 "../../include/features.h"
+#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# 169 "../../include/features.h"
+#undef _ISOC99_SOURCE
+#define _ISOC99_SOURCE 1
+#undef _POSIX_SOURCE
+#define _POSIX_SOURCE 1
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 199506L
+#undef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 600
+#undef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+
+#undef _LARGEFILE64_SOURCE
+#define _LARGEFILE64_SOURCE 1
+
+#undef _BSD_SOURCE
+#define _BSD_SOURCE 1
+#undef _SVID_SOURCE
+#define _SVID_SOURCE 1
+#undef _ATFILE_SOURCE
+#define _ATFILE_SOURCE 1
+# 207 "../../include/features.h"
+#define __USE_ISOC99 1
+# 223 "../../include/features.h"
+#define __USE_POSIX 1
+
+
+
+#define __USE_POSIX2 1
+
+
+
+#define __USE_POSIX199309 1
+
+
+
+#define __USE_POSIX199506 1
+
+
+
+
+
+
+
+#define __USE_XOPEN 1
+
+#define __USE_XOPEN_EXTENDED 1
+#define __USE_UNIX98 1
+#undef _LARGEFILE_SOURCE
+#define _LARGEFILE_SOURCE 1
+
+#define __USE_XOPEN2K 1
+#undef __USE_ISOC99
+#define __USE_ISOC99 1
+# 262 "../../include/features.h"
+#define __USE_LARGEFILE 1
+
+
+
+#define __USE_LARGEFILE64 1
+
+
+
+
+
+
+
+#define __USE_MISC 1
+
+
+
+#define __USE_BSD 1
+
+
+
+#define __USE_SVID 1
+
+
+
+#define __USE_ATFILE 1
+
+
+
+#define __USE_GNU 1
+
+
+
+
+
+
+
+#undef _FORTIFY_SOURCE
+# 307 "../../include/features.h"
+#define __USE_FORTIFY_LEVEL 0
+
+
+
+#define __STDC_IEC_559__ 1
+#define __STDC_IEC_559_COMPLEX__ 1
+
+
+
+#define __STDC_ISO_10646__ 200009L
+# 340 "../../include/features.h"
+#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+# 356 "../../include/features.h"
+# 1 "../../include/sys/cdefs.h" 1
+# 20 "../../include/sys/cdefs.h"
+#define _SYS_CDEFS_H 1
+# 35 "../../include/sys/cdefs.h"
+#undef __P
+#undef __PMT
+# 46 "../../include/sys/cdefs.h"
+#define __THROW __attribute__ ((__nothrow__))
+#define __NTH(fct) __attribute__ ((__nothrow__)) fct
+# 73 "../../include/sys/cdefs.h"
+#define __P(args) args
+#define __PMT(args) args
+
+
+
+
+#define __CONCAT(x,y) x ## y
+#define __STRING(x) #x
+
+
+#define __ptr_t void *
+#define __long_double_t long double
+
+
+
+
+
+
+
+#define __BEGIN_DECLS
+#define __END_DECLS
+# 113 "../../include/sys/cdefs.h"
+#define __BEGIN_NAMESPACE_STD
+#define __END_NAMESPACE_STD
+#define __USING_NAMESPACE_STD(name)
+#define __BEGIN_NAMESPACE_C99
+#define __END_NAMESPACE_C99
+#define __USING_NAMESPACE_C99(name)
+
+
+
+
+
+#define __bounded
+#define __unbounded
+#define __ptrvalue
+
+
+
+
+#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+#define __bos0(ptr) __builtin_object_size (ptr, 0)
+#define __warndecl(name,msg) extern void name (void)
+
+
+
+
+
+#define __flexarr []
+# 166 "../../include/sys/cdefs.h"
+#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
+
+
+
+
+#define __REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW
+
+
+#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define __ASMNAME2(prefix,cname) __STRING (prefix) cname
+# 196 "../../include/sys/cdefs.h"
+#define __attribute_malloc__ __attribute__ ((__malloc__))
+# 205 "../../include/sys/cdefs.h"
+#define __attribute_pure__ __attribute__ ((__pure__))
+# 214 "../../include/sys/cdefs.h"
+#define __attribute_used__ __attribute__ ((__used__))
+#define __attribute_noinline__ __attribute__ ((__noinline__))
+
+
+
+
+
+
+
+#define __attribute_deprecated__ __attribute__ ((__deprecated__))
+# 235 "../../include/sys/cdefs.h"
+#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
+# 245 "../../include/sys/cdefs.h"
+#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
+# 254 "../../include/sys/cdefs.h"
+#define __nonnull(params) __attribute__ ((__nonnull__ params))
+
+
+
+
+
+
+
+#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
+# 271 "../../include/sys/cdefs.h"
+#define __wur
+
+
+
+
+#define __always_inline __inline __attribute__ ((__always_inline__))
+# 298 "../../include/sys/cdefs.h"
+#define __restrict_arr __restrict
+# 357 "../../include/features.h" 2
+# 396 "../../include/features.h"
+#undef _LARGEFILE_SOURCE
+#undef _LARGEFILE64_SOURCE
+#undef _FILE_OFFSET_BITS
+#undef __USE_LARGEFILE
+#undef __USE_LARGEFILE64
+#undef __USE_FILE_OFFSET64
+#define _LARGEFILE_SOURCE 1
+#define _LARGEFILE64_SOURCE 1
+#define __USE_LARGEFILE 1
+#define __USE_LARGEFILE64 1
+
+
+
+#undef _ATFILE_SOURCE
+#undef __USE_ATFILE
+
+
+# 1 "../../include/libc-internal.h" 1
+# 20 "../../include/libc-internal.h"
+#define _LIBC_INTERNAL_H 1
+
+# 1 "../../include/features.h" 1
+# 23 "../../include/libc-internal.h" 2
+
+
+#define attribute_relro __attribute__ ((section (".data.rel.ro")))
+
+
+
+
+
+#define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec")))
+# 43 "../../include/libc-internal.h"
+#define __need_size_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 189 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#define __size_t__
+#define __SIZE_T__
+#define _SIZE_T
+#define _SYS_SIZE_T_H
+#define _T_SIZE_
+#define _T_SIZE
+#define __SIZE_T
+#define _SIZE_T_
+#define _BSD_SIZE_T_
+#define _SIZE_T_DEFINED_
+#define _SIZE_T_DEFINED
+#define _BSD_SIZE_T_DEFINED_
+#define _SIZE_T_DECLARED
+#define ___int_size_t_h
+#define _GCC_SIZE_T
+#define _SIZET_
+
+
+
+#define __size_t
+
+
+
+
+
+typedef unsigned int size_t;
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_NULL
+# 45 "../../include/libc-internal.h" 2
+
+
+
+extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
+# 64 "../../include/libc-internal.h"
+extern const char *__uclibc_progname __attribute__ ((visibility ("hidden")));
+
+
+
+
+# 1 "../../include/bits/stackinfo.h" 1
+# 23 "../../include/bits/stackinfo.h"
+#define _STACKINFO_H 1
+
+
+#define _STACK_GROWS_DOWN 1
+# 70 "../../include/libc-internal.h" 2
+
+#define extend_alloca(buf,len,newlen) (__typeof (buf)) ({ size_t __newlen = (newlen); char *__newbuf = alloca (__newlen); if (__newbuf + __newlen == (char *) buf) len += __newlen; else len = __newlen; __newbuf; })
+# 414 "../../include/features.h" 2
+# 422 "../../include/features.h"
+#define __user
+# 29 "../../include/stdio.h" 2
+
+
+
+#define __need_size_t
+#define __need_NULL
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+# 35 "../../include/stdio.h" 2
+
+# 1 "../../include/bits/types.h" 1
+# 25 "../../include/bits/types.h"
+#define _BITS_TYPES_H 1
+
+
+# 1 "../../include/bits/wordsize.h" 1
+# 19 "../../include/bits/wordsize.h"
+#define __WORDSIZE 32
+# 29 "../../include/bits/types.h" 2
+
+#define __need_size_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_NULL
+# 32 "../../include/bits/types.h" 2
+# 1 "../../include/bits/kernel_types.h" 1
+
+
+
+
+
+
+
+#define __ASM_SH_POSIX_TYPES_H
+
+typedef unsigned short __kernel_dev_t;
+typedef unsigned long __kernel_ino_t;
+typedef unsigned short __kernel_mode_t;
+typedef unsigned short __kernel_nlink_t;
+typedef long __kernel_off_t;
+typedef int __kernel_pid_t;
+typedef unsigned short __kernel_ipc_pid_t;
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+typedef unsigned int __kernel_size_t;
+typedef int __kernel_ssize_t;
+typedef int __kernel_ptrdiff_t;
+typedef long __kernel_time_t;
+typedef long __kernel_suseconds_t;
+typedef long __kernel_clock_t;
+typedef int __kernel_daddr_t;
+typedef char * __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int __kernel_uid32_t;
+typedef unsigned int __kernel_gid32_t;
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+typedef __kernel_dev_t __kernel_old_dev_t;
+typedef long long __kernel_loff_t;
+
+typedef struct {
+
+
+
+ int __val[2];
+
+} __kernel_fsid_t;
+# 33 "../../include/bits/types.h" 2
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+
+
+
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+
+
+
+
+
+
+
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+# 103 "../../include/bits/types.h"
+#define __S16_TYPE short int
+#define __U16_TYPE unsigned short int
+#define __S32_TYPE int
+#define __U32_TYPE unsigned int
+#define __SLONGWORD_TYPE long int
+#define __ULONGWORD_TYPE unsigned long int
+
+#define __SQUAD_TYPE __quad_t
+#define __UQUAD_TYPE __u_quad_t
+#define __SWORD_TYPE int
+#define __UWORD_TYPE unsigned int
+#define __SLONG32_TYPE long int
+#define __ULONG32_TYPE unsigned long int
+#define __S64_TYPE __quad_t
+#define __U64_TYPE __u_quad_t
+
+
+#define __STD_TYPE __extension__ typedef
+# 135 "../../include/bits/types.h"
+# 1 "../../include/bits/typesizes.h" 1
+# 25 "../../include/bits/typesizes.h"
+#define _BITS_TYPESIZES_H 1
+
+
+
+
+#define __DEV_T_TYPE __UQUAD_TYPE
+#define __UID_T_TYPE __U32_TYPE
+#define __GID_T_TYPE __U32_TYPE
+#define __INO_T_TYPE __ULONGWORD_TYPE
+#define __INO64_T_TYPE __UQUAD_TYPE
+#define __MODE_T_TYPE __U32_TYPE
+#define __NLINK_T_TYPE __UWORD_TYPE
+#define __OFF_T_TYPE __SLONGWORD_TYPE
+#define __OFF64_T_TYPE __SQUAD_TYPE
+#define __PID_T_TYPE __S32_TYPE
+#define __RLIM_T_TYPE __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE __UQUAD_TYPE
+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __ID_T_TYPE __U32_TYPE
+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
+#define __TIME_T_TYPE __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE __U32_TYPE
+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#define __DADDR_T_TYPE __S32_TYPE
+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
+#define __KEY_T_TYPE __S32_TYPE
+#define __CLOCKID_T_TYPE __S32_TYPE
+#define __TIMER_T_TYPE void *
+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+#define __FSID_T_TYPE struct { int __val[2]; }
+#define __SSIZE_T_TYPE __SWORD_TYPE
+
+
+#define __FD_SETSIZE 1024
+# 136 "../../include/bits/types.h" 2
+
+
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+
+
+__extension__ typedef int __clockid_t;
+
+
+__extension__ typedef void * __timer_t;
+
+
+__extension__ typedef long int __blksize_t;
+
+
+
+
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+
+__extension__ typedef int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+__extension__ typedef int __intptr_t;
+
+
+__extension__ typedef unsigned int __socklen_t;
+
+
+#undef __STD_TYPE
+
+
+typedef __kernel_ipc_pid_t __ipc_pid_t;
+
+
+
+# 1 "../../include/bits/pthreadtypes.h" 1
+# 21 "../../include/bits/pthreadtypes.h"
+#define _BITS_PTHREADTYPES_H 1
+
+#define __SIZEOF_PTHREAD_ATTR_T 36
+#define __SIZEOF_PTHREAD_MUTEX_T 24
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
+#define __SIZEOF_PTHREAD_CONDATTR_T 4
+#define __SIZEOF_PTHREAD_RWLOCK_T 32
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+#define __SIZEOF_PTHREAD_BARRIER_T 20
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+
+
+
+
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+  char __size[36];
+  long int __align;
+} pthread_attr_t;
+
+
+
+
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __count;
+    int __owner;
+
+
+    int __kind;
+    unsigned int __nusers;
+    int __spins;
+  } __data;
+  char __size[24];
+  long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+  char __size[4];
+  long int __align;
+} pthread_mutexattr_t;
+
+
+
+
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __futex;
+    __extension__ unsigned long long int __total_seq;
+    __extension__ unsigned long long int __wakeup_seq;
+    __extension__ unsigned long long int __woken_seq;
+    void *__mutex;
+    unsigned int __nwaiters;
+    unsigned int __broadcast_seq;
+  } __data;
+  char __size[48];
+  __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+  char __size[4];
+  long int __align;
+} pthread_condattr_t;
+
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __nr_readers;
+    unsigned int __readers_wakeup;
+    unsigned int __writer_wakeup;
+    unsigned int __nr_readers_queued;
+    unsigned int __nr_writers_queued;
+
+
+    unsigned int __flags;
+    pthread_t __writer;
+  } __data;
+  char __size[32];
+  long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+  char __size[8];
+  long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+
+
+typedef union
+{
+  char __size[20];
+  long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+  char __size[4];
+  int __align;
+} pthread_barrierattr_t;
+# 207 "../../include/bits/types.h" 2
+# 37 "../../include/stdio.h" 2
+#define __need_FILE
+#define __need___FILE
+
+
+
+
+
+
+
+typedef struct __STDIO_FILE_STRUCT FILE;
+
+
+
+
+
+
+
+#define __FILE_defined 1
+
+#undef __need_FILE
+
+
+
+
+
+typedef struct __STDIO_FILE_STRUCT __FILE;
+
+#define ____FILE_defined 1
+
+#undef __need___FILE
+
+
+
+#undef _STDIO_USES_IOSTREAM
+
+# 1 "../../include/bits/uClibc_stdio.h" 1
+# 14 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_BUFFERS
+# 29 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_BUFSIZ 4096
+# 40 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_BUILTIN_BUF_SIZE 0
+# 51 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_HAS_OPENLIST 1
+# 61 "../../include/bits/uClibc_stdio.h"
+#undef __USE_LARGEFILE
+#undef __USE_LARGEFILE64
+#undef __USE_FILE_OFFSET64
+
+#define __USE_LARGEFILE64 1
+# 80 "../../include/bits/uClibc_stdio.h"
+#define __need_wchar_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 265 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#define __wchar_t__
+#define __WCHAR_T__
+#define _WCHAR_T
+#define _T_WCHAR_
+#define _T_WCHAR
+#define __WCHAR_T
+#define _WCHAR_T_
+#define _BSD_WCHAR_T_
+#define _WCHAR_T_DEFINED_
+#define _WCHAR_T_DEFINED
+#define _WCHAR_T_H
+#define ___int_wchar_t_h
+#define __INT_WCHAR_T_H
+#define _GCC_WCHAR_T
+#define _WCHAR_T_DECLARED
+# 292 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef _BSD_WCHAR_T_
+# 326 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+typedef long int wchar_t;
+# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_NULL
+# 82 "../../include/bits/uClibc_stdio.h" 2
+
+
+
+#define __STDIO_MBSTATE
+#define __need_mbstate_t
+# 1 "../../include/wchar.h" 1
+# 51 "../../include/wchar.h"
+#define __need_wint_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 350 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#define _WINT_T
+
+
+
+
+typedef unsigned int wint_t;
+
+#undef __need_wint_t
+# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_NULL
+# 53 "../../include/wchar.h" 2
+
+# 1 "../../include/bits/wchar.h" 1
+# 21 "../../include/bits/wchar.h"
+#define _BITS_WCHAR_H 1
+
+#define __WCHAR_MIN (-2147483647 - 1)
+#define __WCHAR_MAX (2147483647)
+# 55 "../../include/wchar.h" 2
+# 78 "../../include/wchar.h"
+#define __mbstate_t_defined 1
+
+
+typedef struct
+{
+ wchar_t __mask;
+ wchar_t __wc;
+} __mbstate_t;
+# 98 "../../include/wchar.h"
+#undef __need_mbstate_t
+# 88 "../../include/bits/uClibc_stdio.h" 2
+
+
+
+
+
+
+
+#define __STDIO_GETC_MACRO
+
+
+
+#define __STDIO_PUTC_MACRO
+# 138 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_AUTO_THREADLOCK_VAR int __infunc_user_locking
+# 165 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_AUTO_THREADLOCK(__stream) if ((__infunc_user_locking = (__stream)->__user_locking) == 0) { __pthread_mutex_lock(&(__stream)->__lock); }
+
+
+
+
+#define __STDIO_AUTO_THREADUNLOCK(__stream) if (__infunc_user_locking == 0) { __pthread_mutex_unlock(&(__stream)->__lock); }
+
+
+
+
+#define __STDIO_SET_USER_LOCKING(__stream) ((__stream)->__user_locking = 1)
+
+#define __STDIO_ALWAYS_THREADLOCK(__stream) __pthread_mutex_lock(&(__stream)->__lock)
+
+
+#define __STDIO_ALWAYS_THREADTRYLOCK(__stream) __pthread_mutex_trylock(&(__stream)->__lock)
+
+
+#define __STDIO_ALWAYS_THREADUNLOCK(__stream) __pthread_mutex_unlock(&(__stream)->__lock)
+# 204 "../../include/bits/uClibc_stdio.h"
+#define __STDIO_IOFBF 0
+#define __STDIO_IOLBF 1
+#define __STDIO_IONBF 2
+
+typedef struct {
+ __off_t __pos;
+
+ __mbstate_t __mbstate;
+
+
+ int __mblen_pending;
+
+} __STDIO_fpos_t;
+
+
+typedef struct {
+ __off64_t __pos;
+
+ __mbstate_t __mbstate;
+
+
+ int __mblen_pending;
+
+} __STDIO_fpos64_t;
+
+
+
+
+typedef __off64_t __offmax_t;
+# 271 "../../include/bits/uClibc_stdio.h"
+struct __STDIO_FILE_STRUCT {
+ unsigned short __modeflags;
+
+
+ unsigned char __ungot_width[2];
+
+
+
+
+
+
+ int __filedes;
+
+ unsigned char *__bufstart;
+ unsigned char *__bufend;
+ unsigned char *__bufpos;
+ unsigned char *__bufread;
+
+
+ unsigned char *__bufgetc_u;
+
+
+ unsigned char *__bufputc_u;
+
+
+
+
+
+ struct __STDIO_FILE_STRUCT *__nextopen;
+
+
+
+
+
+
+ wchar_t __ungot[2];
+
+
+ __mbstate_t __state;
+
+
+
+
+
+ int __user_locking;
+
+
+
+ pthread_mutex_t __lock;
+
+
+
+
+
+
+};
+# 347 "../../include/bits/uClibc_stdio.h"
+#define __MASK_READING 0x0003U
+#define __FLAG_READING 0x0001U
+#define __FLAG_UNGOT 0x0002U
+#define __FLAG_EOF 0x0004U
+#define __FLAG_ERROR 0x0008U
+#define __FLAG_WRITEONLY 0x0010U
+#define __FLAG_READONLY 0x0020U
+#define __FLAG_WRITING 0x0040U
+#define __FLAG_NARROW 0x0080U
+
+#define __FLAG_FBF 0x0000U
+#define __FLAG_LBF 0x0100U
+#define __FLAG_NBF 0x0200U
+#define __MASK_BUFMODE 0x0300U
+#define __FLAG_APPEND 0x0400U
+#define __FLAG_WIDE 0x0800U
+
+#define __FLAG_FREEFILE 0x2000U
+#define __FLAG_FREEBUF 0x4000U
+#define __FLAG_LARGEFILE 0x8000U
+#define __FLAG_FAILED_FREOPEN __FLAG_LARGEFILE
+# 388 "../../include/bits/uClibc_stdio.h"
+extern void _stdio_init(void) __attribute__ ((visibility ("hidden")));
+extern void _stdio_term(void) __attribute__ ((visibility ("hidden")));
+
+
+
+extern struct __STDIO_FILE_STRUCT *_stdio_openlist;
+
+
+
+
+
+extern pthread_mutex_t _stdio_openlist_lock;
+
+extern int _stdio_openlist_delflag;
+extern int _stdio_user_locking;
+
+extern void __stdio_init_mutex(pthread_mutex_t *m) __attribute__ ((visibility ("hidden")));
+# 413 "../../include/bits/uClibc_stdio.h"
+#define __CLEARERR_UNLOCKED(__stream) ((void)((__stream)->__modeflags &= ~(__FLAG_EOF|__FLAG_ERROR)))
+
+#define __FEOF_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_EOF)
+#define __FERROR_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_ERROR)
+
+
+#define __CLEARERR(__stream) (clearerr)(__stream)
+#define __FERROR(__stream) (ferror)(__stream)
+#define __FEOF(__stream) (feof)(__stream)
+
+
+
+
+
+
+extern int __fgetc_unlocked(FILE *__stream);
+extern int __fputc_unlocked(int __c, FILE *__stream);
+
+
+#define __FGETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))
+#define __FGETC(__stream) (fgetc)((__stream))
+#define __GETC_UNLOCKED_MACRO(__stream) (__fgetc_unlocked)((__stream))
+#define __GETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))
+#define __GETC(__stream) (fgetc)((__stream))
+
+#define __FPUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))
+#define __FPUTC(__c,__stream) (fputc)((__c),(__stream))
+#define __PUTC_UNLOCKED_MACRO(__c,__stream) (__fputc_unlocked)((__c),(__stream))
+#define __PUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))
+#define __PUTC(__c,__stream) (fputc)((__c),(__stream))
+
+
+
+
+extern FILE *__stdin;
+
+#undef __GETC_UNLOCKED_MACRO
+#define __GETC_UNLOCKED_MACRO(__stream) ( ((__stream)->__bufpos < (__stream)->__bufgetc_u) ? (*(__stream)->__bufpos++) : __fgetc_unlocked(__stream) )
+# 466 "../../include/bits/uClibc_stdio.h"
+#undef __FGETC_UNLOCKED
+#define __FGETC_UNLOCKED(__stream) (__extension__ ({ FILE *__S = (__stream); __GETC_UNLOCKED_MACRO(__S); }) )
+
+
+
+
+
+#undef __GETC_UNLOCKED
+#define __GETC_UNLOCKED(__stream) __FGETC_UNLOCKED((__stream))
+
+
+#undef __FGETC
+#define __FGETC(__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking ) ? __GETC_UNLOCKED_MACRO(__S) : (fgetc)(__S)); }) )
+
+
+
+
+
+
+
+#undef __GETC
+#define __GETC(__stream) __FGETC((__stream))
+# 506 "../../include/bits/uClibc_stdio.h"
+extern FILE *__stdout;
+
+#undef __PUTC_UNLOCKED_MACRO
+#define __PUTC_UNLOCKED_MACRO(__c,__stream) ( ((__stream)->__bufpos < (__stream)->__bufputc_u) ? (*(__stream)->__bufpos++) = (__c) : __fputc_unlocked((__c),(__stream)) )
+# 527 "../../include/bits/uClibc_stdio.h"
+#undef __FPUTC_UNLOCKED
+#define __FPUTC_UNLOCKED(__c,__stream) (__extension__ ({ FILE *__S = (__stream); __PUTC_UNLOCKED_MACRO((__c),__S); }) )
+
+
+
+
+
+#undef __PUTC_UNLOCKED
+#define __PUTC_UNLOCKED(__c,__stream) __FPUTC_UNLOCKED((__c), (__stream))
+
+
+#undef __FPUTC
+#define __FPUTC(__c,__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking) ? __PUTC_UNLOCKED_MACRO((__c),__S) : (fputc)((__c),__S)); }) )
+
+
+
+
+
+
+
+#undef __PUTC
+#define __PUTC(__c,__stream) __FPUTC((__c), (__stream))
+# 73 "../../include/stdio.h" 2
+
+
+#define __need___va_list
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 1 3 4
+# 37 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 3 4
+#undef __need___va_list
+
+
+
+
+#define __GNUC_VA_LIST
+typedef __builtin_va_list __gnuc_va_list;
+# 77 "../../include/stdio.h" 2
+
+
+
+
+typedef __STDIO_fpos_t fpos_t;
+
+
+
+
+
+typedef __STDIO_fpos64_t fpos64_t;
+
+
+
+#define _IOFBF __STDIO_IOFBF
+#define _IOLBF __STDIO_IOLBF
+#define _IONBF __STDIO_IONBF
+
+
+
+
+#define BUFSIZ __STDIO_BUFSIZ
+
+
+
+
+
+
+#define EOF (-1)
+
+
+
+
+
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+
+
+
+#define P_tmpdir "/tmp"
+# 131 "../../include/stdio.h"
+# 1 "../../include/bits/stdio_lim.h" 1
+# 24 "../../include/bits/stdio_lim.h"
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4095
+
+
+#define L_ctermid 9
+#define L_cuserid 9
+
+
+
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+# 132 "../../include/stdio.h" 2
+
+
+
+extern FILE *stdin;
+extern FILE *stdout;
+extern FILE *stderr;
+
+#define stdin stdin
+#define stdout stdout
+#define stderr stderr
+
+
+
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+
+extern FILE *tmpfile (void);
+# 167 "../../include/stdio.h"
+extern FILE *tmpfile64 (void);
+
+
+
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__));
+# 189 "../../include/stdio.h"
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 214 "../../include/stdio.h"
+extern int fflush_unlocked (FILE *__stream);
+# 224 "../../include/stdio.h"
+extern int fcloseall (void);
+
+
+
+
+
+
+
+
+
+extern FILE *fopen (__const char *__restrict __filename,
+      __const char *__restrict __modes);
+
+
+
+
+extern FILE *freopen (__const char *__restrict __filename,
+        __const char *__restrict __modes,
+        FILE *__restrict __stream);
+# 255 "../../include/stdio.h"
+
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+        __const char *__restrict __modes);
+extern FILE *freopen64 (__const char *__restrict __filename,
+   __const char *__restrict __modes,
+   FILE *__restrict __stream);
+
+
+
+
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__));
+# 289 "../../include/stdio.h"
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+      int __modes, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+         size_t __size) __attribute__ ((__nothrow__));
+
+
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+      __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+       __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+       __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+       __const char *__restrict __format, ...)
+     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+        __const char *__restrict __format, __gnuc_va_list __arg)
+     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+
+
+
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+        __gnuc_va_list __arg)
+     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+
+
+
+
+
+extern int asprintf (char **__restrict __ptr,
+       __const char *__restrict __fmt, ...)
+     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+       __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+     __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+     __const char *__restrict __format, ...);
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...);
+
+extern int sscanf (__const char *__restrict __s,
+     __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+      __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__scanf__, 2, 0)));
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__scanf__, 1, 0)));
+
+
+extern int vsscanf (__const char *__restrict __s,
+      __const char *__restrict __format, __gnuc_va_list __arg)
+     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+
+
+
+#define getc(_fp) __GETC(_fp)
+
+
+
+
+
+
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+
+
+#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
+# 465 "../../include/stdio.h"
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+
+
+
+#define putc(_ch,_fp) __PUTC(_ch, _fp)
+# 498 "../../include/stdio.h"
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+#define putc_unlocked(_ch,_fp) __PUTC_UNLOCKED(_ch, _fp)
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
+
+
+
+
+
+
+extern char *gets (char *__s);
+
+# 546 "../../include/stdio.h"
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+        FILE *__restrict __stream);
+# 567 "../../include/stdio.h"
+extern __ssize_t getdelim (char **__restrict __lineptr,
+        size_t *__restrict __n, int __delimiter,
+        FILE *__restrict __stream);
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+       size_t *__restrict __n,
+       FILE *__restrict __stream);
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+       size_t __n, FILE *__restrict __stream);
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+        size_t __n, FILE *__restrict __s);
+
+# 625 "../../include/stdio.h"
+extern int fputs_unlocked (__const char *__restrict __s,
+      FILE *__restrict __stream);
+# 636 "../../include/stdio.h"
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+         size_t __n, FILE *__restrict __stream);
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+          size_t __n, FILE *__restrict __stream);
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream);
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 672 "../../include/stdio.h"
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+
+
+
+
+extern __off_t ftello (FILE *__stream);
+# 691 "../../include/stdio.h"
+
+
+
+
+
+
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+
+
+
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 714 "../../include/stdio.h"
+
+
+
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream);
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+
+
+
+
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__));
+
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+
+
+
+
+
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+
+
+
+
+
+
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+# 775 "../../include/stdio.h"
+extern FILE *popen (__const char *__command, __const char *__modes);
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *cuserid (char *__s);
+# 815 "../../include/stdio.h"
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+# 835 "../../include/stdio.h"
+#define fgetc(_fp) __FGETC(_fp)
+#define fputc(_ch,_fp) __FPUTC(_ch, _fp)
+
+
+#define fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp)
+#define fputc_unlocked(_ch,_fp) __FPUTC_UNLOCKED(_ch, _fp)
+
+
+
+
+
+#define getchar() __GETC(__stdin)
+
+
+
+
+#define putchar(_ch) __PUTC((_ch), __stdout)
+
+
+#define getchar_unlocked() __GETC_UNLOCKED(__stdin)
+#define putchar_unlocked(_ch) __PUTC_UNLOCKED((_ch), __stdout)
+
+
+
+#define clearerr(_fp) __CLEARERR(_fp)
+#define feof(_fp) __FEOF(_fp)
+#define ferror(_fp) __FERROR(_fp)
+
+
+#define clearerr_unlocked(_fp) __CLEARERR_UNLOCKED(_fp)
+#define feof_unlocked(_fp) __FEOF_UNLOCKED(_fp)
+#define ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)
+
+
+
+# 11 "tsp_common.c" 2
+# 1 "../../include/stdlib.h" 1
+# 28 "../../include/stdlib.h"
+#define __need_size_t
+
+
+#define __need_wchar_t
+
+#define __need_NULL
+
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+# 36 "../../include/stdlib.h" 2
+
+
+
+
+#define _STDLIB_H 1
+
+
+
+# 1 "../../include/bits/waitflags.h" 1
+# 26 "../../include/bits/waitflags.h"
+#define WNOHANG 1
+#define WUNTRACED 2
+
+
+#define WSTOPPED 2
+#define WEXITED 4
+#define WCONTINUED 8
+#define WNOWAIT 0x01000000
+
+#define __WNOTHREAD 0x20000000
+
+#define __WALL 0x40000000
+#define __WCLONE 0x80000000
+# 45 "../../include/stdlib.h" 2
+# 1 "../../include/bits/waitstatus.h" 1
+# 29 "../../include/bits/waitstatus.h"
+#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
+
+
+#define __WTERMSIG(status) ((status) & 0x7f)
+
+
+#define __WSTOPSIG(status) __WEXITSTATUS(status)
+
+
+#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
+
+
+
+#define __WIFSIGNALED(status) (__extension__ ({ int __status = (status); !__WIFSTOPPED(__status) && !__WIFEXITED(__status); }))
+
+
+
+
+
+
+
+#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
+
+
+#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
+
+
+#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
+#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
+#define __WCOREFLAG 0x80
+
+
+
+
+# 1 "../../include/endian.h" 1
+# 20 "../../include/endian.h"
+#define _ENDIAN_H 1
+# 32 "../../include/endian.h"
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __PDP_ENDIAN 3412
+
+
+# 1 "../../include/bits/endian.h" 1
+
+
+
+
+
+
+
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN
+# 38 "../../include/endian.h" 2
+# 46 "../../include/endian.h"
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define BIG_ENDIAN __BIG_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
+
+
+
+#define __LONG_LONG_PAIR(HI,LO) LO, HI
+# 64 "../../include/bits/waitstatus.h" 2
+
+union wait
+  {
+    int w_status;
+    struct
+      {
+
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+
+
+
+
+
+
+
+      } __wait_terminated;
+    struct
+      {
+
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+
+
+
+
+
+
+      } __wait_stopped;
+  };
+
+#define w_termsig __wait_terminated.__w_termsig
+#define w_coredump __wait_terminated.__w_coredump
+#define w_retcode __wait_terminated.__w_retcode
+#define w_stopsig __wait_stopped.__w_stopsig
+#define w_stopval __wait_stopped.__w_stopval
+# 46 "../../include/stdlib.h" 2
+
+
+
+
+
+
+
+#define __WAIT_INT(status) (__extension__ ({ union { __typeof(status) __in; int __i; } __u; __u.__in = (status); __u.__i; }))
+# 70 "../../include/stdlib.h"
+typedef union
+  {
+    union wait *__uptr;
+    int *__iptr;
+  } __WAIT_STATUS __attribute__ ((__transparent_union__));
+#define __WAIT_STATUS_DEFN int *
+# 87 "../../include/stdlib.h"
+#define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
+#define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))
+#define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))
+#define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))
+#define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))
+#define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
+
+
+
+
+
+
+
+typedef struct
+  {
+    int quot;
+    int rem;
+  } div_t;
+
+
+
+typedef struct
+  {
+    long int quot;
+    long int rem;
+  } ldiv_t;
+#define __ldiv_t_defined 1
+
+
+
+
+
+
+__extension__ typedef struct
+  {
+    long long int quot;
+    long long int rem;
+  } lldiv_t;
+#define __lldiv_t_defined 1
+
+
+
+
+
+#define RAND_MAX 2147483647
+
+
+
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+# 146 "../../include/stdlib.h"
+#define MB_CUR_MAX (_stdlib_mb_cur_max ())
+extern size_t _stdlib_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern double atof (__const char *__nptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+extern int atoi (__const char *__nptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long int atol (__const char *__nptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+        char **__restrict __endptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+       char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long double strtold (__const char *__restrict __nptr,
+       char **__restrict __endptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+   char **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+      char **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+        char **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+           char **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+         char **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+     char **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+# 297 "../../include/stdlib.h"
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+
+
+extern long int a64l (__const char *__s)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+# 1 "../../include/sys/types.h" 1
+# 25 "../../include/sys/types.h"
+#define _SYS_TYPES_H 1
+
+
+
+
+
+
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+#define __u_char_defined
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+
+
+
+#define __ino_t_defined
+
+
+typedef __ino64_t ino64_t;
+#define __ino64_t_defined
+
+
+
+typedef __dev_t dev_t;
+#define __dev_t_defined
+
+
+
+typedef __gid_t gid_t;
+#define __gid_t_defined
+
+
+
+typedef __mode_t mode_t;
+#define __mode_t_defined
+
+
+
+typedef __nlink_t nlink_t;
+#define __nlink_t_defined
+
+
+
+typedef __uid_t uid_t;
+#define __uid_t_defined
+
+
+
+
+typedef __off_t off_t;
+
+
+
+#define __off_t_defined
+
+
+typedef __off64_t off64_t;
+#define __off64_t_defined
+
+
+
+typedef __pid_t pid_t;
+#define __pid_t_defined
+
+
+
+typedef __id_t id_t;
+#define __id_t_defined
+
+
+
+typedef __ssize_t ssize_t;
+#define __ssize_t_defined
+
+
+
+
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+#define __daddr_t_defined
+
+
+
+
+typedef __key_t key_t;
+#define __key_t_defined
+
+
+
+#define __need_clock_t
+
+#define __need_time_t
+#define __need_timer_t
+#define __need_clockid_t
+# 1 "../../include/time.h" 1
+# 55 "../../include/time.h"
+#define __clock_t_defined 1
+
+
+
+
+
+typedef __clock_t clock_t;
+
+
+
+
+
+
+#undef __need_clock_t
+
+
+#define __time_t_defined 1
+
+
+
+
+
+typedef __time_t time_t;
+
+
+
+
+
+
+#undef __need_time_t
+
+
+
+#define __clockid_t_defined 1
+
+
+
+
+typedef __clockid_t clockid_t;
+
+
+#undef __clockid_time_t
+
+
+
+#define __timer_t_defined 1
+
+
+
+
+typedef __timer_t timer_t;
+
+
+#undef __need_timer_t
+# 128 "../../include/time.h"
+#undef __need_timespec
+# 134 "../../include/sys/types.h" 2
+
+
+
+typedef __useconds_t useconds_t;
+#define __useconds_t_defined
+
+
+typedef __suseconds_t suseconds_t;
+#define __suseconds_t_defined
+
+
+
+#define __need_size_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_NULL
+# 148 "../../include/sys/types.h" 2
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 184 "../../include/sys/types.h"
+#define __intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE)))
+
+#define __u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE)))
+
+
+
+#define __int8_t_defined
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+
+
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+
+
+
+
+
+#define __BIT_TYPES_DEFINED__ 1
+
+
+
+
+
+
+
+# 1 "../../include/sys/select.h" 1
+# 23 "../../include/sys/select.h"
+#define _SYS_SELECT_H 1
+
+
+
+
+
+
+
+# 1 "../../include/bits/select.h" 1
+# 26 "../../include/bits/select.h"
+#define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)
+
+
+
+
+
+
+#define __FD_SET(d,s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
+#define __FD_CLR(d,s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
+#define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)
+# 32 "../../include/sys/select.h" 2
+
+
+# 1 "../../include/bits/sigset.h" 1
+# 21 "../../include/bits/sigset.h"
+#define _SIGSET_H_types 1
+
+typedef int __sig_atomic_t;
+
+
+
+#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
+typedef struct
+  {
+    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+  } __sigset_t;
+# 35 "../../include/sys/select.h" 2
+
+
+#define __sigset_t_defined
+typedef __sigset_t sigset_t;
+
+
+
+#define __need_time_t
+#define __need_timespec
+# 1 "../../include/time.h" 1
+# 68 "../../include/time.h"
+#undef __need_clock_t
+# 84 "../../include/time.h"
+#undef __need_time_t
+# 96 "../../include/time.h"
+#undef __clockid_time_t
+# 108 "../../include/time.h"
+#undef __need_timer_t
+
+
+
+
+
+
+#define __timespec_defined 1
+
+
+
+
+
+struct timespec
+  {
+    __time_t tv_sec;
+    long int tv_nsec;
+  };
+
+
+#undef __need_timespec
+# 45 "../../include/sys/select.h" 2
+#define __need_timeval
+# 1 "../../include/bits/time.h" 1
+# 66 "../../include/bits/time.h"
+#undef __need_timeval
+
+#define _STRUCT_TIMEVAL 1
+
+
+
+
+struct timeval
+  {
+    __time_t tv_sec;
+    __suseconds_t tv_usec;
+  };
+# 47 "../../include/sys/select.h" 2
+# 55 "../../include/sys/select.h"
+typedef long int __fd_mask;
+
+
+#undef __NFDBITS
+#undef __FDELT
+#undef __FDMASK
+
+#define __NFDBITS (8 * sizeof (__fd_mask))
+#define __FDELT(d) ((d) / __NFDBITS)
+#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
+
+
+typedef struct
+  {
+
+
+
+    __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+#define __FDS_BITS(set) ((set)->fds_bits)
+
+
+
+
+  } fd_set;
+
+
+#define FD_SETSIZE __FD_SETSIZE
+
+
+
+typedef __fd_mask fd_mask;
+
+
+#define NFDBITS __NFDBITS
+
+
+
+
+#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
+#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
+#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
+#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
+
+
+
+# 109 "../../include/sys/select.h"
+extern int select (int __nfds, fd_set *__restrict __readfds,
+     fd_set *__restrict __writefds,
+     fd_set *__restrict __exceptfds,
+     struct timeval *__restrict __timeout);
+# 121 "../../include/sys/select.h"
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+      fd_set *__restrict __writefds,
+      fd_set *__restrict __exceptfds,
+      const struct timespec *__restrict __timeout,
+      const __sigset_t *__restrict __sigmask);
+
+
+
+# 217 "../../include/sys/types.h" 2
+
+
+# 1 "../../include/sys/sysmacros.h" 1
+# 21 "../../include/sys/sysmacros.h"
+#define _SYS_SYSMACROS_H 1
+
+
+
+
+
+
+
+__extension__
+static __inline unsigned int gnu_dev_major (unsigned long long int __dev)
+     __attribute__ ((__nothrow__));
+__extension__
+static __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
+     __attribute__ ((__nothrow__));
+__extension__
+static __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
+       unsigned int __minor)
+     __attribute__ ((__nothrow__));
+
+
+__extension__ static __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+
+__extension__ static __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+
+__extension__ static __inline unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+   | (((unsigned long long int) (__minor & ~0xff)) << 12)
+   | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+
+
+
+
+#define major(dev) gnu_dev_major (dev)
+#define minor(dev) gnu_dev_minor (dev)
+#define makedev(maj,min) gnu_dev_makedev (maj, min)
+# 220 "../../include/sys/types.h" 2
+
+
+
+
+typedef __blksize_t blksize_t;
+#define __blksize_t_defined
+
+
+
+
+
+typedef __blkcnt_t blkcnt_t;
+#define __blkcnt_t_defined
+
+
+typedef __fsblkcnt_t fsblkcnt_t;
+#define __fsblkcnt_t_defined
+
+
+typedef __fsfilcnt_t fsfilcnt_t;
+#define __fsfilcnt_t_defined
+# 258 "../../include/sys/types.h"
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+# 269 "../../include/sys/types.h"
+
+# 307 "../../include/stdlib.h" 2
+
+
+
+
+
+
+extern long int random (void) __attribute__ ((__nothrow__));
+
+
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+   size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+  {
+    int32_t *fptr;
+    int32_t *rptr;
+    int32_t *state;
+    int rand_type;
+    int rand_deg;
+    int rand_sep;
+    int32_t *end_ptr;
+  };
+
+extern int random_r (struct random_data *__restrict __buf,
+       int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+   size_t __statelen,
+   struct random_data *__restrict __buf)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+         struct random_data *__restrict __buf)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) __attribute__ ((__nothrow__));
+
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+# 382 "../../include/stdlib.h"
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+  {
+    unsigned short int __x[3];
+    unsigned short int __old_x[3];
+    unsigned short int __c;
+    unsigned short int __init;
+    unsigned long long int __a;
+  };
+
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+        struct drand48_data *__restrict __buffer,
+        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+        struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+        struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+       struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+        struct drand48_data *__buffer)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+#define __malloc_and_calloc_defined
+
+
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+extern void *calloc (size_t __nmemb, size_t __size)
+     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+# 1 "../../include/alloca.h" 1
+# 20 "../../include/alloca.h"
+#define _ALLOCA_H 1
+
+
+
+#define __need_size_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_NULL
+# 26 "../../include/alloca.h" 2
+
+
+
+
+#undef alloca
+
+
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+
+
+#define alloca(size) __builtin_alloca (size)
+
+
+#define __MAX_ALLOCA_CUTOFF 65536
+
+
+# 485 "../../include/stdlib.h" 2
+
+
+
+
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+#define __UCLIBC_MAX_ATEXIT 20
+
+
+
+
+
+
+
+extern int clearenv (void) __attribute__ ((__nothrow__));
+# 579 "../../include/stdlib.h"
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 590 "../../include/stdlib.h"
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
+# 600 "../../include/stdlib.h"
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+# 610 "../../include/stdlib.h"
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+
+
+extern int system (__const char *__command) ;
+
+# 638 "../../include/stdlib.h"
+extern char *realpath (__const char *__restrict __name,
+         char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+#define __COMPAR_FN_T
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+typedef __compar_fn_t comparison_fn_t;
+
+
+
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+        size_t __nmemb, size_t __size, __compar_fn_t __compar)
+     __attribute__ ((__nonnull__ (1, 2, 5))) ;
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+
+
+
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+        long long int __denom)
+     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+# 719 "../../include/stdlib.h"
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+# 756 "../../include/stdlib.h"
+
+
+
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+
+
+extern int mbtowc (wchar_t *__restrict __pwc,
+     __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+
+
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+
+
+
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+   __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+
+extern size_t wcstombs (char *__restrict __s,
+   __const wchar_t *__restrict __pwcs, size_t __n)
+     __attribute__ ((__nothrow__));
+
+# 785 "../../include/stdlib.h"
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 796 "../../include/stdlib.h"
+extern int getsubopt (char **__restrict __optionp,
+        char *__const *__restrict __tokens,
+        char **__restrict __valuep)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
+
+
+
+
+
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int posix_openpt (int __oflag) ;
+
+
+
+
+
+
+
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int getpt (void);
+# 860 "../../include/stdlib.h"
+#undef __need_malloc_and_calloc
+
+
+# 12 "tsp_common.c" 2
+# 1 "../../include/string.h" 1
+# 24 "../../include/string.h"
+#define _STRING_H 1
+
+
+
+
+
+
+#define __need_size_t
+#define __need_NULL
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+# 34 "../../include/string.h" 2
+
+
+
+
+extern void *memcpy (void *__restrict __dest,
+       __const void *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+        int __c, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memchr (__const void *__s, int __c, size_t __n)
+      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern void *rawmemchr (__const void *__s, int __c)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncpy (char *__restrict __dest,
+        __const char *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+        size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcmp (__const char *__s1, __const char *__s2)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcoll (__const char *__s1, __const char *__s2)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strxfrm (char *__restrict __dest,
+         __const char *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+# 130 "../../include/string.h"
+extern char *strdup (__const char *__s)
+     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strndup (__const char *__string, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+#define strdupa(s) (__extension__ ({ __const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))
+# 154 "../../include/string.h"
+#define strndupa(s,n) (__extension__ ({ __const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); }))
+# 165 "../../include/string.h"
+
+
+extern char *strchr (__const char *__s, int __c)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+extern char *strrchr (__const char *__s, int __c)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strchrnul (__const char *__s, int __c)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strcspn (__const char *__s, __const char *__reject)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern size_t strspn (__const char *__s, __const char *__accept)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strpbrk (__const char *__s, __const char *__accept)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strstr (__const char *__haystack, __const char *__needle)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+# 212 "../../include/string.h"
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+         char **__restrict __save_ptr)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+
+
+
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+       __const void *__needle, size_t __needlelen)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+# 238 "../../include/string.h"
+extern void *mempcpy (void *__restrict __dest,
+        __const void *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern size_t strlen (__const char *__s)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+
+# 285 "../../include/string.h"
+extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern char * strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__glibc_strerror_r") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+# 306 "../../include/string.h"
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *index (__const char *__s, int __c)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern char *rindex (__const char *__s, int __c)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 339 "../../include/string.h"
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 352 "../../include/string.h"
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 375 "../../include/string.h"
+extern char *strsep (char **__restrict __stringp,
+       __const char *__restrict __delim)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+# 388 "../../include/string.h"
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+# 405 "../../include/string.h"
+extern char *stpncpy (char *__restrict __dest,
+        __const char *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+# 422 "../../include/string.h"
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern size_t strlcat(char *__restrict dst, const char *__restrict src,
+                      size_t n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlcpy(char *__restrict dst, const char *__restrict src,
+                      size_t n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+# 13 "tsp_common.c" 2
+# 1 "../../include/locale.h" 1
+# 24 "../../include/locale.h"
+#define _LOCALE_H 1
+
+
+
+#define __need_NULL
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+# 30 "../../include/locale.h" 2
+# 1 "../../include/bits/uClibc_locale.h" 1
+# 31 "../../include/bits/uClibc_locale.h"
+#define _UCLIBC_LOCALE_H
+
+
+
+
+
+
+#undef __LOCALE_C_ONLY
+# 52 "../../include/bits/uClibc_locale.h"
+#define __NL_ITEM_CATEGORY_SHIFT (8)
+#define __NL_ITEM_INDEX_MASK (0xff)
+
+
+
+#define __LC_CTYPE 0
+#define __LC_NUMERIC 1
+#define __LC_MONETARY 2
+#define __LC_TIME 3
+#define __LC_COLLATE 4
+#define __LC_MESSAGES 5
+#define __LC_ALL 6
+
+
+
+
+
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 43 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#define _STDDEF_H
+#define _STDDEF_H_
+
+#define _ANSI_STDDEF_H
+
+#define __STDDEF_H__
+# 141 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#define _PTRDIFF_T
+#define _T_PTRDIFF_
+#define _T_PTRDIFF
+#define __PTRDIFF_T
+#define _PTRDIFF_T_
+#define _BSD_PTRDIFF_T_
+#define ___int_ptrdiff_t_h
+#define _GCC_PTRDIFF_T
+
+
+
+typedef int ptrdiff_t;
+# 163 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 70 "../../include/bits/uClibc_locale.h" 2
+# 1 "../../include/stdint.h" 1
+# 24 "../../include/stdint.h"
+#define _STDINT_H 1
+
+
+
+
+
+# 1 "../../include/bits/wordsize.h" 1
+# 19 "../../include/bits/wordsize.h"
+#define __WORDSIZE 32
+# 31 "../../include/stdint.h" 2
+# 51 "../../include/stdint.h"
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+#define __uint32_t_defined
+
+
+
+
+__extension__
+typedef unsigned long long int uint64_t;
+
+
+
+
+
+
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+
+
+
+__extension__
+typedef long long int int_least64_t;
+
+
+
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+
+
+
+__extension__
+typedef unsigned long long int uint_least64_t;
+
+
+
+
+
+
+typedef signed char int_fast8_t;
+
+
+
+
+
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+
+
+
+typedef unsigned char uint_fast8_t;
+
+
+
+
+
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+# 128 "../../include/stdint.h"
+typedef int intptr_t;
+#define __intptr_t_defined
+
+typedef unsigned int uintptr_t;
+# 140 "../../include/stdint.h"
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+# 155 "../../include/stdint.h"
+#define __INT64_C(c) c ## LL
+#define __UINT64_C(c) c ## ULL
+
+
+
+
+
+#define INT8_MIN (-128)
+#define INT16_MIN (-32767-1)
+#define INT32_MIN (-2147483647-1)
+#define INT64_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INT8_MAX (127)
+#define INT16_MAX (32767)
+#define INT32_MAX (2147483647)
+#define INT64_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINT8_MAX (255)
+#define UINT16_MAX (65535)
+#define UINT32_MAX (4294967295U)
+#define UINT64_MAX (__UINT64_C(18446744073709551615))
+
+
+
+#define INT_LEAST8_MIN (-128)
+#define INT_LEAST16_MIN (-32767-1)
+#define INT_LEAST32_MIN (-2147483647-1)
+#define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INT_LEAST8_MAX (127)
+#define INT_LEAST16_MAX (32767)
+#define INT_LEAST32_MAX (2147483647)
+#define INT_LEAST64_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINT_LEAST8_MAX (255)
+#define UINT_LEAST16_MAX (65535)
+#define UINT_LEAST32_MAX (4294967295U)
+#define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))
+
+
+
+#define INT_FAST8_MIN (-128)
+
+
+
+
+#define INT_FAST16_MIN (-2147483647-1)
+#define INT_FAST32_MIN (-2147483647-1)
+
+#define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INT_FAST8_MAX (127)
+
+
+
+
+#define INT_FAST16_MAX (2147483647)
+#define INT_FAST32_MAX (2147483647)
+
+#define INT_FAST64_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINT_FAST8_MAX (255)
+
+
+
+
+#define UINT_FAST16_MAX (4294967295U)
+#define UINT_FAST32_MAX (4294967295U)
+
+#define UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
+# 236 "../../include/stdint.h"
+#define INTPTR_MIN (-2147483647-1)
+#define INTPTR_MAX (2147483647)
+#define UINTPTR_MAX (4294967295U)
+
+
+
+
+#define INTMAX_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INTMAX_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINTMAX_MAX (__UINT64_C(18446744073709551615))
+# 266 "../../include/stdint.h"
+#define PTRDIFF_MIN (-2147483647-1)
+#define PTRDIFF_MAX (2147483647)
+
+
+
+#define SIG_ATOMIC_MIN (-2147483647-1)
+#define SIG_ATOMIC_MAX (2147483647)
+
+
+
+
+
+#define SIZE_MAX (4294967295U)
+
+
+
+
+
+
+#define WCHAR_MIN __WCHAR_MIN
+#define WCHAR_MAX __WCHAR_MAX
+
+
+
+#define WINT_MIN (0u)
+#define WINT_MAX (4294967295u)
+# 302 "../../include/stdint.h"
+#define INT8_C(c) c
+#define INT16_C(c) c
+#define INT32_C(c) c
+
+
+
+#define INT64_C(c) c ## LL
+
+
+
+#define UINT8_C(c) c ## U
+#define UINT16_C(c) c ## U
+#define UINT32_C(c) c ## U
+
+
+
+#define UINT64_C(c) c ## ULL
+
+
+
+
+
+
+
+#define INTMAX_C(c) c ## LL
+#define UINTMAX_C(c) c ## ULL
+# 71 "../../include/bits/uClibc_locale.h" 2
+# 1 "../../include/bits/uClibc_touplow.h" 1
+# 31 "../../include/bits/uClibc_touplow.h"
+#define _UCLIBC_TOUPLOW_H
+
+
+
+
+
+
+typedef __uint16_t __ctype_mask_t;
+
+
+
+typedef __int16_t __ctype_touplow_t;
+#define __UCLIBC_CTYPE_B_TBL_OFFSET 128
+#define __UCLIBC_CTYPE_TO_TBL_OFFSET 128
+# 72 "../../include/bits/uClibc_locale.h" 2
+
+
+# 1 "../../include/bits/uClibc_locale_data.h" 1
+#define __lc_time_data_LEN 25900
+#define __lc_time_rows_LEN 7650
+#define __lc_time_item_offsets_LEN 50
+#define __lc_time_item_idx_LEN 3190
+#define __lc_numeric_data_LEN 22
+#define __lc_numeric_rows_LEN 42
+#define __lc_numeric_item_offsets_LEN 3
+#define __lc_numeric_item_idx_LEN 13
+#define __lc_monetary_data_LEN 1578
+#define __lc_monetary_rows_LEN 3652
+#define __lc_monetary_item_offsets_LEN 22
+#define __lc_monetary_item_idx_LEN 391
+#define __lc_messages_data_LEN 1583
+#define __lc_messages_rows_LEN 312
+#define __lc_messages_item_offsets_LEN 4
+#define __lc_messages_item_idx_LEN 170
+#define __lc_ctype_data_LEN 51
+#define __lc_ctype_rows_LEN 20
+#define __lc_ctype_item_offsets_LEN 10
+#define __lc_ctype_item_idx_LEN 20
+#define __CTYPE_HAS_UTF_8_LOCALES 1
+#define __LOCALE_DATA_CATEGORIES 6
+#define __LOCALE_DATA_WIDTH_LOCALES 9
+#define __LOCALE_DATA_NUM_LOCALES 315
+#define __LOCALE_DATA_NUM_LOCALE_NAMES 167
+#define __LOCALE_DATA_AT_MODIFIERS_LENGTH 18
+#define __lc_names_LEN 69
+#define __lc_collate_data_LEN 91141
+#define __CTYPE_HAS_8_BIT_LOCALES 1
+
+#define __LOCALE_DATA_Cctype_IDX_SHIFT 3
+#define __LOCALE_DATA_Cctype_IDX_LEN 16
+#define __LOCALE_DATA_Cctype_ROW_LEN 4
+#define __LOCALE_DATA_Cctype_PACKED 1
+
+#define __LOCALE_DATA_Cuplow_IDX_SHIFT 3
+#define __LOCALE_DATA_Cuplow_IDX_LEN 16
+#define __LOCALE_DATA_Cuplow_ROW_LEN 8
+
+#define __LOCALE_DATA_Cc2wc_IDX_LEN 16
+#define __LOCALE_DATA_Cc2wc_IDX_SHIFT 3
+#define __LOCALE_DATA_Cc2wc_ROW_LEN 8
+
+typedef struct {
+ unsigned char idx8ctype[16];
+ unsigned char idx8uplow[16];
+ unsigned char idx8c2wc[16];
+ unsigned char idx8wc2c[38];
+} __codeset_8_bit_t;
+
+
+#define __LOCALE_DATA_Cwc2c_DOMAIN_MAX 0x25ff
+#define __LOCALE_DATA_Cwc2c_TI_SHIFT 4
+#define __LOCALE_DATA_Cwc2c_TT_SHIFT 4
+#define __LOCALE_DATA_Cwc2c_II_LEN 38
+#define __LOCALE_DATA_Cwc2c_TI_LEN 1072
+#define __LOCALE_DATA_Cwc2c_TT_LEN 3456
+
+
+#define __LOCALE_DATA_Cwc2c_TBL_LEN 4528
+
+#define __LOCALE_DATA_Cuplow_TBL_LEN 504
+
+
+#define __LOCALE_DATA_Cctype_TBL_LEN 420
+
+
+#define __LOCALE_DATA_Cc2wc_TBL_LEN 1760
+
+
+
+#define __LOCALE_DATA_NUM_CODESETS 23
+#define __LOCALE_DATA_CODESET_LIST "\x18\x22\x31\x38\x3f\x4b\x56\x62" "\x6e\x7a\x86\x92\x9d\xa8\xb3\xbe" "\xc9\xd4\xdf\xea\xf1\xf8\xff" "\0" "ARMSCII-8\0" "ANSI_X3.4-1968\0" "CP1251\0" "CP1255\0" "GEORGIAN-PS\0" "ISO-8859-1\0" "ISO-8859-10\0" "ISO-8859-13\0" "ISO-8859-14\0" "ISO-8859-15\0" "ISO-8859-16\0" "ISO-8859-2\0" "ISO-8859-3\0" "ISO-8859-4\0" "ISO-8859-5\0" "ISO-8859-6\0" "ISO-8859-7\0" "ISO-8859-8\0" "ISO-8859-9\0" "KOI8-R\0" "KOI8-T\0" "KOI8-U\0" "TIS-620\0"
+# 102 "../../include/bits/uClibc_locale_data.h"
+#define __CTYPE_HAS_CODESET_ARMSCII_8
+#define __CTYPE_HAS_CODESET_ANSI_X3 .4_1968
+#define __CTYPE_HAS_CODESET_CP1251
+#define __CTYPE_HAS_CODESET_CP1255
+#define __CTYPE_HAS_CODESET_GEORGIAN_PS
+#define __CTYPE_HAS_CODESET_ISO_8859_1
+#define __CTYPE_HAS_CODESET_ISO_8859_10
+#define __CTYPE_HAS_CODESET_ISO_8859_13
+#define __CTYPE_HAS_CODESET_ISO_8859_14
+#define __CTYPE_HAS_CODESET_ISO_8859_15
+#define __CTYPE_HAS_CODESET_ISO_8859_16
+#define __CTYPE_HAS_CODESET_ISO_8859_2
+#define __CTYPE_HAS_CODESET_ISO_8859_3
+#define __CTYPE_HAS_CODESET_ISO_8859_4
+#define __CTYPE_HAS_CODESET_ISO_8859_5
+#define __CTYPE_HAS_CODESET_ISO_8859_6
+#define __CTYPE_HAS_CODESET_ISO_8859_7
+#define __CTYPE_HAS_CODESET_ISO_8859_8
+#define __CTYPE_HAS_CODESET_ISO_8859_9
+#define __CTYPE_HAS_CODESET_KOI8_R
+#define __CTYPE_HAS_CODESET_KOI8_T
+#define __CTYPE_HAS_CODESET_KOI8_U
+#define __CTYPE_HAS_CODESET_TIS_620
+#define __CTYPE_HAS_CODESET_UTF_8
+#define __LOCALE_DATA_WC_TABLE_DOMAIN_MAX 0x2ffff
+
+#define __LOCALE_DATA_WCctype_II_LEN 768
+#define __LOCALE_DATA_WCctype_TI_LEN 1888
+#define __LOCALE_DATA_WCctype_UT_LEN 948
+#define __LOCALE_DATA_WCctype_II_SHIFT 5
+#define __LOCALE_DATA_WCctype_TI_SHIFT 3
+
+
+#define __LOCALE_DATA_WCuplow_II_LEN 384
+#define __LOCALE_DATA_WCuplow_TI_LEN 576
+#define __LOCALE_DATA_WCuplow_UT_LEN 720
+#define __LOCALE_DATA_WCuplow_II_SHIFT 6
+#define __LOCALE_DATA_WCuplow_TI_SHIFT 3
+
+
+#define __LOCALE_DATA_WCuplow_diffs 98
+
+
+
+
+
+
+
+#define __WCHAR_ENABLED
+
+
+
+
+#define __LOCALE_DATA_WCctype_TBL_LEN (__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + __LOCALE_DATA_WCctype_UT_LEN)
+#define __LOCALE_DATA_WCuplow_TBL_LEN (__LOCALE_DATA_WCuplow_II_LEN + __LOCALE_DATA_WCuplow_TI_LEN + __LOCALE_DATA_WCuplow_UT_LEN)
+#define __LOCALE_DATA_WCuplow_diff_TBL_LEN (2 * __LOCALE_DATA_WCuplow_diffs)
+
+
+
+#undef __PASTE2
+#define __PASTE2(A,B) A ## B
+#undef __PASTE3
+#define __PASTE3(A,B,C) A ## B ## C
+
+#define __LOCALE_DATA_COMMON_MMAP(X) unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)];
+
+
+#define __LOCALE_DATA_COMMON_MMIDX(X) unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)];
+
+
+
+
+
+typedef struct {
+
+
+
+
+
+ const unsigned char tbl8ctype[420];
+    const unsigned char tbl8uplow[504];
+
+ const uint16_t tbl8c2wc[1760];
+ const unsigned char tbl8wc2c[4528];
+
+
+
+
+ const unsigned char tblwctype[(768 + 1888 + 948)];
+ const unsigned char tblwuplow[(384 + 576 + 720)];
+ const int16_t tblwuplow_diff[(2 * 98)];
+
+
+
+
+ unsigned char lc_ctype_data[51];;
+ unsigned char lc_numeric_data[22];;
+ unsigned char lc_monetary_data[1578];;
+ unsigned char lc_time_data[25900];;
+
+ unsigned char lc_messages_data[1583];;
+
+
+
+ const __codeset_8_bit_t codeset_8_bit[23];
+
+
+ unsigned char lc_ctype_rows[20]; uint16_t lc_ctype_item_offsets[10]; uint16_t lc_ctype_item_idx[20];;
+ unsigned char lc_numeric_rows[42]; uint16_t lc_numeric_item_offsets[3]; uint16_t lc_numeric_item_idx[13];;
+ unsigned char lc_monetary_rows[3652]; uint16_t lc_monetary_item_offsets[22]; uint16_t lc_monetary_item_idx[391];;
+ unsigned char lc_time_rows[7650]; uint16_t lc_time_item_offsets[50]; uint16_t lc_time_item_idx[3190];;
+
+ unsigned char lc_messages_rows[312]; uint16_t lc_messages_item_offsets[4]; uint16_t lc_messages_item_idx[170];;
+
+ const uint16_t collate_data[91141];
+
+ unsigned char lc_common_item_offsets_LEN[6];
+    size_t lc_common_tbl_offsets[6 * 4];
+
+
+
+
+ unsigned char locales[315 * 9];
+ unsigned char locale_names5[5*167];
+ unsigned char locale_at_modifiers[18];
+
+
+ unsigned char lc_names[69];
+
+ unsigned char codeset_list[sizeof("\x18\x22\x31\x38\x3f\x4b\x56\x62" "\x6e\x7a\x86\x92\x9d\xa8\xb3\xbe" "\xc9\xd4\xdf\xea\xf1\xf8\xff" "\0" "ARMSCII-8\0" "ANSI_X3.4-1968\0" "CP1251\0" "CP1255\0" "GEORGIAN-PS\0" "ISO-8859-1\0" "ISO-8859-10\0" "ISO-8859-13\0" "ISO-8859-14\0" "ISO-8859-15\0" "ISO-8859-16\0" "ISO-8859-2\0" "ISO-8859-3\0" "ISO-8859-4\0" "ISO-8859-5\0" "ISO-8859-6\0" "ISO-8859-7\0" "ISO-8859-8\0" "ISO-8859-9\0" "KOI8-R\0" "KOI8-T\0" "KOI8-U\0" "TIS-620\0")];
+
+
+
+} __locale_mmap_t;
+
+extern const __locale_mmap_t *__locale_mmap;
+# 75 "../../include/bits/uClibc_locale.h" 2
+
+
+
+
+
+
+enum {
+ __ctype_encoding_7_bit,
+ __ctype_encoding_utf8,
+ __ctype_encoding_8_bit
+};
+
+#define LOCALE_STRING_SIZE (2 * __LC_ALL + 2)
+# 102 "../../include/bits/uClibc_locale.h"
+typedef struct {
+ uint16_t num_weights;
+ uint16_t num_starters;
+ uint16_t ii_shift;
+ uint16_t ti_shift;
+ uint16_t ii_len;
+ uint16_t ti_len;
+ uint16_t max_weight;
+ uint16_t num_col_base;
+ uint16_t max_col_index;
+ uint16_t undefined_idx;
+ uint16_t range_low;
+ uint16_t range_count;
+ uint16_t range_base_weight;
+ uint16_t range_rule_offset;
+
+ uint16_t ii_mask;
+ uint16_t ti_mask;
+
+ const uint16_t *index2weight_tbl;
+ const uint16_t *index2ruleidx_tbl;
+ const uint16_t *multistart_tbl;
+
+
+ const uint16_t *wcs2colidt_tbl;
+
+
+ const uint16_t *overrides_tbl;
+
+
+ const uint16_t *weightstr;
+ const uint16_t *ruletable;
+
+
+ uint16_t *index2weight;
+ uint16_t *index2ruleidx;
+
+ uint16_t MAX_WEIGHTS;
+} __collate_t;
+
+
+
+
+typedef struct __uclibc_locale_struct {
+
+
+
+
+
+
+
+ __ctype_mask_t __ctype_b_data[256 + 128];
+ __ctype_touplow_t __ctype_tolower_data[256 + 128];
+ __ctype_touplow_t __ctype_toupper_data[256 + 128];
+
+
+
+ unsigned char cur_locale[(2 * 6 + 2)];
+
+
+
+
+
+ uint16_t category_offsets[6];
+ unsigned char category_item_count[6];
+
+
+ unsigned char encoding;
+ unsigned char mb_cur_max;
+ const unsigned char outdigit_length[10];
+
+
+ const unsigned char *idx8ctype;
+ const unsigned char *tbl8ctype;
+ const unsigned char *idx8uplow;
+    const unsigned char *tbl8uplow;
+
+ const unsigned char *idx8c2wc;
+ const uint16_t *tbl8c2wc;
+ const unsigned char *idx8wc2c;
+ const unsigned char *tbl8wc2c;
+
+
+
+
+
+ const uint16_t *code2flag;
+
+ const unsigned char *tblwctype;
+ const unsigned char *tblwuplow;
+
+ const int16_t *tblwuplow_diff;
+
+
+ wchar_t decimal_point_wc;
+ wchar_t thousands_sep_wc;
+ int decimal_point_len;
+ int thousands_sep_len;
+
+
+
+
+ const char *outdigit0_mb;
+ const char *outdigit1_mb;
+ const char *outdigit2_mb;
+ const char *outdigit3_mb;
+ const char *outdigit4_mb;
+ const char *outdigit5_mb;
+ const char *outdigit6_mb;
+ const char *outdigit7_mb;
+ const char *outdigit8_mb;
+ const char *outdigit9_mb;
+ const char *codeset;
+
+
+ const char *decimal_point;
+ const char *thousands_sep;
+ const char *grouping;
+
+
+ const char *int_curr_symbol;
+ const char *currency_symbol;
+ const char *mon_decimal_point;
+ const char *mon_thousands_sep;
+ const char *mon_grouping;
+ const char *positive_sign;
+ const char *negative_sign;
+ const char *int_frac_digits;
+ const char *frac_digits;
+ const char *p_cs_precedes;
+ const char *p_sep_by_space;
+ const char *n_cs_precedes;
+ const char *n_sep_by_space;
+ const char *p_sign_posn;
+ const char *n_sign_posn;
+ const char *int_p_cs_precedes;
+ const char *int_p_sep_by_space;
+ const char *int_n_cs_precedes;
+ const char *int_n_sep_by_space;
+ const char *int_p_sign_posn;
+ const char *int_n_sign_posn;
+
+ const char *crncystr;
+
+
+ const char *abday_1;
+ const char *abday_2;
+ const char *abday_3;
+ const char *abday_4;
+ const char *abday_5;
+ const char *abday_6;
+ const char *abday_7;
+
+ const char *day_1;
+ const char *day_2;
+ const char *day_3;
+ const char *day_4;
+ const char *day_5;
+ const char *day_6;
+ const char *day_7;
+
+ const char *abmon_1;
+ const char *abmon_2;
+ const char *abmon_3;
+ const char *abmon_4;
+ const char *abmon_5;
+ const char *abmon_6;
+ const char *abmon_7;
+ const char *abmon_8;
+ const char *abmon_9;
+ const char *abmon_10;
+ const char *abmon_11;
+ const char *abmon_12;
+
+ const char *mon_1;
+ const char *mon_2;
+ const char *mon_3;
+ const char *mon_4;
+ const char *mon_5;
+ const char *mon_6;
+ const char *mon_7;
+ const char *mon_8;
+ const char *mon_9;
+ const char *mon_10;
+ const char *mon_11;
+ const char *mon_12;
+
+ const char *am_str;
+ const char *pm_str;
+
+ const char *d_t_fmt;
+ const char *d_fmt;
+ const char *t_fmt;
+ const char *t_fmt_ampm;
+ const char *era;
+
+ const char *era_year;
+ const char *era_d_fmt;
+ const char *alt_digits;
+ const char *era_d_t_fmt;
+ const char *era_t_fmt;
+
+
+
+
+ const char *yesexpr;
+ const char *noexpr;
+ const char *yesstr;
+ const char *nostr;
+
+
+ __collate_t collate;
+
+} __uclibc_locale_t;
+
+extern __uclibc_locale_t __global_locale_data;
+extern struct __uclibc_locale_struct * __global_locale;
+
+
+typedef struct __uclibc_locale_struct *__locale_t;
+
+
+
+extern int __locale_mbrtowc_l(wchar_t *__restrict dst,
+         const char *__restrict src,
+         __locale_t loc ) __attribute__ ((visibility ("hidden")));
+# 355 "../../include/bits/uClibc_locale.h"
+#define __UCLIBC_CURLOCALE (__global_locale)
+#define __UCLIBC_CURLOCALE_DATA (*__global_locale)
+# 369 "../../include/bits/uClibc_locale.h"
+#define __XL_NPP(N) N
+#define __LOCALE_PARAM
+#define __LOCALE_ARG
+#define __LOCALE_PTR __UCLIBC_CURLOCALE
+# 31 "../../include/locale.h" 2
+
+
+
+
+
+#define LC_CTYPE __LC_CTYPE
+#define LC_NUMERIC __LC_NUMERIC
+#define LC_TIME __LC_TIME
+#define LC_COLLATE __LC_COLLATE
+#define LC_MONETARY __LC_MONETARY
+#define LC_MESSAGES __LC_MESSAGES
+# 50 "../../include/locale.h"
+#define LC_ALL __LC_ALL
+
+
+
+struct lconv
+{
+
+
+  char *decimal_point;
+  char *thousands_sep;
+
+
+
+
+
+  char *grouping;
+
+
+
+
+
+  char *int_curr_symbol;
+  char *currency_symbol;
+  char *mon_decimal_point;
+  char *mon_thousands_sep;
+  char *mon_grouping;
+  char *positive_sign;
+  char *negative_sign;
+  char int_frac_digits;
+  char frac_digits;
+
+  char p_cs_precedes;
+
+  char p_sep_by_space;
+
+  char n_cs_precedes;
+
+  char n_sep_by_space;
+
+
+
+
+
+
+  char p_sign_posn;
+  char n_sign_posn;
+
+
+  char int_p_cs_precedes;
+
+  char int_p_sep_by_space;
+
+  char int_n_cs_precedes;
+
+  char int_n_sep_by_space;
+
+
+
+
+
+
+  char int_p_sign_posn;
+  char int_n_sign_posn;
+# 121 "../../include/locale.h"
+};
+
+
+
+
+
+extern char *setlocale (int __category, __const char *__locale) __attribute__ ((__nothrow__));
+
+
+extern struct lconv *localeconv (void) __attribute__ ((__nothrow__));
+
+
+# 152 "../../include/locale.h"
+typedef __locale_t locale_t;
+
+
+
+
+
+extern __locale_t newlocale (int __category_mask, __const char *__locale,
+        __locale_t __base) __attribute__ ((__nothrow__));
+
+
+
+
+
+#define LC_CTYPE_MASK (1 << __LC_CTYPE)
+#define LC_NUMERIC_MASK (1 << __LC_NUMERIC)
+#define LC_TIME_MASK (1 << __LC_TIME)
+#define LC_COLLATE_MASK (1 << __LC_COLLATE)
+#define LC_MONETARY_MASK (1 << __LC_MONETARY)
+#define LC_MESSAGES_MASK (1 << __LC_MESSAGES)
+# 195 "../../include/locale.h"
+#define LC_ALL_MASK (LC_CTYPE_MASK | LC_NUMERIC_MASK | LC_TIME_MASK | LC_COLLATE_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK )
+# 206 "../../include/locale.h"
+extern __locale_t duplocale (__locale_t __dataset) __attribute__ ((__nothrow__));
+
+
+
+extern void freelocale (__locale_t __dataset) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern __locale_t uselocale (__locale_t __dataset) __attribute__ ((__nothrow__));
+
+
+
+#define LC_GLOBAL_LOCALE ((__locale_t) -1L)
+
+
+
+
+# 14 "tsp_common.c" 2
+# 1 "../../include/errno.h" 1
+# 28 "../../include/errno.h"
+#define _ERRNO_H 1
+
+
+
+
+
+
+
+# 1 "../../include/bits/errno.h" 1
+# 22 "../../include/bits/errno.h"
+# 1 "../../include/bits/errno_values.h" 1
+
+#define _BITS_ERRNO_VALUES_H
+# 12 "../../include/bits/errno_values.h"
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define ENOTBLK 15
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define ETXTBSY 26
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#define EDEADLK 35
+#define ENAMETOOLONG 36
+#define ENOLCK 37
+#define ENOSYS 38
+#define ENOTEMPTY 39
+#define ELOOP 40
+#define EWOULDBLOCK EAGAIN
+#define ENOMSG 42
+#define EIDRM 43
+#define ECHRNG 44
+#define EL2NSYNC 45
+#define EL3HLT 46
+#define EL3RST 47
+#define ELNRNG 48
+#define EUNATCH 49
+#define ENOCSI 50
+#define EL2HLT 51
+#define EBADE 52
+#define EBADR 53
+#define EXFULL 54
+#define ENOANO 55
+#define EBADRQC 56
+#define EBADSLT 57
+#define EDEADLOCK EDEADLK
+#define EBFONT 59
+#define ENOSTR 60
+#define ENODATA 61
+#define ETIME 62
+#define ENOSR 63
+#define ENONET 64
+#define ENOPKG 65
+#define EREMOTE 66
+#define ENOLINK 67
+#define EADV 68
+#define ESRMNT 69
+#define ECOMM 70
+#define EPROTO 71
+#define EMULTIHOP 72
+#define EDOTDOT 73
+#define EBADMSG 74
+#define EOVERFLOW 75
+#define ENOTUNIQ 76
+#define EBADFD 77
+#define EREMCHG 78
+#define ELIBACC 79
+#define ELIBBAD 80
+#define ELIBSCN 81
+#define ELIBMAX 82
+#define ELIBEXEC 83
+#define EILSEQ 84
+#define ERESTART 85
+#define ESTRPIPE 86
+#define EUSERS 87
+#define ENOTSOCK 88
+#define EDESTADDRREQ 89
+#define EMSGSIZE 90
+#define EPROTOTYPE 91
+#define ENOPROTOOPT 92
+#define EPROTONOSUPPORT 93
+#define ESOCKTNOSUPPORT 94
+#define EOPNOTSUPP 95
+#define EPFNOSUPPORT 96
+#define EAFNOSUPPORT 97
+#define EADDRINUSE 98
+#define EADDRNOTAVAIL 99
+#define ENETDOWN 100
+#define ENETUNREACH 101
+#define ENETRESET 102
+#define ECONNABORTED 103
+#define ECONNRESET 104
+#define ENOBUFS 105
+#define EISCONN 106
+#define ENOTCONN 107
+#define ESHUTDOWN 108
+#define ETOOMANYREFS 109
+#define ETIMEDOUT 110
+#define ECONNREFUSED 111
+#define EHOSTDOWN 112
+#define EHOSTUNREACH 113
+#define EALREADY 114
+#define EINPROGRESS 115
+#define ESTALE 116
+#define EUCLEAN 117
+#define ENOTNAM 118
+#define ENAVAIL 119
+#define EISNAM 120
+#define EREMOTEIO 121
+#define EDQUOT 122
+#define ENOMEDIUM 123
+#define EMEDIUMTYPE 124
+# 23 "../../include/bits/errno.h" 2
+
+
+#define ENOTSUP EOPNOTSUPP
+
+
+
+#define ECANCELED 125
+
+
+
+
+
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+#define errno (*__errno_location ())
+# 37 "../../include/errno.h" 2
+#undef __need_Emath
+# 59 "../../include/errno.h"
+
+
+
+
+#undef errno
+
+#define errno __libc_errno
+
+
+
+extern __thread int __libc_errno __attribute__ ((tls_model ("initial-exec")));
+
+
+
+
+#define __set_errno(val) (errno = (val))
+
+
+
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 89 "../../include/errno.h"
+typedef int error_t;
+#define __error_t_defined 1
+
+#undef __need_error_t
+# 15 "tsp_common.c" 2
+# 1 "../../include/signal.h" 1
+# 26 "../../include/signal.h"
+#define _SIGNAL_H
+
+
+
+
+
+
+# 1 "../../include/bits/sigset.h" 1
+# 43 "../../include/bits/sigset.h"
+#define _SIGSET_H_fns 1
+
+
+#define _EXTERN_INLINE extern __inline
+
+
+
+#define __sigmask(sig) (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
+
+
+
+#define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
+
+
+#define __sigemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = 0; 0; }))
+
+
+
+
+#define __sigfillset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; 0; }))
+# 72 "../../include/bits/sigset.h"
+#define __sigisemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; const sigset_t *__set = (set); int __ret = __set->__val[--__cnt]; while (!__ret && --__cnt >= 0) __ret = __set->__val[__cnt]; __ret == 0; }))
+
+
+
+
+
+
+#define __sigandset(dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] & __right->__val[__cnt]); 0; }))
+# 88 "../../include/bits/sigset.h"
+#define __sigorset(dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] | __right->__val[__cnt]); 0; }))
+# 103 "../../include/bits/sigset.h"
+extern int __sigismember (__const __sigset_t *, int);
+extern int __sigaddset (__sigset_t *, int);
+extern int __sigdelset (__sigset_t *, int);
+# 34 "../../include/signal.h" 2
+
+
+
+
+
+#define __sig_atomic_t_defined
+
+typedef __sig_atomic_t sig_atomic_t;
+
+
+#undef __need_sig_atomic_t
+
+
+
+
+
+
+
+#undef __need_sigset_t
+
+
+
+
+
+# 1 "../../include/bits/signum.h" 1
+# 23 "../../include/bits/signum.h"
+#define SIG_ERR ((__sighandler_t) -1)
+#define SIG_DFL ((__sighandler_t) 0)
+#define SIG_IGN ((__sighandler_t) 1)
+
+
+#define SIG_HOLD ((__sighandler_t) 2)
+
+
+
+
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCLD SIGCHLD
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGPOLL SIGIO
+#define SIGIO 29
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+
+#define _NSIG 64
+
+
+#define SIGRTMIN (__libc_current_sigrtmin ())
+#define SIGRTMAX (__libc_current_sigrtmax ())
+
+
+
+#define __SIGRTMIN 32
+#define __SIGRTMAX (_NSIG - 1)
+# 59 "../../include/signal.h" 2
+# 75 "../../include/signal.h"
+typedef void (*__sighandler_t) (int);
+
+
+
+
+extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
+     __attribute__ ((__nothrow__));
+
+extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
+     __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern __sighandler_t signal (int __sig, __sighandler_t __handler)
+     __attribute__ ((__nothrow__));
+# 104 "../../include/signal.h"
+
+
+
+
+
+extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
+     __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+extern int raise (int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
+     __attribute__ ((__nothrow__));
+extern int gsignal (int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+extern void psignal (int __sig, __const char *__s);
+# 153 "../../include/signal.h"
+extern int __sigpause (int __sig_or_mask, int __is_sig);
+# 163 "../../include/signal.h"
+#define sigpause(sig) __sigpause ((sig), 1)
+# 175 "../../include/signal.h"
+#define sigmask(sig) __sigmask(sig)
+
+
+extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+
+
+#define NSIG _NSIG
+
+
+
+typedef __sighandler_t sighandler_t;
+
+
+
+
+typedef __sighandler_t sig_t;
+
+
+
+
+
+
+#define __need_timespec
+# 1 "../../include/time.h" 1
+# 68 "../../include/time.h"
+#undef __need_clock_t
+# 84 "../../include/time.h"
+#undef __need_time_t
+# 96 "../../include/time.h"
+#undef __clockid_time_t
+# 108 "../../include/time.h"
+#undef __need_timer_t
+# 128 "../../include/time.h"
+#undef __need_timespec
+# 207 "../../include/signal.h" 2
+
+
+# 1 "../../include/bits/siginfo.h" 1
+# 25 "../../include/bits/siginfo.h"
+# 1 "../../include/bits/wordsize.h" 1
+# 19 "../../include/bits/wordsize.h"
+#define __WORDSIZE 32
+# 26 "../../include/bits/siginfo.h" 2
+
+
+
+
+#define __have_sigval_t 1
+
+
+typedef union sigval
+  {
+    int sival_int;
+    void *sival_ptr;
+  } sigval_t;
+
+
+
+
+#define __have_siginfo_t 1
+
+#define __SI_MAX_SIZE 128
+
+
+
+#define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
+
+
+typedef struct siginfo
+  {
+    int si_signo;
+    int si_errno;
+
+    int si_code;
+
+    union
+      {
+ int _pad[((128 / sizeof (int)) - 3)];
+
+
+ struct
+   {
+     __pid_t si_pid;
+     __uid_t si_uid;
+   } _kill;
+
+
+ struct
+   {
+     unsigned int _timer1;
+     unsigned int _timer2;
+   } _timer;
+
+
+ struct
+   {
+     __pid_t si_pid;
+     __uid_t si_uid;
+     sigval_t si_sigval;
+   } _rt;
+
+
+ struct
+   {
+     __pid_t si_pid;
+     __uid_t si_uid;
+     int si_status;
+     __clock_t si_utime;
+     __clock_t si_stime;
+   } _sigchld;
+
+
+ struct
+   {
+     void *si_addr;
+   } _sigfault;
+
+
+ struct
+   {
+     long int si_band;
+     int si_fd;
+   } _sigpoll;
+      } _sifields;
+  } siginfo_t;
+
+
+
+#define si_pid _sifields._kill.si_pid
+#define si_uid _sifields._kill.si_uid
+#define si_timer1 _sifields._timer._timer1
+#define si_timer2 _sifields._timer._timer2
+#define si_status _sifields._sigchld.si_status
+#define si_utime _sifields._sigchld.si_utime
+#define si_stime _sifields._sigchld.si_stime
+#define si_value _sifields._rt.si_sigval
+#define si_int _sifields._rt.si_sigval.sival_int
+#define si_ptr _sifields._rt.si_sigval.sival_ptr
+#define si_addr _sifields._sigfault.si_addr
+#define si_band _sifields._sigpoll.si_band
+#define si_fd _sifields._sigpoll.si_fd
+
+
+
+
+enum
+{
+  SI_ASYNCNL = -60,
+#define SI_ASYNCNL SI_ASYNCNL
+  SI_TKILL = -6,
+#define SI_TKILL SI_TKILL
+  SI_SIGIO,
+#define SI_SIGIO SI_SIGIO
+  SI_ASYNCIO,
+#define SI_ASYNCIO SI_ASYNCIO
+  SI_MESGQ,
+#define SI_MESGQ SI_MESGQ
+  SI_TIMER,
+#define SI_TIMER SI_TIMER
+  SI_QUEUE,
+#define SI_QUEUE SI_QUEUE
+  SI_USER,
+#define SI_USER SI_USER
+  SI_KERNEL = 0x80
+#define SI_KERNEL SI_KERNEL
+};
+
+
+
+enum
+{
+  ILL_ILLOPC = 1,
+#define ILL_ILLOPC ILL_ILLOPC
+  ILL_ILLOPN,
+#define ILL_ILLOPN ILL_ILLOPN
+  ILL_ILLADR,
+#define ILL_ILLADR ILL_ILLADR
+  ILL_ILLTRP,
+#define ILL_ILLTRP ILL_ILLTRP
+  ILL_PRVOPC,
+#define ILL_PRVOPC ILL_PRVOPC
+  ILL_PRVREG,
+#define ILL_PRVREG ILL_PRVREG
+  ILL_COPROC,
+#define ILL_COPROC ILL_COPROC
+  ILL_BADSTK
+#define ILL_BADSTK ILL_BADSTK
+};
+
+
+enum
+{
+  FPE_INTDIV = 1,
+#define FPE_INTDIV FPE_INTDIV
+  FPE_INTOVF,
+#define FPE_INTOVF FPE_INTOVF
+  FPE_FLTDIV,
+#define FPE_FLTDIV FPE_FLTDIV
+  FPE_FLTOVF,
+#define FPE_FLTOVF FPE_FLTOVF
+  FPE_FLTUND,
+#define FPE_FLTUND FPE_FLTUND
+  FPE_FLTRES,
+#define FPE_FLTRES FPE_FLTRES
+  FPE_FLTINV,
+#define FPE_FLTINV FPE_FLTINV
+  FPE_FLTSUB
+#define FPE_FLTSUB FPE_FLTSUB
+};
+
+
+enum
+{
+  SEGV_MAPERR = 1,
+#define SEGV_MAPERR SEGV_MAPERR
+  SEGV_ACCERR
+#define SEGV_ACCERR SEGV_ACCERR
+};
+
+
+enum
+{
+  BUS_ADRALN = 1,
+#define BUS_ADRALN BUS_ADRALN
+  BUS_ADRERR,
+#define BUS_ADRERR BUS_ADRERR
+  BUS_OBJERR
+#define BUS_OBJERR BUS_OBJERR
+};
+
+
+enum
+{
+  TRAP_BRKPT = 1,
+#define TRAP_BRKPT TRAP_BRKPT
+  TRAP_TRACE
+#define TRAP_TRACE TRAP_TRACE
+};
+
+
+enum
+{
+  CLD_EXITED = 1,
+#define CLD_EXITED CLD_EXITED
+  CLD_KILLED,
+#define CLD_KILLED CLD_KILLED
+  CLD_DUMPED,
+#define CLD_DUMPED CLD_DUMPED
+  CLD_TRAPPED,
+#define CLD_TRAPPED CLD_TRAPPED
+  CLD_STOPPED,
+#define CLD_STOPPED CLD_STOPPED
+  CLD_CONTINUED
+#define CLD_CONTINUED CLD_CONTINUED
+};
+
+
+enum
+{
+  POLL_IN = 1,
+#define POLL_IN POLL_IN
+  POLL_OUT,
+#define POLL_OUT POLL_OUT
+  POLL_MSG,
+#define POLL_MSG POLL_MSG
+  POLL_ERR,
+#define POLL_ERR POLL_ERR
+  POLL_PRI,
+#define POLL_PRI POLL_PRI
+  POLL_HUP
+#define POLL_HUP POLL_HUP
+};
+
+#undef __need_siginfo_t
+
+
+
+
+
+#define __have_sigevent_t 1
+
+
+#define __SIGEV_MAX_SIZE 64
+
+
+
+#define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+
+
+
+struct __pthread_attr_s;
+
+typedef struct sigevent
+  {
+    sigval_t sigev_value;
+    int sigev_signo;
+    int sigev_notify;
+
+    union
+      {
+ int _pad[((64 / sizeof (int)) - 3)];
+
+ struct
+   {
+     void (*_function) (sigval_t);
+     struct __pthread_attr_s *_attribute;
+   } _sigev_thread;
+      } _sigev_un;
+  } sigevent_t;
+
+
+#define sigev_notify_function _sigev_un._sigev_thread._function
+#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+
+
+enum
+{
+  SIGEV_SIGNAL = 0,
+#define SIGEV_SIGNAL SIGEV_SIGNAL
+  SIGEV_NONE,
+#define SIGEV_NONE SIGEV_NONE
+  SIGEV_THREAD,
+#define SIGEV_THREAD SIGEV_THREAD
+
+  SIGEV_THREAD_ID = 4
+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+};
+# 210 "../../include/signal.h" 2
+
+
+
+extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigismember (__const sigset_t *__set, int __signo)
+     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int sigisemptyset (__const sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigandset (sigset_t *__set, __const sigset_t *__left,
+        __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+extern int sigorset (sigset_t *__set, __const sigset_t *__left,
+       __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+
+
+# 1 "../../include/bits/sigaction.h" 1
+# 25 "../../include/bits/sigaction.h"
+struct sigaction
+  {
+
+
+    union
+      {
+
+ __sighandler_t sa_handler;
+
+ void (*sa_sigaction) (int, siginfo_t *, void *);
+      }
+    __sigaction_handler;
+#define sa_handler __sigaction_handler.sa_handler
+#define sa_sigaction __sigaction_handler.sa_sigaction
+
+
+
+
+
+    __sigset_t sa_mask;
+
+
+    int sa_flags;
+
+
+    void (*sa_restorer) (void);
+  };
+
+
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+
+
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+
+#define SA_RESETHAND 0x80000000
+
+
+#define SA_INTERRUPT 0x20000000
+
+
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#define SA_STACK SA_ONSTACK
+
+
+
+#define SIG_BLOCK 0
+#define SIG_UNBLOCK 1
+#define SIG_SETMASK 2
+# 244 "../../include/signal.h" 2
+
+
+extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
+   sigset_t *__restrict __oset) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
+        struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));
+
+
+extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+     __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int sigwaitinfo (__const sigset_t *__restrict __set,
+   siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sigtimedwait (__const sigset_t *__restrict __set,
+    siginfo_t *__restrict __info,
+    __const struct timespec *__restrict __timeout)
+     __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
+     __attribute__ ((__nothrow__));
+# 307 "../../include/signal.h"
+struct sigvec
+  {
+    __sighandler_t sv_handler;
+    int sv_mask;
+
+    int sv_flags;
+#define sv_onstack sv_flags
+  };
+
+
+#define SV_ONSTACK (1 << 0)
+#define SV_INTERRUPT (1 << 1)
+#define SV_RESETHAND (1 << 2)
+
+
+
+
+
+
+
+extern int sigvec (int __sig, __const struct sigvec *__vec,
+     struct sigvec *__ovec) __attribute__ ((__nothrow__));
+
+
+
+# 1 "../../include/bits/sigcontext.h" 1
+# 26 "../../include/bits/sigcontext.h"
+#define sigcontext_struct sigcontext
+
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include/asm/sigcontext.h" 1
+
+#define __ASM_SH_SIGCONTEXT_H
+
+struct sigcontext {
+ unsigned long oldmask;
+
+
+ unsigned long sc_regs[16];
+ unsigned long sc_pc;
+ unsigned long sc_pr;
+ unsigned long sc_sr;
+ unsigned long sc_gbr;
+ unsigned long sc_mach;
+ unsigned long sc_macl;
+
+
+
+ unsigned long sc_fpregs[16];
+ unsigned long sc_xfpregs[16];
+ unsigned int sc_fpscr;
+ unsigned int sc_fpul;
+ unsigned int sc_ownedfp;
+
+};
+# 29 "../../include/bits/sigcontext.h" 2
+# 333 "../../include/signal.h" 2
+
+
+extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
+# 345 "../../include/signal.h"
+extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));
+
+# 1 "../../include/bits/sigstack.h" 1
+# 26 "../../include/bits/sigstack.h"
+struct sigstack
+  {
+    void *ss_sp;
+    int ss_onstack;
+  };
+
+
+
+enum
+{
+  SS_ONSTACK = 1,
+#define SS_ONSTACK SS_ONSTACK
+  SS_DISABLE
+#define SS_DISABLE SS_DISABLE
+};
+
+
+#define MINSIGSTKSZ 2048
+
+
+#define SIGSTKSZ 8192
+
+
+
+typedef struct sigaltstack
+  {
+    void *ss_sp;
+    int ss_flags;
+    size_t ss_size;
+  } stack_t;
+# 348 "../../include/signal.h" 2
+
+
+# 1 "../../include/ucontext.h" 1
+# 20 "../../include/ucontext.h"
+#define _UCONTEXT_H 1
+
+
+
+
+# 1 "../../include/sys/ucontext.h" 1
+# 22 "../../include/sys/ucontext.h"
+#define _SYS_UCONTEXT_H 1
+
+
+# 1 "../../include/signal.h" 1
+# 26 "../../include/sys/ucontext.h" 2
+
+
+
+# 1 "../../include/bits/sigcontext.h" 1
+# 30 "../../include/sys/ucontext.h" 2
+
+
+typedef int greg_t;
+
+
+#define NFPREG 16
+
+
+typedef greg_t gregset_t[16];
+
+
+
+enum
+{
+  R0 = 0,
+#define R0 R0
+  R1 = 1,
+#define R1 R1
+  R2 = 2,
+#define R2 R2
+  R3 = 3,
+#define R3 R3
+  R4 = 4,
+#define R4 R4
+  R5 = 5,
+#define R5 R5
+  R6 = 6,
+#define R6 R6
+  R7 = 7,
+#define R7 R7
+  R8 = 8,
+#define R8 R8
+  R9 = 9,
+#define R9 R9
+  R10 = 10,
+#define R10 R10
+  R11 = 11,
+#define R11 R11
+  R12 = 12,
+#define R12 R12
+  R13 = 13,
+#define R13 R13
+  R14 = 14,
+#define R14 R14
+  R15 = 15,
+#define R15 R15
+};
+
+
+typedef int freg_t;
+
+
+#define NFPREG 16
+
+
+typedef freg_t fpregset_t[16];
+
+
+typedef struct
+  {
+    unsigned int oldmask;
+
+
+    gregset_t gregs;
+    unsigned int pc;
+    unsigned int pr;
+    unsigned int sr;
+    unsigned int gbr;
+    unsigned int mach;
+    unsigned int macl;
+
+
+
+    fpregset_t fpregs;
+    fpregset_t xfpregs;
+    unsigned int fpscr;
+    unsigned int fpul;
+    unsigned int ownedfp;
+
+  } mcontext_t;
+
+
+typedef struct ucontext
+  {
+    unsigned long int uc_flags;
+    struct ucontext *uc_link;
+    stack_t uc_stack;
+    mcontext_t uc_mcontext;
+    __sigset_t uc_sigmask;
+  } ucontext_t;
+# 26 "../../include/ucontext.h" 2
+# 351 "../../include/signal.h" 2
+
+
+
+
+
+extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
+     __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+
+extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
+   struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern int sighold (int __sig) __attribute__ ((__nothrow__));
+
+
+extern int sigrelse (int __sig) __attribute__ ((__nothrow__));
+
+
+extern int sigignore (int __sig) __attribute__ ((__nothrow__));
+
+
+extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+# 1 "../../include/bits/sigthread.h" 1
+# 21 "../../include/bits/sigthread.h"
+#define _BITS_SIGTHREAD_H 1
+# 31 "../../include/bits/sigthread.h"
+extern int pthread_sigmask (int __how,
+       __const __sigset_t *__restrict __newmask,
+       __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));
+
+
+extern int pthread_kill (pthread_t __thread_id, int __signo) __attribute__ ((__nothrow__));
+# 387 "../../include/signal.h" 2
+
+
+
+
+
+
+extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));
+
+extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));
+
+
+
+
+# 16 "tsp_common.c" 2
+
+# 1 "tst_types.h" 1
+# 11 "tst_types.h"
+#define TST_TYPES_H
+
+
+# 1 "../../include/wchar.h" 1
+# 27 "../../include/wchar.h"
+#define _WCHAR_H 1
+# 37 "../../include/wchar.h"
+#define __need___FILE
+
+#define __need_FILE
+
+
+
+#define __need___va_list
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 1 3 4
+# 37 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 3 4
+#undef __need___va_list
+# 45 "../../include/wchar.h" 2
+
+
+#define __need_size_t
+#define __need_wchar_t
+#define __need_NULL
+
+#define __need_wint_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 163 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 357 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wint_t
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 53 "../../include/wchar.h" 2
+# 98 "../../include/wchar.h"
+#undef __need_mbstate_t
+
+
+
+
+
+
+
+
+typedef __mbstate_t mbstate_t;
+
+
+
+# 120 "../../include/wchar.h"
+#define WEOF (0xffffffffu)
+# 130 "../../include/wchar.h"
+
+
+
+
+
+struct tm;
+
+
+
+
+
+
+
+
+
+extern wchar_t *wcscpy (wchar_t *__restrict __dest,
+   __const wchar_t *__restrict __src) __attribute__ ((__nothrow__));
+
+extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
+    __const wchar_t *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__));
+
+
+extern wchar_t *wcscat (wchar_t *__restrict __dest,
+   __const wchar_t *__restrict __src) __attribute__ ((__nothrow__));
+
+extern wchar_t *wcsncat (wchar_t *__restrict __dest,
+    __const wchar_t *__restrict __src, size_t __n)
+     __attribute__ ((__nothrow__));
+
+
+extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+
+extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__));
+
+
+extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
+   size_t __n) __attribute__ ((__nothrow__));
+# 189 "../../include/wchar.h"
+
+
+
+extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__));
+
+
+
+extern size_t wcsxfrm (wchar_t *__restrict __s1,
+         __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__));
+
+# 219 "../../include/wchar.h"
+extern wchar_t *wcsdup (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+
+
+
+
+extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+
+
+extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+
+
+extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+extern wchar_t *wcstok (wchar_t *__restrict __s,
+   __const wchar_t *__restrict __delim,
+   wchar_t **__restrict __ptr) __attribute__ ((__nothrow__));
+
+
+extern size_t wcslen (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+
+extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+
+extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+
+
+extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+extern int wmemcmp (__const wchar_t *__restrict __s1,
+      __const wchar_t *__restrict __s2, size_t __n)
+     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
+    __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
+     __attribute__ ((__nothrow__));
+
+
+extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
+     __const wchar_t *__restrict __s2, size_t __n)
+     __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern wint_t btowc (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int wctob (wint_t __c) __attribute__ ((__nothrow__));
+
+
+
+extern int mbsinit (__const mbstate_t *__ps) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
+
+
+
+extern size_t mbrtowc (wchar_t *__restrict __pwc,
+         __const char *__restrict __s, size_t __n,
+         mbstate_t *__p) __attribute__ ((__nothrow__));
+
+
+extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
+         mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern size_t mbrlen (__const char *__restrict __s, size_t __n,
+        mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
+
+
+
+extern size_t mbsrtowcs (wchar_t *__restrict __dst,
+    __const char **__restrict __src, size_t __len,
+    mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
+
+
+
+extern size_t wcsrtombs (char *__restrict __dst,
+    __const wchar_t **__restrict __src, size_t __len,
+    mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
+     __const char **__restrict __src, size_t __nmc,
+     size_t __len, mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
+
+
+
+extern size_t wcsnrtombs (char *__restrict __dst,
+     __const wchar_t **__restrict __src,
+     size_t __nwc, size_t __len,
+     mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int wcwidth (wchar_t __c) __attribute__ ((__nothrow__));
+
+
+
+extern int wcswidth (__const wchar_t *__s, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double wcstod (__const wchar_t *__restrict __nptr,
+        wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
+
+
+
+extern float wcstof (__const wchar_t *__restrict __nptr,
+       wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
+extern long double wcstold (__const wchar_t *__restrict __nptr,
+       wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int wcstol (__const wchar_t *__restrict __nptr,
+   wchar_t **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
+
+
+
+extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
+      wchar_t **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__));
+
+
+
+
+__extension__
+extern long long int wcstoll (__const wchar_t *__restrict __nptr,
+         wchar_t **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__));
+
+
+
+__extension__
+extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
+     wchar_t **__restrict __endptr,
+     int __base) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+__extension__
+extern long long int wcstoq (__const wchar_t *__restrict __nptr,
+        wchar_t **__restrict __endptr, int __base)
+     __attribute__ ((__nothrow__));
+
+
+
+__extension__
+extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
+           wchar_t **__restrict __endptr,
+           int __base) __attribute__ ((__nothrow__));
+# 499 "../../include/wchar.h"
+extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __attribute__ ((__nothrow__));
+
+
+
+extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
+     __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int fwide (__FILE *__fp, int __mode) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int fwprintf (__FILE *__restrict __stream,
+       __const wchar_t *__restrict __format, ...)
+                                                           ;
+
+
+
+
+extern int wprintf (__const wchar_t *__restrict __format, ...)
+                                                           ;
+
+extern int swprintf (wchar_t *__restrict __s, size_t __n,
+       __const wchar_t *__restrict __format, ...)
+     __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+extern int vfwprintf (__FILE *__restrict __s,
+        __const wchar_t *__restrict __format,
+        __gnuc_va_list __arg)
+                                                           ;
+
+
+
+
+extern int vwprintf (__const wchar_t *__restrict __format,
+       __gnuc_va_list __arg)
+                                                           ;
+
+
+extern int vswprintf (wchar_t *__restrict __s, size_t __n,
+        __const wchar_t *__restrict __format,
+        __gnuc_va_list __arg)
+     __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern int fwscanf (__FILE *__restrict __stream,
+      __const wchar_t *__restrict __format, ...)
+                                                          ;
+
+
+
+
+extern int wscanf (__const wchar_t *__restrict __format, ...)
+                                                          ;
+
+extern int swscanf (__const wchar_t *__restrict __s,
+      __const wchar_t *__restrict __format, ...)
+     __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+
+
+
+
+
+extern int vfwscanf (__FILE *__restrict __s,
+       __const wchar_t *__restrict __format,
+       __gnuc_va_list __arg)
+                                                          ;
+
+
+
+
+extern int vwscanf (__const wchar_t *__restrict __format,
+      __gnuc_va_list __arg)
+                                                          ;
+
+extern int vswscanf (__const wchar_t *__restrict __s,
+       __const wchar_t *__restrict __format,
+       __gnuc_va_list __arg)
+     __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+
+
+
+
+extern wint_t fgetwc (__FILE *__stream);
+extern wint_t getwc (__FILE *__stream);
+
+
+
+
+
+extern wint_t getwchar (void);
+
+
+
+
+
+
+extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
+extern wint_t putwc (wchar_t __wc, __FILE *__stream);
+
+
+
+
+
+extern wint_t putwchar (wchar_t __wc);
+
+
+
+
+
+
+
+extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
+   __FILE *__restrict __stream);
+
+
+
+
+
+extern int fputws (__const wchar_t *__restrict __ws,
+     __FILE *__restrict __stream);
+
+
+
+
+
+
+extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
+
+# 667 "../../include/wchar.h"
+extern wint_t getwc_unlocked (__FILE *__stream);
+extern wint_t getwchar_unlocked (void);
+
+
+
+
+
+
+
+extern wint_t fgetwc_unlocked (__FILE *__stream);
+
+
+
+
+
+
+
+extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
+# 693 "../../include/wchar.h"
+extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
+extern wint_t putwchar_unlocked (wchar_t __wc);
+# 703 "../../include/wchar.h"
+extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
+     __FILE *__restrict __stream);
+
+
+
+
+
+
+
+extern int fputws_unlocked (__const wchar_t *__restrict __ws,
+       __FILE *__restrict __stream);
+
+
+
+
+
+
+
+extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
+   __const wchar_t *__restrict __format,
+   __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+# 748 "../../include/wchar.h"
+
+# 15 "tst_types.h" 2
+# 1 "../../include/wctype.h" 1
+# 34 "../../include/wctype.h"
+#define _WCTYPE_H 1
+
+
+
+#define __need_wint_t
+# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4
+# 163 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 357 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef __need_wint_t
+# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4
+#undef NULL
+
+
+
+
+#define NULL ((void *)0)
+
+
+
+
+
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 40 "../../include/wctype.h" 2
+# 49 "../../include/wctype.h"
+
+# 59 "../../include/wctype.h"
+#undef __need_iswxxx
+
+
+
+
+
+#define __iswxxx_defined 1
+
+
+
+
+
+typedef unsigned int wctype_t;
+
+
+
+#define _ISwbit(bit) (1 << (bit))
+
+enum
+{
+  __ISwupper = 0,
+  __ISwlower = 1,
+  __ISwalpha = 2,
+  __ISwdigit = 3,
+  __ISwxdigit = 4,
+  __ISwspace = 5,
+  __ISwprint = 6,
+  __ISwgraph = 7,
+  __ISwblank = 8,
+  __ISwcntrl = 9,
+  __ISwpunct = 10,
+  __ISwalnum = 11,
+
+  _ISwupper = (1 << (__ISwupper)),
+  _ISwlower = (1 << (__ISwlower)),
+  _ISwalpha = (1 << (__ISwalpha)),
+  _ISwdigit = (1 << (__ISwdigit)),
+  _ISwxdigit = (1 << (__ISwxdigit)),
+  _ISwspace = (1 << (__ISwspace)),
+  _ISwprint = (1 << (__ISwprint)),
+  _ISwgraph = (1 << (__ISwgraph)),
+  _ISwblank = (1 << (__ISwblank)),
+  _ISwcntrl = (1 << (__ISwcntrl)),
+  _ISwpunct = (1 << (__ISwpunct)),
+  _ISwalnum = (1 << (__ISwalnum))
+};
+# 113 "../../include/wctype.h"
+
+
+
+
+
+
+
+
+
+extern int iswalnum (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int iswalpha (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+extern int iswcntrl (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+extern int iswdigit (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+extern int iswgraph (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+extern int iswlower (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+extern int iswprint (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+extern int iswpunct (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+extern int iswspace (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+extern int iswupper (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+extern int iswxdigit (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int iswblank (wint_t __wc) __attribute__ ((__nothrow__));
+# 182 "../../include/wctype.h"
+extern wctype_t wctype (__const char *__property) __attribute__ ((__nothrow__));
+
+
+
+extern int iswctype (wint_t __wc, wctype_t __desc) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+
+
+
+typedef unsigned int wctrans_t;
+
+
+
+
+
+
+
+extern wint_t towlower (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+extern wint_t towupper (wint_t __wc) __attribute__ ((__nothrow__));
+
+
+
+# 225 "../../include/wctype.h"
+
+
+
+
+
+extern wctrans_t wctrans (__const char *__property) __attribute__ ((__nothrow__));
+
+
+extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __attribute__ ((__nothrow__));
+
+# 326 "../../include/wctype.h"
+
+# 16 "tst_types.h" 2
+# 1 "tst_funcs.h" 1
+# 11 "tst_funcs.h"
+#define TST_FUNCS_H
+
+#define C_SUCCESS 'S'
+#define C_FAILURE 'F'
+#define C_IGNORED 'I'
+#define C_INVALID 'D'
+#define C_LOCALES 'L'
+
+
+extern int result (FILE * fp, char res, const char *func, const char *loc,
+     int rec_no, int seq_num, int case_no, const char *msg);
+
+#define Result(C,S,E,M) result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M))
+
+
+#define CASE_0 0
+#define CASE_1 1
+#define CASE_2 2
+#define CASE_3 3
+#define CASE_4 4
+#define CASE_5 5
+#define CASE_6 6
+#define CASE_7 7
+#define CASE_8 8
+#define CASE_9 9
+
+#define MS_PASSED "PASSED"
+#define MS_SPACE "	 "
+#define MS_FAILED "	 "
+#define MS_NOTEST "NOTEST"
+#define MS_ABORTU "ABEND0"
+#define MS_ABORT "ABEND1"
+
+#define MK_PASSED 0x00
+#define MK_SPACE 0x01
+#define MK_NOTEST 0x02
+#define MK_ABORTU 0x04
+#define MK_ABORT 0x08
+
+
+
+
+
+#define TST_ABS(x) (((x) > 0) ? (x) : -(x))
+
+#define TMD_ERRET(_type_) int err_val; int ret_flg; _type_ ret_val
+
+
+
+#define TMD_RECHEAD(_FUNC_) typedef struct { TIN_ ##_FUNC_ ##_REC input; TEX_ ##_FUNC_ ##_REC expect; int is_last; } TST_ ##_FUNC_ ##_REC; typedef struct { TST_HEAD hd; TST_ ##_FUNC_ ##_REC rec[ MAX_LOC_TEST ]; } TST_ ##_FUNC_
+# 72 "tst_funcs.h"
+#define TST_FTYP(func) tst_ ##func ##_loc
+#define TST_HEAD(func) tst_ ##func ##_loc[ loc ].hd
+#define TST_INPUT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input
+#define TST_EXPECT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect
+#define TST_INPUT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input.seq[ seq_num ]
+
+#define TST_EXPECT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ]
+
+#define TST_IS_LAST(func) tst_ ##func ##_loc[ loc ].rec[ rec ].is_last
+
+
+
+#define TST_DECL_VARS(_type_) int loc, rec, err_count = 0; int warn_count __attribute__ ((unused)); int func_id, seq_num = 0; const char *locale; int err_exp, ret_flg; int errno_save = 0; _type_ ret_exp; _type_ ret
+# 94 "tst_funcs.h"
+#define TST_DO_TEST(o_func) for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc)
+
+
+
+#define TST_HEAD_LOCALE(ofunc,s_func) func_id = TST_HEAD (ofunc).func_id; locale = TST_HEAD (ofunc).locale; if (setlocale (LC_ALL, locale) == NULL) { fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", locale); result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale"); ++err_count; continue; }
+# 110 "tst_funcs.h"
+#define TST_DO_REC(ofunc) for (rec=0; !TST_IS_LAST (ofunc); ++rec)
+
+
+#define TST_DO_SEQ(_count_) for (seq_num=0; seq_num < _count_; seq_num++)
+
+
+#define TST_GET_ERRET(_ofunc_) err_exp = TST_EXPECT (_ofunc_).err_val; ret_flg = TST_EXPECT (_ofunc_).ret_flg; ret_exp = TST_EXPECT (_ofunc_).ret_val
+
+
+
+
+#define TST_GET_ERRET_SEQ(_ofunc_) err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val
+
+
+
+
+#define TST_CLEAR_ERRNO errno = 0
+
+
+#define TST_SAVE_ERRNO errno_save = errno
+
+
+
+#define TST_IF_RETURN(_s_func_) if (err_exp != 0) { if (errno_save == err_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 1, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1, "the value of errno is different from an expected value"); } } if (ret_flg == 1) { if (ret == ret_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2, "the return value is different from an expected value"); } } else
+# 165 "tst_funcs.h"
+#define TEX_ERRET_REC(_type_) struct { TMD_ERRET (_type_); }
+
+
+
+
+#define TEX_ERRET_REC_SEQ(_type_,_count_) struct { struct { TMD_ERRET (_type_); } seq[ _count_ ]; }
+# 181 "tst_funcs.h"
+#define TST_ISW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_ISW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (int) TEX_ISW ##_FUNC_ ##_REC; TMD_RECHEAD (ISW ##_FUNC_)
+# 190 "tst_funcs.h"
+#define TST_FUNC_ISW(_FUNC_,_func_) int tst_isw ##_func_ (FILE *fp, int debug_flg) { TST_DECL_VARS(int); wint_t wc; TST_DO_TEST (isw ##_func_) { TST_HEAD_LOCALE (isw ##_func_, S_ISW ##_FUNC_); TST_DO_REC(isw ##_func_) { TST_GET_ERRET (isw ##_func_); wc = TST_INPUT (isw ##_func_).wc; ret = isw ##_func_ (wc); if (debug_flg) { fprintf (stdout, "isw*() [ %s : %d ] ret = %d\n", locale, rec+1, ret); } TST_IF_RETURN (S_ISW ##_FUNC_) { if (ret != 0) { result (fp, C_SUCCESS, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, "the function returned 0, but should be non-zero"); } } } } return err_count; }
+# 235 "tst_funcs.h"
+#define TST_TOW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_TOW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (wint_t) TEX_TOW ##_FUNC_ ##_REC; TMD_RECHEAD (TOW ##_FUNC_)
+# 244 "tst_funcs.h"
+#define TST_FUNC_TOW(_FUNC_,_func_) int tst_tow ##_func_ (FILE *fp, int debug_flg) { TST_DECL_VARS (wint_t); wint_t wc; TST_DO_TEST (tow ##_func_) { TST_HEAD_LOCALE (tow ##_func_, S_TOW ##_FUNC_); TST_DO_REC (tow ##_func_) { TST_GET_ERRET (tow ##_func_); wc = TST_INPUT (tow ##_func_).wc; ret = tow ##_func_ (wc); if (debug_flg) { fprintf (stdout, "tow*() [ %s : %d ] ret = 0x%x\n", locale, rec+1, ret); } TST_IF_RETURN (S_TOW ##_FUNC_) { }; } } return err_count; }
+# 17 "tst_types.h" 2
+# 1 "tgn_funcdef.h" 1
+
+#define TGN_FUNCDEF_H
+
+
+#define Tiswalnum 1
+#define Tiswalpha 2
+#define Tiswcntrl 3
+#define Tiswctype 4
+#define Tiswdigit 5
+#define Tiswgraph 6
+#define Tiswlower 7
+#define Tiswprint 8
+#define Tiswpunct 9
+#define Tiswspace 10
+#define Tiswupper 11
+#define Tiswxdigit 12
+#define Tmblen 13
+#define Tmbrlen 14
+#define Tmbrtowc 15
+#define Tmbsrtowcs 16
+#define Tmbstowcs 17
+#define Tmbtowc 18
+#define Tstrcoll 19
+#define Tstrfmon 20
+#define Tstrxfrm 21
+#define Tswscanf 22
+#define Ttowctrans 23
+#define Ttowlower 24
+#define Ttowupper 25
+#define Twcrtomb 26
+#define Twcscat 27
+#define Twcschr 28
+#define Twcscmp 29
+#define Twcscoll 30
+#define Twcscpy 31
+#define Twcscspn 32
+#define Twcslen 33
+#define Twcsncat 34
+#define Twcsncmp 35
+#define Twcsncpy 36
+#define Twcspbrk 37
+#define Twcsrtombs 38
+#define Twcsspn 39
+#define Twcsstr 40
+#define Twcstod 41
+#define Twcstok 42
+#define Twcstombs 43
+#define Twcswidth 44
+#define Twcsxfrm 45
+#define Twctob 46
+#define Twctomb 47
+#define Twctrans 48
+#define Twctype 49
+#define Twcwidth 50
+
+
+#define S_ISWALNUM "iswalnum"
+#define S_ISWALPHA "iswalpha"
+#define S_ISWCNTRL "iswcntrl"
+#define S_ISWCTYPE "iswctype"
+#define S_ISWDIGIT "iswdigit"
+#define S_ISWGRAPH "iswgraph"
+#define S_ISWLOWER "iswlower"
+#define S_ISWPRINT "iswprint"
+#define S_ISWPUNCT "iswpunct"
+#define S_ISWSPACE "iswspace"
+#define S_ISWUPPER "iswupper"
+#define S_ISWXDIGIT "iswxdigit"
+#define S_MBLEN "mblen"
+#define S_MBRLEN "mbrlen"
+#define S_MBRTOWC "mbrtowc"
+#define S_MBSRTOWCS "mbsrtowcs"
+#define S_MBSTOWCS "mbstowcs"
+#define S_MBTOWC "mbtowc"
+#define S_STRCOLL "strcoll"
+#define S_STRFMON "strfmon"
+#define S_STRXFRM "strxfrm"
+#define S_SWSCANF "swscanf"
+#define S_TOWCTRANS "towctrans"
+#define S_TOWLOWER "towlower"
+#define S_TOWUPPER "towupper"
+#define S_WCRTOMB "wcrtomb"
+#define S_WCSCAT "wcscat"
+#define S_WCSCHR "wcschr"
+#define S_WCSCMP "wcscmp"
+#define S_WCSCOLL "wcscoll"
+#define S_WCSCPY "wcscpy"
+#define S_WCSCSPN "wcscspn"
+#define S_WCSLEN "wcslen"
+#define S_WCSNCAT "wcsncat"
+#define S_WCSNCMP "wcsncmp"
+#define S_WCSNCPY "wcsncpy"
+#define S_WCSPBRK "wcspbrk"
+#define S_WCSRTOMBS "wcsrtombs"
+#define S_WCSSPN "wcsspn"
+#define S_WCSSTR "wcsstr"
+#define S_WCSTOD "wcstod"
+#define S_WCSTOK "wcstok"
+#define S_WCSTOMBS "wcstombs"
+#define S_WCSWIDTH "wcswidth"
+#define S_WCSXFRM "wcsxfrm"
+#define S_WCTOB "wctob"
+#define S_WCTOMB "wctomb"
+#define S_WCTRANS "wctrans"
+#define S_WCTYPE "wctype"
+#define S_WCWIDTH "wcwidth"
+
+
+extern int tst_iswalnum (FILE *, int);
+extern int tst_iswalpha (FILE *, int);
+extern int tst_iswcntrl (FILE *, int);
+extern int tst_iswctype (FILE *, int);
+extern int tst_iswdigit (FILE *, int);
+extern int tst_iswgraph (FILE *, int);
+extern int tst_iswlower (FILE *, int);
+extern int tst_iswprint (FILE *, int);
+extern int tst_iswpunct (FILE *, int);
+extern int tst_iswspace (FILE *, int);
+extern int tst_iswupper (FILE *, int);
+extern int tst_iswxdigit (FILE *, int);
+extern int tst_mblen (FILE *, int);
+extern int tst_mbrlen (FILE *, int);
+extern int tst_mbrtowc (FILE *, int);
+extern int tst_mbsrtowcs (FILE *, int);
+extern int tst_mbstowcs (FILE *, int);
+extern int tst_mbtowc (FILE *, int);
+extern int tst_strcoll (FILE *, int);
+extern int tst_strfmon (FILE *, int);
+extern int tst_strxfrm (FILE *, int);
+extern int tst_swscanf (FILE *, int);
+extern int tst_towctrans (FILE *, int);
+extern int tst_towlower (FILE *, int);
+extern int tst_towupper (FILE *, int);
+extern int tst_wcrtomb (FILE *, int);
+extern int tst_wcscat (FILE *, int);
+extern int tst_wcschr (FILE *, int);
+extern int tst_wcscmp (FILE *, int);
+extern int tst_wcscoll (FILE *, int);
+extern int tst_wcscpy (FILE *, int);
+extern int tst_wcscspn (FILE *, int);
+extern int tst_wcslen (FILE *, int);
+extern int tst_wcsncat (FILE *, int);
+extern int tst_wcsncmp (FILE *, int);
+extern int tst_wcsncpy (FILE *, int);
+extern int tst_wcspbrk (FILE *, int);
+extern int tst_wcsrtombs (FILE *, int);
+extern int tst_wcsspn (FILE *, int);
+extern int tst_wcsstr (FILE *, int);
+extern int tst_wcstod (FILE *, int);
+extern int tst_wcstok (FILE *, int);
+extern int tst_wcstombs (FILE *, int);
+extern int tst_wcswidth (FILE *, int);
+extern int tst_wcsxfrm (FILE *, int);
+extern int tst_wctob (FILE *, int);
+extern int tst_wctomb (FILE *, int);
+extern int tst_wctrans (FILE *, int);
+extern int tst_wctype (FILE *, int);
+extern int tst_wcwidth (FILE *, int);
+# 18 "tst_types.h" 2
+
+#define MBSSIZE 24
+#define WCSSIZE 12
+#define MONFMTSIZE 16
+#define MONSIZE 64
+#define USE_MBCURMAX 99
+#define TST_DBL_EPS 2.22153e-16
+#define WCSTOK_SEQNUM 3
+#define MBLEN_SEQNUM 3
+#define MBTOWC_SEQNUM 3
+#define MBSTOWCS_SEQNUM 3
+#define WCTOMB_SEQNUM 3
+#define WCSTOMBS_SEQNUM 3
+#define MBRLEN_SEQNUM 3
+#define MBRTOWC_SEQNUM 3
+#define MBSRTOWCS_SEQNUM 3
+#define WCRTOMB_SEQNUM 3
+#define WCSRTOMBS_SEQNUM 3
+
+
+#define MAX_LOC_TEST 300
+
+
+
+
+
+
+typedef struct
+{
+  char *func_str;
+  int func_id;
+}
+TST_FID;
+
+typedef struct
+{
+  int func_id;
+  const char *locale;
+}
+TST_HEAD;
+
+typedef struct
+{
+  TST_HEAD *head;
+}
+TST_FUNCS;
+
+
+
+
+
+
+typedef struct { wint_t wc; } TIN_ISWALNUM_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWALNUM_REC; typedef struct { TIN_ISWALNUM_REC input; TEX_ISWALNUM_REC expect; int is_last; } TST_ISWALNUM_REC; typedef struct { TST_HEAD hd; TST_ISWALNUM_REC rec[ 300 ]; } TST_ISWALNUM;
+typedef struct { wint_t wc; } TIN_ISWALPHA_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWALPHA_REC; typedef struct { TIN_ISWALPHA_REC input; TEX_ISWALPHA_REC expect; int is_last; } TST_ISWALPHA_REC; typedef struct { TST_HEAD hd; TST_ISWALPHA_REC rec[ 300 ]; } TST_ISWALPHA;
+typedef struct { wint_t wc; } TIN_ISWCNTRL_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWCNTRL_REC; typedef struct { TIN_ISWCNTRL_REC input; TEX_ISWCNTRL_REC expect; int is_last; } TST_ISWCNTRL_REC; typedef struct { TST_HEAD hd; TST_ISWCNTRL_REC rec[ 300 ]; } TST_ISWCNTRL;
+typedef struct { wint_t wc; } TIN_ISWDIGIT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWDIGIT_REC; typedef struct { TIN_ISWDIGIT_REC input; TEX_ISWDIGIT_REC expect; int is_last; } TST_ISWDIGIT_REC; typedef struct { TST_HEAD hd; TST_ISWDIGIT_REC rec[ 300 ]; } TST_ISWDIGIT;
+typedef struct { wint_t wc; } TIN_ISWGRAPH_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWGRAPH_REC; typedef struct { TIN_ISWGRAPH_REC input; TEX_ISWGRAPH_REC expect; int is_last; } TST_ISWGRAPH_REC; typedef struct { TST_HEAD hd; TST_ISWGRAPH_REC rec[ 300 ]; } TST_ISWGRAPH;
+typedef struct { wint_t wc; } TIN_ISWLOWER_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWLOWER_REC; typedef struct { TIN_ISWLOWER_REC input; TEX_ISWLOWER_REC expect; int is_last; } TST_ISWLOWER_REC; typedef struct { TST_HEAD hd; TST_ISWLOWER_REC rec[ 300 ]; } TST_ISWLOWER;
+typedef struct { wint_t wc; } TIN_ISWPRINT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWPRINT_REC; typedef struct { TIN_ISWPRINT_REC input; TEX_ISWPRINT_REC expect; int is_last; } TST_ISWPRINT_REC; typedef struct { TST_HEAD hd; TST_ISWPRINT_REC rec[ 300 ]; } TST_ISWPRINT;
+typedef struct { wint_t wc; } TIN_ISWPUNCT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWPUNCT_REC; typedef struct { TIN_ISWPUNCT_REC input; TEX_ISWPUNCT_REC expect; int is_last; } TST_ISWPUNCT_REC; typedef struct { TST_HEAD hd; TST_ISWPUNCT_REC rec[ 300 ]; } TST_ISWPUNCT;
+typedef struct { wint_t wc; } TIN_ISWSPACE_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWSPACE_REC; typedef struct { TIN_ISWSPACE_REC input; TEX_ISWSPACE_REC expect; int is_last; } TST_ISWSPACE_REC; typedef struct { TST_HEAD hd; TST_ISWSPACE_REC rec[ 300 ]; } TST_ISWSPACE;
+typedef struct { wint_t wc; } TIN_ISWUPPER_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWUPPER_REC; typedef struct { TIN_ISWUPPER_REC input; TEX_ISWUPPER_REC expect; int is_last; } TST_ISWUPPER_REC; typedef struct { TST_HEAD hd; TST_ISWUPPER_REC rec[ 300 ]; } TST_ISWUPPER;
+typedef struct { wint_t wc; } TIN_ISWXDIGIT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWXDIGIT_REC; typedef struct { TIN_ISWXDIGIT_REC input; TEX_ISWXDIGIT_REC expect; int is_last; } TST_ISWXDIGIT_REC; typedef struct { TST_HEAD hd; TST_ISWXDIGIT_REC rec[ 300 ]; } TST_ISWXDIGIT;
+
+typedef struct
+{
+  wint_t wc;
+  const char *ts;
+}
+TIN_ISWCTYPE_REC;
+
+typedef
+struct { int err_val; int ret_flg; int ret_val; }
+  TEX_ISWCTYPE_REC;
+typedef struct { TIN_ISWCTYPE_REC input; TEX_ISWCTYPE_REC expect; int is_last; } TST_ISWCTYPE_REC; typedef struct { TST_HEAD hd; TST_ISWCTYPE_REC rec[ 300 ]; } TST_ISWCTYPE;
+
+
+
+
+
+
+typedef struct
+{
+  char s_flg;
+  char s[24];
+  size_t n;
+}
+TIN_MBLEN_REC;
+
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_MBLEN_REC;
+typedef struct { TIN_MBLEN_REC input; TEX_MBLEN_REC expect; int is_last; } TST_MBLEN_REC; typedef struct { TST_HEAD hd; TST_MBLEN_REC rec[ 300 ]; } TST_MBLEN;
+
+
+
+
+
+
+typedef struct
+{
+  struct
+  {
+    int s_flg;
+    char s[24];
+    size_t n;
+    int t_flg;
+    int t_init;
+  }
+  seq[3];
+}
+TIN_MBRLEN_REC;
+
+typedef struct { struct { int err_val; int ret_flg; size_t ret_val; } seq[ 3 ]; } TEX_MBRLEN_REC;
+typedef struct { TIN_MBRLEN_REC input; TEX_MBRLEN_REC expect; int is_last; } TST_MBRLEN_REC; typedef struct { TST_HEAD hd; TST_MBRLEN_REC rec[ 300 ]; } TST_MBRLEN;
+
+
+
+
+
+
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    int s_flg;
+    char s[24];
+    size_t n;
+    int t_flg;
+    int t_init;
+  }
+  seq[3];
+}
+TIN_MBRTOWC_REC;
+
+typedef struct
+{
+  struct
+  {
+    int err_val; int ret_flg; size_t ret_val;
+    wchar_t wc;
+  }
+  seq[3];
+}
+TEX_MBRTOWC_REC;
+
+typedef struct { TIN_MBRTOWC_REC input; TEX_MBRTOWC_REC expect; int is_last; } TST_MBRTOWC_REC; typedef struct { TST_HEAD hd; TST_MBRTOWC_REC rec[ 300 ]; } TST_MBRTOWC;
+
+
+
+
+
+
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    char s[24];
+    size_t n;
+    int t_flg;
+    int t_init;
+  }
+  seq[3];
+}
+TIN_MBSRTOWCS_REC;
+
+typedef struct
+{
+  struct
+  {
+    int err_val; int ret_flg; size_t ret_val;
+    wchar_t ws[12];
+  }
+  seq[3];
+}
+TEX_MBSRTOWCS_REC;
+
+typedef struct { TIN_MBSRTOWCS_REC input; TEX_MBSRTOWCS_REC expect; int is_last; } TST_MBSRTOWCS_REC; typedef struct { TST_HEAD hd; TST_MBSRTOWCS_REC rec[ 300 ]; } TST_MBSRTOWCS;
+
+
+
+
+
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    int s_flg;
+    const char *s;
+    size_t n;
+  }
+  seq[3];
+}
+TIN_MBSTOWCS_REC;
+
+typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC;
+
+typedef struct { TIN_MBSTOWCS_REC input; TEX_MBSTOWCS_REC expect; int is_last; } TST_MBSTOWCS_REC; typedef struct { TST_HEAD hd; TST_MBSTOWCS_REC rec[ 300 ]; } TST_MBSTOWCS;
+
+
+
+
+
+
+typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC;
+
+
+typedef struct
+{
+  struct
+  {
+    int err_val; int ret_flg; int ret_val;
+    wchar_t wc;
+  }
+  seq[3];
+}
+TEX_MBTOWC_REC;
+
+typedef struct { TIN_MBTOWC_REC input; TEX_MBTOWC_REC expect; int is_last; } TST_MBTOWC_REC; typedef struct { TST_HEAD hd; TST_MBTOWC_REC rec[ 300 ]; } TST_MBTOWC;
+
+
+
+
+
+
+typedef struct
+{
+  char s1[24];
+  char s2[24];
+}
+TIN_STRCOLL_REC;
+
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_STRCOLL_REC;
+typedef struct { TIN_STRCOLL_REC input; TEX_STRCOLL_REC expect; int is_last; } TST_STRCOLL_REC; typedef struct { TST_HEAD hd; TST_STRCOLL_REC rec[ 300 ]; } TST_STRCOLL;
+
+
+
+
+
+
+
+typedef struct
+{
+  int nbytes;
+  char fmt[16];
+  double val;
+}
+TIN_STRFMON_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; size_t ret_val;
+  char mon[64];
+}
+TEX_STRFMON_REC;
+
+typedef struct { TIN_STRFMON_REC input; TEX_STRFMON_REC expect; int is_last; } TST_STRFMON_REC; typedef struct { TST_HEAD hd; TST_STRFMON_REC rec[ 300 ]; } TST_STRFMON;
+
+
+
+
+
+
+typedef struct
+{
+  char org1[24];
+  char org2[24];
+  size_t n1, n2;
+}
+TIN_STRXFRM_REC;
+
+typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_STRXFRM_REC;
+typedef struct { TIN_STRXFRM_REC input; TEX_STRXFRM_REC expect; int is_last; } TST_STRXFRM_REC; typedef struct { TST_HEAD hd; TST_STRXFRM_REC rec[ 300 ]; } TST_STRXFRM;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t ws[12 * 3];
+  wchar_t fmt[12 * 3];
+  int wch;
+}
+TIN_SWSCANF_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; int ret_val;
+  int val_int;
+  unsigned val_uns;
+  float val_flt;
+  int val_c;
+  char val_s[24 * 2];
+  wchar_t val_S[12 * 2];
+}
+TEX_SWSCANF_REC;
+
+typedef struct { TIN_SWSCANF_REC input; TEX_SWSCANF_REC expect; int is_last; } TST_SWSCANF_REC; typedef struct { TST_HEAD hd; TST_SWSCANF_REC rec[ 300 ]; } TST_SWSCANF;
+
+
+
+
+
+
+typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC;
+typedef struct { int err_val; int ret_flg; wint_t ret_val; } TEX_TOWCTRANS_REC;
+typedef struct { TIN_TOWCTRANS_REC input; TEX_TOWCTRANS_REC expect; int is_last; } TST_TOWCTRANS_REC; typedef struct { TST_HEAD hd; TST_TOWCTRANS_REC rec[ 300 ]; } TST_TOWCTRANS;
+
+
+
+
+
+
+typedef struct { wint_t wc; } TIN_TOWLOWER_REC; typedef struct { int err_val; int ret_flg; wint_t ret_val; } TEX_TOWLOWER_REC; typedef struct { TIN_TOWLOWER_REC input; TEX_TOWLOWER_REC expect; int is_last; } TST_TOWLOWER_REC; typedef struct { TST_HEAD hd; TST_TOWLOWER_REC rec[ 300 ]; } TST_TOWLOWER;
+typedef struct { wint_t wc; } TIN_TOWUPPER_REC; typedef struct { int err_val; int ret_flg; wint_t ret_val; } TEX_TOWUPPER_REC; typedef struct { TIN_TOWUPPER_REC input; TEX_TOWUPPER_REC expect; int is_last; } TST_TOWUPPER_REC; typedef struct { TST_HEAD hd; TST_TOWUPPER_REC rec[ 300 ]; } TST_TOWUPPER;
+
+
+
+
+
+
+typedef struct
+{
+  int s_flg;
+  wchar_t wc;
+  int t_flg;
+  int t_init;
+}
+TIN_WCRTOMB_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; wchar_t ret_val;
+  char s[24];
+}
+TEX_WCRTOMB_REC;
+
+typedef struct { TIN_WCRTOMB_REC input; TEX_WCRTOMB_REC expect; int is_last; } TST_WCRTOMB_REC; typedef struct { TST_HEAD hd; TST_WCRTOMB_REC rec[ 300 ]; } TST_WCRTOMB;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t ws1[12];
+  wchar_t ws2[12];
+}
+TIN_WCSCAT_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; wchar_t * ret_val;
+  wchar_t ws[12];
+}
+TEX_WCSCAT_REC;
+
+typedef struct { TIN_WCSCAT_REC input; TEX_WCSCAT_REC expect; int is_last; } TST_WCSCAT_REC; typedef struct { TST_HEAD hd; TST_WCSCAT_REC rec[ 300 ]; } TST_WCSCAT;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t ws[12];
+  wchar_t wc;
+}
+TIN_WCSCHR_REC;
+
+typedef struct { int err_val; int ret_flg; wchar_t * ret_val; } TEX_WCSCHR_REC;
+typedef struct { TIN_WCSCHR_REC input; TEX_WCSCHR_REC expect; int is_last; } TST_WCSCHR_REC; typedef struct { TST_HEAD hd; TST_WCSCHR_REC rec[ 300 ]; } TST_WCSCHR;
+
+
+
+
+
+
+typedef TIN_WCSCAT_REC TIN_WCSCMP_REC;
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCSCMP_REC;
+typedef struct { TIN_WCSCMP_REC input; TEX_WCSCMP_REC expect; int is_last; } TST_WCSCMP_REC; typedef struct { TST_HEAD hd; TST_WCSCMP_REC rec[ 300 ]; } TST_WCSCMP;
+
+
+
+
+
+
+typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC;
+typedef struct
+{
+  int err_val; int ret_flg; int ret_val;
+  int cmp_flg;
+}
+TEX_WCSCOLL_REC;
+typedef struct { TIN_WCSCOLL_REC input; TEX_WCSCOLL_REC expect; int is_last; } TST_WCSCOLL_REC; typedef struct { TST_HEAD hd; TST_WCSCOLL_REC rec[ 300 ]; } TST_WCSCOLL;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t ws[12];
+}
+TIN_WCSCPY_REC;
+
+typedef TEX_WCSCAT_REC TEX_WCSCPY_REC;
+typedef struct { TIN_WCSCPY_REC input; TEX_WCSCPY_REC expect; int is_last; } TST_WCSCPY_REC; typedef struct { TST_HEAD hd; TST_WCSCPY_REC rec[ 300 ]; } TST_WCSCPY;
+
+
+
+
+
+
+typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC;
+typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_WCSCSPN_REC;
+typedef struct { TIN_WCSCSPN_REC input; TEX_WCSCSPN_REC expect; int is_last; } TST_WCSCSPN_REC; typedef struct { TST_HEAD hd; TST_WCSCSPN_REC rec[ 300 ]; } TST_WCSCSPN;
+
+
+
+
+
+
+typedef TIN_WCSCPY_REC TIN_WCSLEN_REC;
+typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_WCSLEN_REC;
+typedef struct { TIN_WCSLEN_REC input; TEX_WCSLEN_REC expect; int is_last; } TST_WCSLEN_REC; typedef struct { TST_HEAD hd; TST_WCSLEN_REC rec[ 300 ]; } TST_WCSLEN;
+
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t ws1[12];
+  wchar_t ws2[12];
+  size_t n;
+}
+TIN_WCSNCAT_REC;
+
+typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC;
+typedef struct { TIN_WCSNCAT_REC input; TEX_WCSNCAT_REC expect; int is_last; } TST_WCSNCAT_REC; typedef struct { TST_HEAD hd; TST_WCSNCAT_REC rec[ 300 ]; } TST_WCSNCAT;
+
+
+
+
+
+
+
+typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC;
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCSNCMP_REC;
+typedef struct { TIN_WCSNCMP_REC input; TEX_WCSNCMP_REC expect; int is_last; } TST_WCSNCMP_REC; typedef struct { TST_HEAD hd; TST_WCSNCMP_REC rec[ 300 ]; } TST_WCSNCMP;
+
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t ws[12];
+  size_t n;
+}
+TIN_WCSNCPY_REC;
+
+typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC;
+typedef struct { TIN_WCSNCPY_REC input; TEX_WCSNCPY_REC expect; int is_last; } TST_WCSNCPY_REC; typedef struct { TST_HEAD hd; TST_WCSNCPY_REC rec[ 300 ]; } TST_WCSNCPY;
+
+
+
+
+
+
+typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; wchar_t * ret_val;
+  wchar_t wc;
+}
+TEX_WCSPBRK_REC;
+
+typedef struct { TIN_WCSPBRK_REC input; TEX_WCSPBRK_REC expect; int is_last; } TST_WCSPBRK_REC; typedef struct { TST_HEAD hd; TST_WCSPBRK_REC rec[ 300 ]; } TST_WCSPBRK;
+
+
+
+
+
+
+
+typedef struct
+{
+  int s_flg;
+  int w_flg;
+  wchar_t ws[12];
+  size_t n;
+  int t_flg;
+  int t_init;
+}
+TIN_WCSRTOMBS_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; size_t ret_val;
+  char s[24];
+}
+TEX_WCSRTOMBS_REC;
+
+typedef struct { TIN_WCSRTOMBS_REC input; TEX_WCSRTOMBS_REC expect; int is_last; } TST_WCSRTOMBS_REC; typedef struct { TST_HEAD hd; TST_WCSRTOMBS_REC rec[ 300 ]; } TST_WCSRTOMBS;
+
+
+
+
+
+
+typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC;
+typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC;
+typedef struct { TIN_WCSSPN_REC input; TEX_WCSSPN_REC expect; int is_last; } TST_WCSSPN_REC; typedef struct { TST_HEAD hd; TST_WCSSPN_REC rec[ 300 ]; } TST_WCSSPN;
+
+
+
+
+
+
+typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC;
+typedef struct { int err_val; int ret_flg; wchar_t * ret_val; } TEX_WCSSTR_REC;
+typedef struct { TIN_WCSSTR_REC input; TEX_WCSSTR_REC expect; int is_last; } TST_WCSSTR_REC; typedef struct { TST_HEAD hd; TST_WCSSTR_REC rec[ 300 ]; } TST_WCSSTR;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t np[12];
+}
+TIN_WCSTOD_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; double ret_val;
+  double val;
+  wchar_t fwc;
+}
+TEX_WCSTOD_REC;
+
+typedef struct { TIN_WCSTOD_REC input; TEX_WCSTOD_REC expect; int is_last; } TST_WCSTOD_REC; typedef struct { TST_HEAD hd; TST_WCSTOD_REC rec[ 300 ]; } TST_WCSTOD;
+
+
+
+
+
+
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    wchar_t ws[12];
+    wchar_t dt[12];
+  }
+  seq[3];
+}
+TIN_WCSTOK_REC;
+
+typedef struct
+{
+  struct
+  {
+    int err_val; int ret_flg; wchar_t * ret_val;
+    wchar_t ws[12];
+  }
+  seq[3];
+}
+TEX_WCSTOK_REC;
+
+typedef struct { TIN_WCSTOK_REC input; TEX_WCSTOK_REC expect; int is_last; } TST_WCSTOK_REC; typedef struct { TST_HEAD hd; TST_WCSTOK_REC rec[ 300 ]; } TST_WCSTOK;
+
+
+
+
+
+
+typedef struct
+{
+  int s_flg;
+  int w_flg;
+  wchar_t ws[12];
+  size_t n;
+}
+TIN_WCSTOMBS_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; size_t ret_val;
+  char s[24];
+}
+TEX_WCSTOMBS_REC;
+
+typedef struct { TIN_WCSTOMBS_REC input; TEX_WCSTOMBS_REC expect; int is_last; } TST_WCSTOMBS_REC; typedef struct { TST_HEAD hd; TST_WCSTOMBS_REC rec[ 300 ]; } TST_WCSTOMBS;
+
+
+
+
+
+
+typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC;
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCSWIDTH_REC;
+typedef struct { TIN_WCSWIDTH_REC input; TEX_WCSWIDTH_REC expect; int is_last; } TST_WCSWIDTH_REC; typedef struct { TST_HEAD hd; TST_WCSWIDTH_REC rec[ 300 ]; } TST_WCSWIDTH;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t org1[12];
+  wchar_t org2[12];
+  int n1, n2;
+}
+TIN_WCSXFRM_REC;
+
+typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_WCSXFRM_REC;
+typedef struct { TIN_WCSXFRM_REC input; TEX_WCSXFRM_REC expect; int is_last; } TST_WCSXFRM_REC; typedef struct { TST_HEAD hd; TST_WCSXFRM_REC rec[ 300 ]; } TST_WCSXFRM;
+
+
+
+
+
+
+typedef struct
+{
+  wint_t wc;
+}
+TIN_WCTOB_REC;
+
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCTOB_REC;
+typedef struct { TIN_WCTOB_REC input; TEX_WCTOB_REC expect; int is_last; } TST_WCTOB_REC; typedef struct { TST_HEAD hd; TST_WCTOB_REC rec[ 300 ]; } TST_WCTOB;
+
+
+
+
+
+
+typedef struct
+{
+  int s_flg;
+  wchar_t wc;
+}
+TIN_WCTOMB_REC;
+
+typedef struct
+{
+  int err_val; int ret_flg; int ret_val;
+  char s[24];
+}
+TEX_WCTOMB_REC;
+
+typedef struct { TIN_WCTOMB_REC input; TEX_WCTOMB_REC expect; int is_last; } TST_WCTOMB_REC; typedef struct { TST_HEAD hd; TST_WCTOMB_REC rec[ 300 ]; } TST_WCTOMB;
+
+
+
+
+
+
+typedef struct
+{
+  char class[24];
+}
+TIN_WCTRANS_REC;
+
+typedef struct { int err_val; int ret_flg; wctrans_t ret_val; } TEX_WCTRANS_REC;
+typedef struct { TIN_WCTRANS_REC input; TEX_WCTRANS_REC expect; int is_last; } TST_WCTRANS_REC; typedef struct { TST_HEAD hd; TST_WCTRANS_REC rec[ 300 ]; } TST_WCTRANS;
+
+
+
+
+
+
+typedef TIN_WCTRANS_REC TIN_WCTYPE_REC;
+typedef struct { int err_val; int ret_flg; wctype_t ret_val; } TEX_WCTYPE_REC;
+typedef struct { TIN_WCTYPE_REC input; TEX_WCTYPE_REC expect; int is_last; } TST_WCTYPE_REC; typedef struct { TST_HEAD hd; TST_WCTYPE_REC rec[ 300 ]; } TST_WCTYPE;
+
+
+
+
+
+
+typedef struct
+{
+  wchar_t wc;
+}
+TIN_WCWIDTH_REC;
+
+typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCWIDTH_REC;
+typedef struct { TIN_WCWIDTH_REC input; TEX_WCWIDTH_REC expect; int is_last; } TST_WCWIDTH_REC; typedef struct { TST_HEAD hd; TST_WCWIDTH_REC rec[ 300 ]; } TST_WCWIDTH;
+# 18 "tsp_common.c" 2
+# 1 "tgn_locdef.h" 1
+
+#define TGN_LOCDEF_H
+
+
+
+
+#define TST_LOC_C "C"
+
+
+#define TST_LOC_de "de_DE.ISO-8859-1"
+
+
+
+#define TST_LOC_enUS "en_US.ANSI_X3.4-1968"
+
+
+
+
+
+
+#define TST_LOC_eucJP "ja_JP.EUC-JP"
+
+
+
+
+
+
+#define TST_LOC_de_UTF8 "de_DE.UTF-8"
+
+
+#define TST_LOC_end "lastEntry"
+# 19 "tsp_common.c" 2
+
+
+int
+main (int argc, char *argv[])
+{
+  int ret;
+  int debug;
+
+  debug = argc > 1 ? atoi (argv[1]) : 0;
+
+  if (debug)
+    {
+      fprintf (stdout, "\nTST_MBWC ===> %s ...\n", argv[0]);
+    }
+  ret = tst_mbrlen (stdout, debug);
+
+  return (ret != 0);
+}
+
+#define MAX_RESULT_REC 132
+char result_rec[132];
+
+
+int
+result (FILE * fp, char res, const char *func, const char *loc, int rec_no,
+ int seq_no, int case_no, const char *msg)
+{
+  if (fp == ((void *)0)
+      || strlen (func) + strlen (loc) + strlen (msg) + 32 > 132)
+    {
+      fprintf (stderr,
+        "Warning: result(): can't write the result: %s:%s:%d:%d:%s\n",
+        func, loc, rec_no, case_no, msg);
+      return 0;
+    }
+
+  sprintf (result_rec, "%s:%s:%d:%d:%d:%c:%s\n", func, loc, rec_no, seq_no,
+    case_no, res, msg);
+
+  if (fputs (result_rec, fp) == (-1))
+    {
+      return 0;
+    }
+
+  return 1;
+}
+# 8 "tst_mbrlen.c" 2
+# 1 "dat_mbrlen.c" 1
+# 19 "dat_mbrlen.c"
+TST_MBRLEN tst_mbrlen_loc [] = {
+  {
+    { 14, "de_DE.ISO-8859-1" },
+    {
+      {
+ {
+   {
+     { 1, "", 0, 0, 0 },
+     { 1, "", 1, 0, 0 },
+     { 1, "\300", 99, 0, 0 },
+   }
+ },
+ {
+   {
+     { 0, 1, 0, },
+     { 0, 1, 0, },
+     { 0, 1, 1, },
+   }
+ }
+      },
+      {
+ {
+   {
+     { 1, "\300\001", 0, 0, 0 },
+     { 1, "\300\001", 1, 0, 0 },
+     { 1, "\317\001", 99, 0, 0 },
+   }
+ },
+ {
+   {
+     { 0, 1, 0, },
+     { 0, 1, 1, },
+     { 0, 1, 1, },
+   }
+ }
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { 14, "en_US.ANSI_X3.4-1968" },
+    {
+      {
+ {
+   {
+     { 1, "A", 0, 0, 0 },
+     { 1, "A", 1, 0, 0 },
+     { 1, "A", 99, 0, 0 },
+   }
+ },
+ {
+   {
+     { 0, 1, 0, },
+     { 0, 1, 1, },
+     { 0, 1, 1, },
+   }
+ }
+      },
+      {
+ {
+   {
+     { 1, "\317\001", 0, 1, 0 },
+     { 1, "\317\001", 1, 1, 0 },
+     { 1, "\317\001", 99, 1, 0 },
+   }
+ },
+ {
+   {
+     { 0, 1, 0, },
+     { 84, 1, -1, },
+     { 84, 1, -1, },
+   }
+ }
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { 14, "ja_JP.EUC-JP" },
+    {
+      {
+ {
+   {
+     { 1, "\317\302", 1, 1, 1 },
+     { 0, "", 0, 1, 0 },
+     { 1, "\317\302", 99, 1, 1 },
+   }
+ },
+ {
+   {
+     { 0, 1, -2, },
+     { 0, 1, -1, },
+     { 0, 1, 2, },
+   }
+ }
+      },
+      {
+ {
+   {
+     { 1, "\317", 1, 1, 0 },
+     { 1, "\302", 1, 1, 0 },
+     { 1, "\317\302", 99, 0, 0 },
+   }
+ },
+ {
+   {
+     { 0, 1, -2, },
+
+
+
+
+
+     { 0, 1, +1, },
+
+     { 0, 1, 2, },
+   }
+ }
+      },
+      {
+ {
+   {
+     { 1, "\216\217", 0, 0, 0 },
+     { 1, "\216\217", 1, 0, 0 },
+     { 1, "\216\217", 99, 0, 0 },
+   }
+ },
+ {
+   {
+     { 0, 1, 0, },
+     { 0, 1, -2, },
+     { 84, 1, -1, },
+   }
+ }
+      },
+      { .is_last = 1 }
+    }
+  },
+  {
+    { 14, "lastEntry" }
+  }
+};
+# 9 "tst_mbrlen.c" 2
+
+
+int
+tst_mbrlen (FILE * fp, int debug_flg)
+{
+  int loc, rec, err_count = 0; int warn_count __attribute__ ((unused)); int func_id, seq_num = 0; const char *locale; int err_exp, ret_flg; int errno_save = 0; size_t ret_exp; size_t ret;
+  char s_flg;
+  const char *s_in;
+  size_t n;
+  char t_flg;
+  char t_ini;
+  static mbstate_t s = { 0 };
+  mbstate_t *ps;
+
+  for (loc = 0; strcmp (tst_mbrlen_loc[ loc ].hd.locale, "lastEntry"); ++loc)
+  {
+    func_id = tst_mbrlen_loc[ loc ].hd.func_id; locale = tst_mbrlen_loc[ loc ].hd.locale; if (setlocale (6, locale) == ((void *)0)) { fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", locale); result (fp, 'L', "mbrlen", locale, 0, 0, 0, "can't set locale"); ++err_count; continue; };
+    for (rec=0; !tst_mbrlen_loc[ loc ].rec[ rec ].is_last; ++rec)
+    {
+      if (mbrlen (((void *)0), 0, &s) != 0)
+ {
+   err_count++;
+   result (fp, ('F'), ("mbrlen"), locale, rec+1, seq_num+1, (3), ("Initialization (external mbstate object) failed " "- skipped this test case."));
+
+
+   continue;
+ }
+
+      for (seq_num=0; seq_num < 3; seq_num++)
+      {
+ err_exp = tst_mbrlen_loc[ loc ].rec[ rec ].expect.seq[ seq_num ].err_val; ret_flg = tst_mbrlen_loc[ loc ].rec[ rec ].expect.seq[ seq_num ].ret_flg; ret_exp = tst_mbrlen_loc[ loc ].rec[ rec ].expect.seq[ seq_num ].ret_val;
+ s_flg = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].s_flg;
+ s_in = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].s;
+ n = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].n;
+ t_flg = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].t_flg;
+ t_ini = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].t_init;
+ if (s_flg == 0)
+   {
+     s_in = ((void *)0);
+   }
+
+
+        fprintf(stdout, "n = %d.\n", n);
+
+ if (n == 99)
+   {
+     n = (_stdlib_mb_cur_max ());
+   }
+
+ ps = (t_flg == 0) ? ((void *)0) : &s;
+
+ if (t_ini != 0)
+   {
+     memset (&s, 0, sizeof (s));
+     mbrlen (((void *)0), 0, ((void *)0));
+   }
+
+ __libc_errno = 0;
+ ret = mbrlen (s_in, n, ps);
+ errno_save = __libc_errno;
+
+
+        fprintf(stdout, "s_in = %c, n = %d, t_ini = %d, s_flg = %d,                 t_flg = %d, MB_CUR_MAX = %d.\n",
+
+                s_in, n, t_ini, s_flg, t_flg, (_stdlib_mb_cur_max ()));
+
+ if (debug_flg)
+   {
+     fprintf (stdout, "mbrlen() [ %s : %d : %d ] ret = %zd\n",
+       locale, rec + 1, seq_num + 1, ret);
+     fprintf (stdout, "			   errno = %d\n", errno_save);
+   }
+
+ if (err_exp != 0) { if (errno_save == err_exp) { result (fp, 'S', "mbrlen", locale, rec+1, seq_num+1, 1, "PASSED"); } else { err_count++; result (fp, 'F', "mbrlen", locale, rec+1, seq_num+1, 1, "the value of errno is different from an expected value"); } } if (ret_flg == 1) { if (ret == ret_exp) { result (fp, 'S', "mbrlen", locale, rec+1, seq_num+1, 2, "PASSED"); } else { err_count++; result (fp, 'F', "mbrlen", locale, rec+1, seq_num+1, 2, "the return value is different from an expected value"); } } else
+ {
+ };
+      }
+    }
+  }
+
+  return err_count;
+}

+ 8666 - 0
test/locale-mbwc/tst_mbrlen.s

@@ -0,0 +1,8666 @@
+	.file	"tst_mbrlen.c"
+	.text
+	.little
+	.section	.debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+	.section	.debug_info,"",@progbits
+.Ldebug_info0:
+	.section	.debug_line,"",@progbits
+.Ldebug_line0:
+	.section	.debug_macinfo,"",@progbits
+.Ldebug_macinfo0:
+	.text
+.Ltext0:
+	.section	.debug_macinfo
+	.byte	0x3
+	.uleb128 0x0
+	.file 1 "tst_mbrlen.c"
+	.uleb128 0x1
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__STDC__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__STDC_HOSTED__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__GNUC__ 4"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__GNUC_MINOR__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__GNUC_PATCHLEVEL__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__SIZE_TYPE__ unsigned int"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__PTRDIFF_TYPE__ int"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__WCHAR_TYPE__ long int"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__WINT_TYPE__ unsigned int"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__INTMAX_TYPE__ long long int"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__UINTMAX_TYPE__ long long unsigned int"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__GXX_ABI_VERSION 1002"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__SCHAR_MAX__ 127"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__SHRT_MAX__ 32767"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__INT_MAX__ 2147483647"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LONG_MAX__ 2147483647L"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LONG_LONG_MAX__ 9223372036854775807LL"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__WCHAR_MAX__ 2147483647"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__CHAR_BIT__ 8"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__INTMAX_MAX__ 9223372036854775807LL"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_EVAL_METHOD__ 0"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_RADIX__ 2"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MANT_DIG__ 24"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_DIG__ 6"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MIN_EXP__ (-125)"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MIN_10_EXP__ (-37)"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MAX_EXP__ 128"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MAX_10_EXP__ 38"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MAX__ 3.40282347e+38F"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_MIN__ 1.17549435e-38F"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_EPSILON__ 1.19209290e-7F"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_DENORM_MIN__ 1.40129846e-45F"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_HAS_INFINITY__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FLT_HAS_QUIET_NAN__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MANT_DIG__ 53"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_DIG__ 15"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MIN_EXP__ (-1021)"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MIN_10_EXP__ (-307)"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MAX_EXP__ 1024"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MAX_10_EXP__ 308"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MAX__ 1.7976931348623157e+308"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_MIN__ 2.2250738585072014e-308"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_EPSILON__ 2.2204460492503131e-16"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_DENORM_MIN__ 4.9406564584124654e-324"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_HAS_INFINITY__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DBL_HAS_QUIET_NAN__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MANT_DIG__ 53"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_DIG__ 15"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MIN_EXP__ (-1021)"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MIN_10_EXP__ (-307)"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MAX_EXP__ 1024"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MAX_10_EXP__ 308"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__DECIMAL_DIG__ 17"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MAX__ 1.7976931348623157e+308L"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_MIN__ 2.2250738585072014e-308L"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_EPSILON__ 2.2204460492503131e-16L"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_DENORM_MIN__ 4.9406564584124654e-324L"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_HAS_INFINITY__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LDBL_HAS_QUIET_NAN__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__REGISTER_PREFIX__ "
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__USER_LABEL_PREFIX__ "
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__VERSION__ \"4.1.1 (STMicroelectronics Special) [build Jun 26 2007]\""
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__NO_INLINE__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__FINITE_MATH_ONLY__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__sh__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__SH4__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__SH_FPU_ANY__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__SH_FPU_DOUBLE__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__LITTLE_ENDIAN__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__gnu_linux__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__linux 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__linux__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"linux 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__unix 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__unix__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"unix 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__ELF__ 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"DEBUG 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"_GNU_SOURCE 1"
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__USE_GNU 1"
+	.byte	0x3
+	.uleb128 0x2
+	.file 2 "./../../include/libc-symbols.h"
+	.uleb128 0x2
+	.byte	0x1
+	.uleb128 0x17
+	.string	"_LIBC_SYMBOLS_H 1"
+	.byte	0x3
+	.uleb128 0x2a
+	.file 3 "../../include/bits/uClibc_arch_features.h"
+	.uleb128 0x3
+	.byte	0x1
+	.uleb128 0x6
+	.string	"_BITS_UCLIBC_ARCH_FEATURES_H "
+	.byte	0x1
+	.uleb128 0xc
+	.string	"__UCLIBC_ABORT_INSTRUCTION__ \"trapa #0xff\""
+	.byte	0x1
+	.uleb128 0x10
+	.string	"__UCLIBC_MMAP_HAS_6_ARGS__ "
+	.byte	0x2
+	.uleb128 0x13
+	.string	"__UCLIBC_TRUNCATE64_HAS_4_ARGS__"
+	.byte	0x2
+	.uleb128 0x16
+	.string	"__UCLIBC_BROKEN_CREATE_MODULE__"
+	.byte	0x2
+	.uleb128 0x19
+	.string	"__UCLIBC_HANDLE_OLDER_RLIMIT__"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"__UCLIBC_NO_UNDERSCORES__ "
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"__UCLIBC_HAVE_ASM_SET_DIRECTIVE__ "
+	.byte	0x2
+	.uleb128 0x22
+	.string	"__UCLIBC_ASM_GLOBAL_DIRECTIVE__"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__ "
+	.byte	0x2
+	.uleb128 0x28
+	.string	"__UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__"
+	.byte	0x2
+	.uleb128 0x2b
+	.string	"__UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"__UCLIBC_HAVE_SIGNED_ZERO__ "
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x33
+	.string	"_LIBC 1"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"_GNU_SOURCE 1"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"likely(x) __builtin_expect((!!(x)),1)"
+	.byte	0x1
+	.uleb128 0x40
+	.string	"unlikely(x) __builtin_expect((!!(x)),0)"
+	.byte	0x1
+	.uleb128 0x43
+	.string	"__LINUX_COMPILER_H "
+	.byte	0x1
+	.uleb128 0x46
+	.string	"__cast__(_to) "
+	.byte	0x1
+	.uleb128 0x49
+	.string	"attribute_unused __attribute__ ((unused))"
+	.byte	0x1
+	.uleb128 0x4c
+	.string	"attribute_noreturn __attribute__ ((__noreturn__))"
+	.byte	0x1
+	.uleb128 0x52
+	.string	"IS_IN_libc 1"
+	.byte	0x1
+	.uleb128 0x56
+	.string	"NO_UNDERSCORES "
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"HAVE_ASM_SET_DIRECTIVE "
+	.byte	0x1
+	.uleb128 0x64
+	.string	"ASM_GLOBAL_DIRECTIVE .global"
+	.byte	0x1
+	.uleb128 0x68
+	.string	"HAVE_ASM_WEAK_DIRECTIVE "
+	.byte	0x2
+	.uleb128 0x70
+	.string	"HAVE_ASM_WEAKEXT_DIRECTIVE"
+	.byte	0x2
+	.uleb128 0x76
+	.string	"HAVE_ASM_GLOBAL_DOT_NAME"
+	.byte	0x1
+	.uleb128 0x7a
+	.string	"HAVE_WEAK_SYMBOLS "
+	.byte	0x2
+	.uleb128 0x7d
+	.string	"C_SYMBOL_NAME"
+	.byte	0x1
+	.uleb128 0x80
+	.string	"C_SYMBOL_NAME(name) name"
+	.byte	0x1
+	.uleb128 0x87
+	.string	"ASM_LINE_SEP ;"
+	.byte	0x1
+	.uleb128 0x9a
+	.string	"strong_alias(name,aliasname) _strong_alias(name, aliasname)"
+	.byte	0x1
+	.uleb128 0x9b
+	.string	"_strong_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name)));"
+	.byte	0x1
+	.uleb128 0xa0
+	.string	"weak_function __attribute__ ((weak))"
+	.byte	0x1
+	.uleb128 0xa1
+	.string	"weak_const_function __attribute__ ((weak, __const__))"
+	.byte	0x1
+	.uleb128 0xa7
+	.string	"weak_alias(name,aliasname) _weak_alias (name, aliasname)"
+	.byte	0x1
+	.uleb128 0xa8
+	.string	"_weak_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));"
+	.byte	0x1
+	.uleb128 0xac
+	.string	"weak_extern(symbol) _weak_extern (weak symbol)"
+	.byte	0x1
+	.uleb128 0xad
+	.string	"_weak_extern(expr) _Pragma (#expr)"
+	.byte	0x1
+	.uleb128 0x116
+	.string	"internal_function "
+	.byte	0x1
+	.uleb128 0x11a
+	.string	"__make_section_unallocated(section_string) __asm__ (\".section \" section_string \"\\n\\t.previous\");"
+	.byte	0x1
+	.uleb128 0x122
+	.string	"__sec_comment \"\\n\\t#\""
+	.byte	0x1
+	.uleb128 0x12a
+	.string	"link_warning(symbol,msg) __make_section_unallocated (\".gnu.warning.\" #symbol) static const char __evoke_link_warning_ ##symbol[] __attribute__ ((used, section (\".gnu.warning.\" #symbol __sec_comment))) = msg;"
+	.byte	0x1
+	.uleb128 0x143
+	.string	"INTUSE(name) name"
+	.byte	0x1
+	.uleb128 0x144
+	.string	"INTDEF(name) "
+	.byte	0x1
+	.uleb128 0x145
+	.string	"INTVARDEF(name) "
+	.byte	0x1
+	.uleb128 0x146
+	.string	"INTDEF2(name,newname) "
+	.byte	0x1
+	.uleb128 0x147
+	.string	"INTVARDEF2(name,newname) "
+	.byte	0x1
+	.uleb128 0x1a3
+	.string	"attribute_hidden __attribute__ ((visibility (\"hidden\")))"
+	.byte	0x1
+	.uleb128 0x1a4
+	.string	"__hidden_proto_hiddenattr(attrs...) __attribute__ ((visibility (\"hidden\"), ##attrs))"
+	.byte	0x1
+	.uleb128 0x1ac
+	.string	"hidden_proto(name,attrs...) __hidden_proto (name, __GI_ ##name, ##attrs)"
+	.byte	0x1
+	.uleb128 0x1ad
+	.string	"__hidden_proto(name,internal,attrs...) extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) __hidden_proto_hiddenattr (attrs);"
+	.byte	0x1
+	.uleb128 0x1b0
+	.string	"__hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name)"
+	.byte	0x1
+	.uleb128 0x1b1
+	.string	"__hidden_asmname1(prefix,name) __hidden_asmname2(prefix, name)"
+	.byte	0x1
+	.uleb128 0x1b2
+	.string	"__hidden_asmname2(prefix,name) #prefix name"
+	.byte	0x1
+	.uleb128 0x1b3
+	.string	"__hidden_ver1(local,internal,name) extern __typeof (name) __EI_ ##name __asm__(__hidden_asmname (#internal)); extern __typeof (name) __EI_ ##name __attribute__((alias (__hidden_asmname1 (,#local))))"
+	.byte	0x1
+	.uleb128 0x1b6
+	.string	"hidden_def(name) __hidden_ver1(__GI_ ##name, name, name);"
+	.byte	0x1
+	.uleb128 0x1b7
+	.string	"hidden_data_def(name) hidden_def(name)"
+	.byte	0x1
+	.uleb128 0x1b8
+	.string	"hidden_weak(name) __hidden_ver1(__GI_ ##name, name, name) __attribute__((weak));"
+	.byte	0x1
+	.uleb128 0x1b9
+	.string	"hidden_data_weak(name) hidden_weak(name)"
+	.byte	0x1
+	.uleb128 0x203
+	.string	"versioned_symbol(lib,local,symbol,version) "
+	.byte	0x1
+	.uleb128 0x204
+	.string	"hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x205
+	.string	"hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x208
+	.string	"libc_hidden_proto(name,attrs...) hidden_proto (name, ##attrs)"
+	.byte	0x1
+	.uleb128 0x209
+	.string	"libc_hidden_def(name) hidden_def (name)"
+	.byte	0x1
+	.uleb128 0x20a
+	.string	"libc_hidden_weak(name) hidden_weak (name)"
+	.byte	0x1
+	.uleb128 0x20b
+	.string	"libc_hidden_ver(local,name) hidden_ver (local, name)"
+	.byte	0x1
+	.uleb128 0x20c
+	.string	"libc_hidden_data_def(name) hidden_data_def (name)"
+	.byte	0x1
+	.uleb128 0x20d
+	.string	"libc_hidden_data_weak(name) hidden_data_weak (name)"
+	.byte	0x1
+	.uleb128 0x20e
+	.string	"libc_hidden_data_ver(local,name) hidden_data_ver (local, name)"
+	.byte	0x1
+	.uleb128 0x222
+	.string	"rtld_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x223
+	.string	"rtld_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x224
+	.string	"rtld_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x225
+	.string	"rtld_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x226
+	.string	"rtld_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x227
+	.string	"rtld_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x228
+	.string	"rtld_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x234
+	.string	"libm_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x235
+	.string	"libm_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x236
+	.string	"libm_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x237
+	.string	"libm_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x238
+	.string	"libm_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x239
+	.string	"libm_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x23a
+	.string	"libm_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x246
+	.string	"libresolv_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x247
+	.string	"libresolv_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x248
+	.string	"libresolv_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x249
+	.string	"libresolv_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x24a
+	.string	"libresolv_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x24b
+	.string	"libresolv_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x24c
+	.string	"libresolv_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x258
+	.string	"librt_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x259
+	.string	"librt_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x25a
+	.string	"librt_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x25b
+	.string	"librt_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x25c
+	.string	"librt_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x25d
+	.string	"librt_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x25e
+	.string	"librt_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x26a
+	.string	"libdl_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x26b
+	.string	"libdl_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x26c
+	.string	"libdl_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x26d
+	.string	"libdl_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x26e
+	.string	"libdl_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x26f
+	.string	"libdl_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x270
+	.string	"libdl_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x27c
+	.string	"libintl_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x27d
+	.string	"libintl_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x27e
+	.string	"libintl_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x27f
+	.string	"libintl_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x280
+	.string	"libintl_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x281
+	.string	"libintl_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x282
+	.string	"libintl_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x28e
+	.string	"libnsl_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x28f
+	.string	"libnsl_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x290
+	.string	"libnsl_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x291
+	.string	"libnsl_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x292
+	.string	"libnsl_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x293
+	.string	"libnsl_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x294
+	.string	"libnsl_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x2a0
+	.string	"libutil_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x2a1
+	.string	"libutil_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x2a2
+	.string	"libutil_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x2a3
+	.string	"libutil_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x2a4
+	.string	"libutil_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x2a5
+	.string	"libutil_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x2a6
+	.string	"libutil_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x2b2
+	.string	"libcrypt_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x2b3
+	.string	"libcrypt_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x2b4
+	.string	"libcrypt_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x2b5
+	.string	"libcrypt_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x2b6
+	.string	"libcrypt_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x2b7
+	.string	"libcrypt_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x2b8
+	.string	"libcrypt_hidden_data_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x2c4
+	.string	"libpthread_hidden_proto(name,attrs...) "
+	.byte	0x1
+	.uleb128 0x2c5
+	.string	"libpthread_hidden_def(name) "
+	.byte	0x1
+	.uleb128 0x2c6
+	.string	"libpthread_hidden_weak(name) "
+	.byte	0x1
+	.uleb128 0x2c7
+	.string	"libpthread_hidden_ver(local,name) "
+	.byte	0x1
+	.uleb128 0x2c8
+	.string	"libpthread_hidden_data_def(name) "
+	.byte	0x1
+	.uleb128 0x2c9
+	.string	"libpthread_hidden_data_weak(name) "
+	.byte	0x1
+	.uleb128 0x2ca
+	.string	"libpthread_hidden_data_ver(local,name) "
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x5
+	.string	"TST_FUNCTION mbrlen"
+	.byte	0x3
+	.uleb128 0x8
+	.file 4 "tsp_common.c"
+	.uleb128 0x4
+	.byte	0x1
+	.uleb128 0x7
+	.string	"TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func)"
+	.byte	0x1
+	.uleb128 0x8
+	.string	"_TST_FUNCTION_CALL(func) tst ##_ ## func"
+	.byte	0x3
+	.uleb128 0xb
+	.file 5 "../../include/stdio.h"
+	.uleb128 0x5
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"_STDIO_H 1"
+	.byte	0x3
+	.uleb128 0x1d
+	.file 6 "../../include/features.h"
+	.uleb128 0x6
+	.byte	0x1
+	.uleb128 0x14
+	.string	"_FEATURES_H 1"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"__UCLIBC__ 1"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"__need_uClibc_config_h "
+	.byte	0x3
+	.uleb128 0x24
+	.file 7 "../../include/bits/uClibc_config.h"
+	.uleb128 0x7
+	.byte	0x1
+	.uleb128 0xc
+	.string	"__UCLIBC_MAJOR__ 0"
+	.byte	0x1
+	.uleb128 0xd
+	.string	"__UCLIBC_MINOR__ 9"
+	.byte	0x1
+	.uleb128 0xe
+	.string	"__UCLIBC_SUBLEVEL__ 29"
+	.byte	0x2
+	.uleb128 0xf
+	.string	"__TARGET_alpha__"
+	.byte	0x2
+	.uleb128 0x10
+	.string	"__TARGET_arm__"
+	.byte	0x2
+	.uleb128 0x11
+	.string	"__TARGET_bfin__"
+	.byte	0x2
+	.uleb128 0x12
+	.string	"__TARGET_cris__"
+	.byte	0x2
+	.uleb128 0x13
+	.string	"__TARGET_e1__"
+	.byte	0x2
+	.uleb128 0x14
+	.string	"__TARGET_frv__"
+	.byte	0x2
+	.uleb128 0x15
+	.string	"__TARGET_h8300__"
+	.byte	0x2
+	.uleb128 0x16
+	.string	"__TARGET_hppa__"
+	.byte	0x2
+	.uleb128 0x17
+	.string	"__TARGET_i386__"
+	.byte	0x2
+	.uleb128 0x18
+	.string	"__TARGET_i960__"
+	.byte	0x2
+	.uleb128 0x19
+	.string	"__TARGET_ia64__"
+	.byte	0x2
+	.uleb128 0x1a
+	.string	"__TARGET_m68k__"
+	.byte	0x2
+	.uleb128 0x1b
+	.string	"__TARGET_microblaze__"
+	.byte	0x2
+	.uleb128 0x1c
+	.string	"__TARGET_mips__"
+	.byte	0x2
+	.uleb128 0x1d
+	.string	"__TARGET_nios__"
+	.byte	0x2
+	.uleb128 0x1e
+	.string	"__TARGET_nios2__"
+	.byte	0x2
+	.uleb128 0x1f
+	.string	"__TARGET_powerpc__"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__TARGET_sh__ 1"
+	.byte	0x2
+	.uleb128 0x21
+	.string	"__TARGET_sh64__"
+	.byte	0x2
+	.uleb128 0x22
+	.string	"__TARGET_sparc__"
+	.byte	0x2
+	.uleb128 0x23
+	.string	"__TARGET_v850__"
+	.byte	0x2
+	.uleb128 0x24
+	.string	"__TARGET_vax__"
+	.byte	0x2
+	.uleb128 0x25
+	.string	"__TARGET_x86_64__"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__TARGET_ARCH__ \"sh\""
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"__FORCE_OPTIONS_FOR_ARCH__ 1"
+	.byte	0x2
+	.uleb128 0x2c
+	.string	"__CONFIG_SH2A__"
+	.byte	0x2
+	.uleb128 0x2d
+	.string	"__CONFIG_SH2__"
+	.byte	0x2
+	.uleb128 0x2e
+	.string	"__CONFIG_SH3__"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"__CONFIG_SH4__ 1"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"__ARCH_HAS_BWD_MEMCPY__ 1"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"__TARGET_SUBARCH__ \"sh4\""
+	.byte	0x1
+	.uleb128 0x36
+	.string	"__ARCH_ANY_ENDIAN__ 1"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"__ARCH_LITTLE_ENDIAN__ 1"
+	.byte	0x2
+	.uleb128 0x38
+	.string	"__ARCH_WANTS_BIG_ENDIAN__"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"__ARCH_WANTS_LITTLE_ENDIAN__ 1"
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"__ARCH_HAS_MMU__ 1"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"__ARCH_USE_MMU__ 1"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"__UCLIBC_HAS_FLOATS__ 1"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"__UCLIBC_HAS_FPU__ 1"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"__DO_C99_MATH__ 1"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"__KERNEL_HEADERS__ \"/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include\""
+	.byte	0x1
+	.uleb128 0x40
+	.string	"__HAVE_DOT_CONFIG__ 1"
+	.byte	0x2
+	.uleb128 0x45
+	.string	"__HAVE_NO_PIC__"
+	.byte	0x2
+	.uleb128 0x46
+	.string	"__DOPIC__"
+	.byte	0x2
+	.uleb128 0x47
+	.string	"__HAVE_NO_SHARED__"
+	.byte	0x2
+	.uleb128 0x48
+	.string	"__ARCH_HAS_NO_LDSO__"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"__HAVE_SHARED__ 1"
+	.byte	0x1
+	.uleb128 0x4a
+	.string	"__FORCE_SHAREABLE_TEXT_SEGMENTS__ 1"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"__LDSO_LDD_SUPPORT__ 1"
+	.byte	0x1
+	.uleb128 0x4c
+	.string	"__LDSO_CACHE_SUPPORT__ 1"
+	.byte	0x2
+	.uleb128 0x4d
+	.string	"__LDSO_PRELOAD_FILE_SUPPORT__"
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"__LDSO_BASE_FILENAME__ \"ld.so\""
+	.byte	0x2
+	.uleb128 0x4f
+	.string	"__UCLIBC_STATIC_LDCONFIG__"
+	.byte	0x1
+	.uleb128 0x50
+	.string	"__LDSO_RUNPATH__ 1"
+	.byte	0x1
+	.uleb128 0x51
+	.string	"__UCLIBC_CTOR_DTOR__ 1"
+	.byte	0x1
+	.uleb128 0x52
+	.string	"__LDSO_GNU_HASH_SUPPORT__ 1"
+	.byte	0x2
+	.uleb128 0x53
+	.string	"__HAS_NO_THREADS__"
+	.byte	0x1
+	.uleb128 0x54
+	.string	"__UCLIBC_HAS_THREADS__ 1"
+	.byte	0x1
+	.uleb128 0x55
+	.string	"__UCLIBC_HAS_THREADS_NATIVE__ 1"
+	.byte	0x1
+	.uleb128 0x56
+	.string	"__PTHREADS_DEBUG_SUPPORT__ 1"
+	.byte	0x2
+	.uleb128 0x57
+	.string	"__LINUXTHREADS_OLD__"
+	.byte	0x1
+	.uleb128 0x58
+	.string	"__UCLIBC_HAS_LFS__ 1"
+	.byte	0x2
+	.uleb128 0x59
+	.string	"__MALLOC__"
+	.byte	0x2
+	.uleb128 0x5a
+	.string	"__MALLOC_SIMPLE__"
+	.byte	0x1
+	.uleb128 0x5b
+	.string	"__MALLOC_STANDARD__ 1"
+	.byte	0x2
+	.uleb128 0x5c
+	.string	"__MALLOC_GLIBC_COMPAT__"
+	.byte	0x2
+	.uleb128 0x5d
+	.string	"__UCLIBC_DYNAMIC_ATEXIT__"
+	.byte	0x1
+	.uleb128 0x5e
+	.string	"__COMPAT_ATEXIT__ 1"
+	.byte	0x1
+	.uleb128 0x5f
+	.string	"__UCLIBC_SUSV3_LEGACY__ 1"
+	.byte	0x2
+	.uleb128 0x60
+	.string	"__UCLIBC_SUSV3_LEGACY_MACROS__"
+	.byte	0x1
+	.uleb128 0x61
+	.string	"__UCLIBC_HAS_SHADOW__ 1"
+	.byte	0x2
+	.uleb128 0x62
+	.string	"__UCLIBC_HAS_PROGRAM_INVOCATION_NAME__"
+	.byte	0x1
+	.uleb128 0x63
+	.string	"__UCLIBC_HAS___PROGNAME__ 1"
+	.byte	0x1
+	.uleb128 0x64
+	.string	"__UNIX98PTY_ONLY__ 1"
+	.byte	0x1
+	.uleb128 0x65
+	.string	"__ASSUME_DEVPTS__ 1"
+	.byte	0x1
+	.uleb128 0x66
+	.string	"__UCLIBC_HAS_TM_EXTENSIONS__ 1"
+	.byte	0x1
+	.uleb128 0x67
+	.string	"__UCLIBC_HAS_TZ_CACHING__ 1"
+	.byte	0x1
+	.uleb128 0x68
+	.string	"__UCLIBC_HAS_TZ_FILE__ 1"
+	.byte	0x1
+	.uleb128 0x69
+	.string	"__UCLIBC_HAS_TZ_FILE_READ_MANY__ 1"
+	.byte	0x1
+	.uleb128 0x6a
+	.string	"__UCLIBC_TZ_FILE_PATH__ \"/etc/TZ\""
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"__UCLIBC_HAS_IPV6__ 1"
+	.byte	0x1
+	.uleb128 0x70
+	.string	"__UCLIBC_HAS_RPC__ 1"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"__UCLIBC_HAS_FULL_RPC__ 1"
+	.byte	0x1
+	.uleb128 0x72
+	.string	"__UCLIBC_HAS_REENTRANT_RPC__ 1"
+	.byte	0x2
+	.uleb128 0x73
+	.string	"__UCLIBC_USE_NETLINK__"
+	.byte	0x1
+	.uleb128 0x78
+	.string	"__UCLIBC_HAS_STRING_GENERIC_OPT__ 1"
+	.byte	0x1
+	.uleb128 0x79
+	.string	"__UCLIBC_HAS_STRING_ARCH_OPT__ 1"
+	.byte	0x1
+	.uleb128 0x7a
+	.string	"__UCLIBC_HAS_CTYPE_TABLES__ 1"
+	.byte	0x1
+	.uleb128 0x7b
+	.string	"__UCLIBC_HAS_CTYPE_SIGNED__ 1"
+	.byte	0x1
+	.uleb128 0x7c
+	.string	"__UCLIBC_HAS_CTYPE_UNSAFE__ 1"
+	.byte	0x2
+	.uleb128 0x7d
+	.string	"__UCLIBC_HAS_CTYPE_CHECKED__"
+	.byte	0x2
+	.uleb128 0x7e
+	.string	"__UCLIBC_HAS_CTYPE_ENFORCED__"
+	.byte	0x1
+	.uleb128 0x7f
+	.string	"__UCLIBC_HAS_WCHAR__ 1"
+	.byte	0x1
+	.uleb128 0x80
+	.string	"__UCLIBC_HAS_LOCALE__ 1"
+	.byte	0x2
+	.uleb128 0x81
+	.string	"__UCLIBC_PREGENERATED_LOCALE_DATA__"
+	.byte	0x2
+	.uleb128 0x82
+	.string	"__UCLIBC_HAS_XLOCALE__"
+	.byte	0x2
+	.uleb128 0x83
+	.string	"__UCLIBC_HAS_HEXADECIMAL_FLOATS__"
+	.byte	0x2
+	.uleb128 0x84
+	.string	"__UCLIBC_HAS_GLIBC_DIGIT_GROUPING__"
+	.byte	0x2
+	.uleb128 0x85
+	.string	"__UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__"
+	.byte	0x1
+	.uleb128 0x86
+	.string	"__UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9"
+	.byte	0x2
+	.uleb128 0x87
+	.string	"__UCLIBC_HAS_SCANF_GLIBC_A_FLAG__"
+	.byte	0x2
+	.uleb128 0x88
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_NONE__"
+	.byte	0x2
+	.uleb128 0x89
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_256__"
+	.byte	0x2
+	.uleb128 0x8a
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_512__"
+	.byte	0x2
+	.uleb128 0x8b
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_1024__"
+	.byte	0x2
+	.uleb128 0x8c
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_2048__"
+	.byte	0x1
+	.uleb128 0x8d
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_4096__ 1"
+	.byte	0x2
+	.uleb128 0x8e
+	.string	"__UCLIBC_HAS_STDIO_BUFSIZ_8192__"
+	.byte	0x1
+	.uleb128 0x8f
+	.string	"__UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1"
+	.byte	0x2
+	.uleb128 0x90
+	.string	"__UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__"
+	.byte	0x2
+	.uleb128 0x91
+	.string	"__UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__"
+	.byte	0x2
+	.uleb128 0x92
+	.string	"__UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__"
+	.byte	0x1
+	.uleb128 0x93
+	.string	"__UCLIBC_HAS_STDIO_GETC_MACRO__ 1"
+	.byte	0x1
+	.uleb128 0x94
+	.string	"__UCLIBC_HAS_STDIO_PUTC_MACRO__ 1"
+	.byte	0x1
+	.uleb128 0x95
+	.string	"__UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1"
+	.byte	0x2
+	.uleb128 0x96
+	.string	"__UCLIBC_HAS_FOPEN_LARGEFILE_MODE__"
+	.byte	0x2
+	.uleb128 0x97
+	.string	"__UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__"
+	.byte	0x2
+	.uleb128 0x98
+	.string	"__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__"
+	.byte	0x1
+	.uleb128 0x99
+	.string	"__UCLIBC_HAS_PRINTF_M_SPEC__ 1"
+	.byte	0x1
+	.uleb128 0x9a
+	.string	"__UCLIBC_HAS_ERRNO_MESSAGES__ 1"
+	.byte	0x1
+	.uleb128 0x9b
+	.string	"__UCLIBC_HAS_SYS_ERRLIST__ 1"
+	.byte	0x1
+	.uleb128 0x9c
+	.string	"__UCLIBC_HAS_SIGNUM_MESSAGES__ 1"
+	.byte	0x2
+	.uleb128 0x9d
+	.string	"__UCLIBC_HAS_SYS_SIGLIST__"
+	.byte	0x2
+	.uleb128 0x9e
+	.string	"__UCLIBC_HAS_GETTEXT_AWARENESS__"
+	.byte	0x1
+	.uleb128 0x9f
+	.string	"__UCLIBC_HAS_GNU_GETOPT__ 1"
+	.byte	0x1
+	.uleb128 0xa0
+	.string	"__UCLIBC_HAS_STDIO_FUTEXES__ 1"
+	.byte	0x1
+	.uleb128 0xa1
+	.string	"__UCLIBC_HAS_GNU_GETSUBOPT__ 1"
+	.byte	0x1
+	.uleb128 0xa6
+	.string	"__UCLIBC_HAS_REGEX__ 1"
+	.byte	0x2
+	.uleb128 0xa7
+	.string	"__UCLIBC_HAS_REGEX_OLD__"
+	.byte	0x1
+	.uleb128 0xa8
+	.string	"__UCLIBC_HAS_FNMATCH__ 1"
+	.byte	0x1
+	.uleb128 0xa9
+	.string	"__UCLIBC_HAS_FNMATCH_OLD__ 1"
+	.byte	0x2
+	.uleb128 0xaa
+	.string	"__UCLIBC_HAS_WORDEXP__"
+	.byte	0x2
+	.uleb128 0xab
+	.string	"__UCLIBC_HAS_FTW__"
+	.byte	0x1
+	.uleb128 0xac
+	.string	"__UCLIBC_HAS_GLOB__ 1"
+	.byte	0x1
+	.uleb128 0xad
+	.string	"__UCLIBC_HAS_GNU_GLOB__ 1"
+	.byte	0x1
+	.uleb128 0xb2
+	.string	"__SHARED_LIB_LOADER_PREFIX__ \"/lib\""
+	.byte	0x1
+	.uleb128 0xb3
+	.string	"__RUNTIME_PREFIX__ \"/\""
+	.byte	0x1
+	.uleb128 0xb4
+	.string	"__DEVEL_PREFIX__ \"/usr\""
+	.byte	0x2
+	.uleb128 0xb9
+	.string	"__UCLIBC_HAS_ARC4RANDOM__"
+	.byte	0x2
+	.uleb128 0xba
+	.string	"__HAVE_NO_SSP__"
+	.byte	0x2
+	.uleb128 0xbb
+	.string	"__UCLIBC_HAS_SSP__"
+	.byte	0x1
+	.uleb128 0xbc
+	.string	"__UCLIBC_BUILD_RELRO__ 1"
+	.byte	0x2
+	.uleb128 0xbd
+	.string	"__UCLIBC_BUILD_NOW__"
+	.byte	0x1
+	.uleb128 0xbe
+	.string	"__UCLIBC_BUILD_NOEXECSTACK__ 1"
+	.byte	0x1
+	.uleb128 0xc3
+	.string	"__CROSS_COMPILER_PREFIX__ \"sh4-linux-uclibc-\""
+	.byte	0x1
+	.uleb128 0xc4
+	.string	"__UCLIBC_EXTRA_CFLAGS__ \"\""
+	.byte	0x1
+	.uleb128 0xc5
+	.string	"__DODEBUG__ 1"
+	.byte	0x1
+	.uleb128 0xc6
+	.string	"__DOASSERTS__ 1"
+	.byte	0x1
+	.uleb128 0xc7
+	.string	"__SUPPORT_LD_DEBUG__ 1"
+	.byte	0x1
+	.uleb128 0xc8
+	.string	"__SUPPORT_LD_DEBUG_EARLY__ 1"
+	.byte	0x2
+	.uleb128 0xc9
+	.string	"__UCLIBC_MALLOC_DEBUGGING__"
+	.byte	0x1
+	.uleb128 0xca
+	.string	"__WARNINGS__ \"-Wall\""
+	.byte	0x1
+	.uleb128 0xcb
+	.string	"__EXTRA_WARNINGS__ 1"
+	.byte	0x2
+	.uleb128 0xcc
+	.string	"__DOMULTI__"
+	.byte	0x1
+	.uleb128 0xcd
+	.string	"__UCLIBC_MJN3_ONLY__ 1"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x24
+	.string	"__need_uClibc_config_h"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"__OPTIMIZE_SIZE__ 1"
+	.byte	0x2
+	.uleb128 0x71
+	.string	"__USE_ISOC99"
+	.byte	0x2
+	.uleb128 0x72
+	.string	"__USE_POSIX"
+	.byte	0x2
+	.uleb128 0x73
+	.string	"__USE_POSIX2"
+	.byte	0x2
+	.uleb128 0x74
+	.string	"__USE_POSIX199309"
+	.byte	0x2
+	.uleb128 0x75
+	.string	"__USE_POSIX199506"
+	.byte	0x2
+	.uleb128 0x76
+	.string	"__USE_XOPEN"
+	.byte	0x2
+	.uleb128 0x77
+	.string	"__USE_XOPEN_EXTENDED"
+	.byte	0x2
+	.uleb128 0x78
+	.string	"__USE_UNIX98"
+	.byte	0x2
+	.uleb128 0x79
+	.string	"__USE_XOPEN2K"
+	.byte	0x2
+	.uleb128 0x7a
+	.string	"__USE_LARGEFILE"
+	.byte	0x2
+	.uleb128 0x7b
+	.string	"__USE_LARGEFILE64"
+	.byte	0x2
+	.uleb128 0x7c
+	.string	"__USE_FILE_OFFSET64"
+	.byte	0x2
+	.uleb128 0x7d
+	.string	"__USE_BSD"
+	.byte	0x2
+	.uleb128 0x7e
+	.string	"__USE_SVID"
+	.byte	0x2
+	.uleb128 0x7f
+	.string	"__USE_MISC"
+	.byte	0x2
+	.uleb128 0x80
+	.string	"__USE_ATFILE"
+	.byte	0x2
+	.uleb128 0x81
+	.string	"__USE_GNU"
+	.byte	0x2
+	.uleb128 0x82
+	.string	"__USE_REENTRANT"
+	.byte	0x2
+	.uleb128 0x83
+	.string	"__USE_FORTIFY_LEVEL"
+	.byte	0x2
+	.uleb128 0x84
+	.string	"__FAVOR_BSD"
+	.byte	0x2
+	.uleb128 0x85
+	.string	"__KERNEL_STRICT_NAMES"
+	.byte	0x1
+	.uleb128 0x8a
+	.string	"__KERNEL_STRICT_NAMES "
+	.byte	0x1
+	.uleb128 0x8e
+	.string	"__USE_ANSI 1"
+	.byte	0x1
+	.uleb128 0x98
+	.string	"__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))"
+	.byte	0x2
+	.uleb128 0xa9
+	.string	"_ISOC99_SOURCE"
+	.byte	0x1
+	.uleb128 0xaa
+	.string	"_ISOC99_SOURCE 1"
+	.byte	0x2
+	.uleb128 0xab
+	.string	"_POSIX_SOURCE"
+	.byte	0x1
+	.uleb128 0xac
+	.string	"_POSIX_SOURCE 1"
+	.byte	0x2
+	.uleb128 0xad
+	.string	"_POSIX_C_SOURCE"
+	.byte	0x1
+	.uleb128 0xae
+	.string	"_POSIX_C_SOURCE 199506L"
+	.byte	0x2
+	.uleb128 0xaf
+	.string	"_XOPEN_SOURCE"
+	.byte	0x1
+	.uleb128 0xb0
+	.string	"_XOPEN_SOURCE 600"
+	.byte	0x2
+	.uleb128 0xb1
+	.string	"_XOPEN_SOURCE_EXTENDED"
+	.byte	0x1
+	.uleb128 0xb2
+	.string	"_XOPEN_SOURCE_EXTENDED 1"
+	.byte	0x2
+	.uleb128 0xb4
+	.string	"_LARGEFILE64_SOURCE"
+	.byte	0x1
+	.uleb128 0xb5
+	.string	"_LARGEFILE64_SOURCE 1"
+	.byte	0x2
+	.uleb128 0xb7
+	.string	"_BSD_SOURCE"
+	.byte	0x1
+	.uleb128 0xb8
+	.string	"_BSD_SOURCE 1"
+	.byte	0x2
+	.uleb128 0xb9
+	.string	"_SVID_SOURCE"
+	.byte	0x1
+	.uleb128 0xba
+	.string	"_SVID_SOURCE 1"
+	.byte	0x2
+	.uleb128 0xbb
+	.string	"_ATFILE_SOURCE"
+	.byte	0x1
+	.uleb128 0xbc
+	.string	"_ATFILE_SOURCE 1"
+	.byte	0x1
+	.uleb128 0xcf
+	.string	"__USE_ISOC99 1"
+	.byte	0x1
+	.uleb128 0xdf
+	.string	"__USE_POSIX 1"
+	.byte	0x1
+	.uleb128 0xe3
+	.string	"__USE_POSIX2 1"
+	.byte	0x1
+	.uleb128 0xe7
+	.string	"__USE_POSIX199309 1"
+	.byte	0x1
+	.uleb128 0xeb
+	.string	"__USE_POSIX199506 1"
+	.byte	0x1
+	.uleb128 0xf3
+	.string	"__USE_XOPEN 1"
+	.byte	0x1
+	.uleb128 0xf5
+	.string	"__USE_XOPEN_EXTENDED 1"
+	.byte	0x1
+	.uleb128 0xf6
+	.string	"__USE_UNIX98 1"
+	.byte	0x2
+	.uleb128 0xf7
+	.string	"_LARGEFILE_SOURCE"
+	.byte	0x1
+	.uleb128 0xf8
+	.string	"_LARGEFILE_SOURCE 1"
+	.byte	0x1
+	.uleb128 0xfa
+	.string	"__USE_XOPEN2K 1"
+	.byte	0x2
+	.uleb128 0xfb
+	.string	"__USE_ISOC99"
+	.byte	0x1
+	.uleb128 0xfc
+	.string	"__USE_ISOC99 1"
+	.byte	0x1
+	.uleb128 0x106
+	.string	"__USE_LARGEFILE 1"
+	.byte	0x1
+	.uleb128 0x10a
+	.string	"__USE_LARGEFILE64 1"
+	.byte	0x1
+	.uleb128 0x112
+	.string	"__USE_MISC 1"
+	.byte	0x1
+	.uleb128 0x116
+	.string	"__USE_BSD 1"
+	.byte	0x1
+	.uleb128 0x11a
+	.string	"__USE_SVID 1"
+	.byte	0x1
+	.uleb128 0x11e
+	.string	"__USE_ATFILE 1"
+	.byte	0x1
+	.uleb128 0x122
+	.string	"__USE_GNU 1"
+	.byte	0x2
+	.uleb128 0x12a
+	.string	"_FORTIFY_SOURCE"
+	.byte	0x1
+	.uleb128 0x133
+	.string	"__USE_FORTIFY_LEVEL 0"
+	.byte	0x1
+	.uleb128 0x137
+	.string	"__STDC_IEC_559__ 1"
+	.byte	0x1
+	.uleb128 0x138
+	.string	"__STDC_IEC_559_COMPLEX__ 1"
+	.byte	0x1
+	.uleb128 0x13c
+	.string	"__STDC_ISO_10646__ 200009L"
+	.byte	0x1
+	.uleb128 0x154
+	.string	"__GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))"
+	.byte	0x3
+	.uleb128 0x165
+	.file 8 "../../include/sys/cdefs.h"
+	.uleb128 0x8
+	.byte	0x1
+	.uleb128 0x14
+	.string	"_SYS_CDEFS_H 1"
+	.byte	0x2
+	.uleb128 0x23
+	.string	"__P"
+	.byte	0x2
+	.uleb128 0x24
+	.string	"__PMT"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"__THROW __attribute__ ((__nothrow__))"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"__NTH(fct) __attribute__ ((__nothrow__)) fct"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"__P(args) args"
+	.byte	0x1
+	.uleb128 0x4a
+	.string	"__PMT(args) args"
+	.byte	0x1
+	.uleb128 0x4f
+	.string	"__CONCAT(x,y) x ## y"
+	.byte	0x1
+	.uleb128 0x50
+	.string	"__STRING(x) #x"
+	.byte	0x1
+	.uleb128 0x53
+	.string	"__ptr_t void *"
+	.byte	0x1
+	.uleb128 0x54
+	.string	"__long_double_t long double"
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"__BEGIN_DECLS "
+	.byte	0x1
+	.uleb128 0x5d
+	.string	"__END_DECLS "
+	.byte	0x1
+	.uleb128 0x71
+	.string	"__BEGIN_NAMESPACE_STD "
+	.byte	0x1
+	.uleb128 0x72
+	.string	"__END_NAMESPACE_STD "
+	.byte	0x1
+	.uleb128 0x73
+	.string	"__USING_NAMESPACE_STD(name) "
+	.byte	0x1
+	.uleb128 0x74
+	.string	"__BEGIN_NAMESPACE_C99 "
+	.byte	0x1
+	.uleb128 0x75
+	.string	"__END_NAMESPACE_C99 "
+	.byte	0x1
+	.uleb128 0x76
+	.string	"__USING_NAMESPACE_C99(name) "
+	.byte	0x1
+	.uleb128 0x7c
+	.string	"__bounded "
+	.byte	0x1
+	.uleb128 0x7d
+	.string	"__unbounded "
+	.byte	0x1
+	.uleb128 0x7e
+	.string	"__ptrvalue "
+	.byte	0x1
+	.uleb128 0x83
+	.string	"__bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)"
+	.byte	0x1
+	.uleb128 0x84
+	.string	"__bos0(ptr) __builtin_object_size (ptr, 0)"
+	.byte	0x1
+	.uleb128 0x85
+	.string	"__warndecl(name,msg) extern void name (void)"
+	.byte	0x1
+	.uleb128 0x8b
+	.string	"__flexarr []"
+	.byte	0x1
+	.uleb128 0xa6
+	.string	"__REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))"
+	.byte	0x1
+	.uleb128 0xab
+	.string	"__REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW"
+	.byte	0x1
+	.uleb128 0xae
+	.string	"__ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)"
+	.byte	0x1
+	.uleb128 0xaf
+	.string	"__ASMNAME2(prefix,cname) __STRING (prefix) cname"
+	.byte	0x1
+	.uleb128 0xc4
+	.string	"__attribute_malloc__ __attribute__ ((__malloc__))"
+	.byte	0x1
+	.uleb128 0xcd
+	.string	"__attribute_pure__ __attribute__ ((__pure__))"
+	.byte	0x1
+	.uleb128 0xd6
+	.string	"__attribute_used__ __attribute__ ((__used__))"
+	.byte	0x1
+	.uleb128 0xd7
+	.string	"__attribute_noinline__ __attribute__ ((__noinline__))"
+	.byte	0x1
+	.uleb128 0xdf
+	.string	"__attribute_deprecated__ __attribute__ ((__deprecated__))"
+	.byte	0x1
+	.uleb128 0xeb
+	.string	"__attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))"
+	.byte	0x1
+	.uleb128 0xf5
+	.string	"__attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))"
+	.byte	0x1
+	.uleb128 0xfe
+	.string	"__nonnull(params) __attribute__ ((__nonnull__ params))"
+	.byte	0x1
+	.uleb128 0x106
+	.string	"__attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))"
+	.byte	0x1
+	.uleb128 0x10f
+	.string	"__wur "
+	.byte	0x1
+	.uleb128 0x114
+	.string	"__always_inline __inline __attribute__ ((__always_inline__))"
+	.byte	0x1
+	.uleb128 0x12a
+	.string	"__restrict_arr __restrict"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x18c
+	.string	"_LARGEFILE_SOURCE"
+	.byte	0x2
+	.uleb128 0x18d
+	.string	"_LARGEFILE64_SOURCE"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"_FILE_OFFSET_BITS"
+	.byte	0x2
+	.uleb128 0x18f
+	.string	"__USE_LARGEFILE"
+	.byte	0x2
+	.uleb128 0x190
+	.string	"__USE_LARGEFILE64"
+	.byte	0x2
+	.uleb128 0x191
+	.string	"__USE_FILE_OFFSET64"
+	.byte	0x1
+	.uleb128 0x192
+	.string	"_LARGEFILE_SOURCE 1"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"_LARGEFILE64_SOURCE 1"
+	.byte	0x1
+	.uleb128 0x194
+	.string	"__USE_LARGEFILE 1"
+	.byte	0x1
+	.uleb128 0x195
+	.string	"__USE_LARGEFILE64 1"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"_ATFILE_SOURCE"
+	.byte	0x2
+	.uleb128 0x19a
+	.string	"__USE_ATFILE"
+	.byte	0x3
+	.uleb128 0x19e
+	.file 9 "../../include/libc-internal.h"
+	.uleb128 0x9
+	.byte	0x1
+	.uleb128 0x14
+	.string	"_LIBC_INTERNAL_H 1"
+	.byte	0x3
+	.uleb128 0x17
+	.uleb128 0x6
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x19
+	.string	"attribute_relro __attribute__ ((section (\".data.rel.ro\")))"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"attribute_tls_model_ie __attribute__ ((tls_model (\"initial-exec\")))"
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"__need_size_t "
+	.byte	0x3
+	.uleb128 0x2d
+	.file 10 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h"
+	.uleb128 0xa
+	.byte	0x1
+	.uleb128 0xbd
+	.string	"__size_t__ "
+	.byte	0x1
+	.uleb128 0xbe
+	.string	"__SIZE_T__ "
+	.byte	0x1
+	.uleb128 0xbf
+	.string	"_SIZE_T "
+	.byte	0x1
+	.uleb128 0xc0
+	.string	"_SYS_SIZE_T_H "
+	.byte	0x1
+	.uleb128 0xc1
+	.string	"_T_SIZE_ "
+	.byte	0x1
+	.uleb128 0xc2
+	.string	"_T_SIZE "
+	.byte	0x1
+	.uleb128 0xc3
+	.string	"__SIZE_T "
+	.byte	0x1
+	.uleb128 0xc4
+	.string	"_SIZE_T_ "
+	.byte	0x1
+	.uleb128 0xc5
+	.string	"_BSD_SIZE_T_ "
+	.byte	0x1
+	.uleb128 0xc6
+	.string	"_SIZE_T_DEFINED_ "
+	.byte	0x1
+	.uleb128 0xc7
+	.string	"_SIZE_T_DEFINED "
+	.byte	0x1
+	.uleb128 0xc8
+	.string	"_BSD_SIZE_T_DEFINED_ "
+	.byte	0x1
+	.uleb128 0xc9
+	.string	"_SIZE_T_DECLARED "
+	.byte	0x1
+	.uleb128 0xca
+	.string	"___int_size_t_h "
+	.byte	0x1
+	.uleb128 0xcb
+	.string	"_GCC_SIZE_T "
+	.byte	0x1
+	.uleb128 0xcc
+	.string	"_SIZET_ "
+	.byte	0x1
+	.uleb128 0xd0
+	.string	"__size_t "
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x46
+	.file 11 "../../include/bits/stackinfo.h"
+	.uleb128 0xb
+	.byte	0x1
+	.uleb128 0x17
+	.string	"_STACKINFO_H 1"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"_STACK_GROWS_DOWN 1"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x47
+	.string	"extend_alloca(buf,len,newlen) (__typeof (buf)) ({ size_t __newlen = (newlen); char *__newbuf = alloca (__newlen); if (__newbuf + __newlen == (char *) buf) len += __newlen; else len = __newlen; __newbuf; })"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x1a6
+	.string	"__user "
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__need_size_t "
+	.byte	0x1
+	.uleb128 0x21
+	.string	"__need_NULL "
+	.byte	0x3
+	.uleb128 0x23
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x25
+	.file 12 "../../include/bits/types.h"
+	.uleb128 0xc
+	.byte	0x1
+	.uleb128 0x19
+	.string	"_BITS_TYPES_H 1"
+	.byte	0x3
+	.uleb128 0x1d
+	.file 13 "../../include/bits/wordsize.h"
+	.uleb128 0xd
+	.byte	0x1
+	.uleb128 0x13
+	.string	"__WORDSIZE 32"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"__need_size_t "
+	.byte	0x3
+	.uleb128 0x20
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x21
+	.file 14 "../../include/bits/kernel_types.h"
+	.uleb128 0xe
+	.byte	0x1
+	.uleb128 0x8
+	.string	"__ASM_SH_POSIX_TYPES_H "
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x67
+	.string	"__S16_TYPE short int"
+	.byte	0x1
+	.uleb128 0x68
+	.string	"__U16_TYPE unsigned short int"
+	.byte	0x1
+	.uleb128 0x69
+	.string	"__S32_TYPE int"
+	.byte	0x1
+	.uleb128 0x6a
+	.string	"__U32_TYPE unsigned int"
+	.byte	0x1
+	.uleb128 0x6b
+	.string	"__SLONGWORD_TYPE long int"
+	.byte	0x1
+	.uleb128 0x6c
+	.string	"__ULONGWORD_TYPE unsigned long int"
+	.byte	0x1
+	.uleb128 0x6e
+	.string	"__SQUAD_TYPE __quad_t"
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"__UQUAD_TYPE __u_quad_t"
+	.byte	0x1
+	.uleb128 0x70
+	.string	"__SWORD_TYPE int"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"__UWORD_TYPE unsigned int"
+	.byte	0x1
+	.uleb128 0x72
+	.string	"__SLONG32_TYPE long int"
+	.byte	0x1
+	.uleb128 0x73
+	.string	"__ULONG32_TYPE unsigned long int"
+	.byte	0x1
+	.uleb128 0x74
+	.string	"__S64_TYPE __quad_t"
+	.byte	0x1
+	.uleb128 0x75
+	.string	"__U64_TYPE __u_quad_t"
+	.byte	0x1
+	.uleb128 0x78
+	.string	"__STD_TYPE __extension__ typedef"
+	.byte	0x3
+	.uleb128 0x88
+	.file 15 "../../include/bits/typesizes.h"
+	.uleb128 0xf
+	.byte	0x1
+	.uleb128 0x19
+	.string	"_BITS_TYPESIZES_H 1"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"__DEV_T_TYPE __UQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"__UID_T_TYPE __U32_TYPE"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__GID_T_TYPE __U32_TYPE"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"__INO_T_TYPE __ULONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"__INO64_T_TYPE __UQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"__MODE_T_TYPE __U32_TYPE"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"__NLINK_T_TYPE __UWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__OFF_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"__OFF64_T_TYPE __SQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"__PID_T_TYPE __S32_TYPE"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"__RLIM_T_TYPE __ULONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"__RLIM64_T_TYPE __UQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__BLKCNT_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"__BLKCNT64_T_TYPE __SQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"__FSBLKCNT_T_TYPE __ULONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"__FSBLKCNT64_T_TYPE __UQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"__FSFILCNT_T_TYPE __ULONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"__FSFILCNT64_T_TYPE __UQUAD_TYPE"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"__ID_T_TYPE __U32_TYPE"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"__CLOCK_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"__TIME_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x33
+	.string	"__USECONDS_T_TYPE __U32_TYPE"
+	.byte	0x1
+	.uleb128 0x34
+	.string	"__SUSECONDS_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"__DADDR_T_TYPE __S32_TYPE"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"__SWBLK_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"__KEY_T_TYPE __S32_TYPE"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"__CLOCKID_T_TYPE __S32_TYPE"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"__TIMER_T_TYPE void *"
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"__BLKSIZE_T_TYPE __SLONGWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"__FSID_T_TYPE struct { int __val[2]; }"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"__SSIZE_T_TYPE __SWORD_TYPE"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"__FD_SETSIZE 1024"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0xc7
+	.string	"__STD_TYPE"
+	.byte	0x3
+	.uleb128 0xcf
+	.file 16 "../../include/bits/pthreadtypes.h"
+	.uleb128 0x10
+	.byte	0x1
+	.uleb128 0x15
+	.string	"_BITS_PTHREADTYPES_H 1"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"__SIZEOF_PTHREAD_ATTR_T 36"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"__SIZEOF_PTHREAD_MUTEX_T 24"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"__SIZEOF_PTHREAD_MUTEXATTR_T 4"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"__SIZEOF_PTHREAD_COND_T 48"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"__SIZEOF_PTHREAD_COND_COMPAT_T 12"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"__SIZEOF_PTHREAD_CONDATTR_T 4"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"__SIZEOF_PTHREAD_RWLOCK_T 32"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"__SIZEOF_PTHREAD_RWLOCKATTR_T 8"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"__SIZEOF_PTHREAD_BARRIER_T 20"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__SIZEOF_PTHREAD_BARRIERATTR_T 4"
+	.byte	0x4
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__need_FILE "
+	.byte	0x1
+	.uleb128 0x26
+	.string	"__need___FILE "
+	.byte	0x1
+	.uleb128 0x36
+	.string	"__FILE_defined 1"
+	.byte	0x2
+	.uleb128 0x38
+	.string	"__need_FILE"
+	.byte	0x1
+	.uleb128 0x40
+	.string	"____FILE_defined 1"
+	.byte	0x2
+	.uleb128 0x42
+	.string	"__need___FILE"
+	.byte	0x2
+	.uleb128 0x46
+	.string	"_STDIO_USES_IOSTREAM"
+	.byte	0x3
+	.uleb128 0x49
+	.file 17 "../../include/bits/uClibc_stdio.h"
+	.uleb128 0x11
+	.byte	0x1
+	.uleb128 0xe
+	.string	"__STDIO_BUFFERS "
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"__STDIO_BUFSIZ 4096"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"__STDIO_BUILTIN_BUF_SIZE 0"
+	.byte	0x1
+	.uleb128 0x33
+	.string	"__STDIO_HAS_OPENLIST 1"
+	.byte	0x2
+	.uleb128 0x3d
+	.string	"__USE_LARGEFILE"
+	.byte	0x2
+	.uleb128 0x3e
+	.string	"__USE_LARGEFILE64"
+	.byte	0x2
+	.uleb128 0x3f
+	.string	"__USE_FILE_OFFSET64"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"__USE_LARGEFILE64 1"
+	.byte	0x1
+	.uleb128 0x50
+	.string	"__need_wchar_t "
+	.byte	0x3
+	.uleb128 0x52
+	.uleb128 0xa
+	.byte	0x1
+	.uleb128 0x109
+	.string	"__wchar_t__ "
+	.byte	0x1
+	.uleb128 0x10a
+	.string	"__WCHAR_T__ "
+	.byte	0x1
+	.uleb128 0x10b
+	.string	"_WCHAR_T "
+	.byte	0x1
+	.uleb128 0x10c
+	.string	"_T_WCHAR_ "
+	.byte	0x1
+	.uleb128 0x10d
+	.string	"_T_WCHAR "
+	.byte	0x1
+	.uleb128 0x10e
+	.string	"__WCHAR_T "
+	.byte	0x1
+	.uleb128 0x10f
+	.string	"_WCHAR_T_ "
+	.byte	0x1
+	.uleb128 0x110
+	.string	"_BSD_WCHAR_T_ "
+	.byte	0x1
+	.uleb128 0x111
+	.string	"_WCHAR_T_DEFINED_ "
+	.byte	0x1
+	.uleb128 0x112
+	.string	"_WCHAR_T_DEFINED "
+	.byte	0x1
+	.uleb128 0x113
+	.string	"_WCHAR_T_H "
+	.byte	0x1
+	.uleb128 0x114
+	.string	"___int_wchar_t_h "
+	.byte	0x1
+	.uleb128 0x115
+	.string	"__INT_WCHAR_T_H "
+	.byte	0x1
+	.uleb128 0x116
+	.string	"_GCC_WCHAR_T "
+	.byte	0x1
+	.uleb128 0x117
+	.string	"_WCHAR_T_DECLARED "
+	.byte	0x2
+	.uleb128 0x124
+	.string	"_BSD_WCHAR_T_"
+	.byte	0x2
+	.uleb128 0x159
+	.string	"__need_wchar_t"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x55
+	.string	"__STDIO_MBSTATE "
+	.byte	0x1
+	.uleb128 0x56
+	.string	"__need_mbstate_t "
+	.byte	0x3
+	.uleb128 0x58
+	.file 18 "../../include/wchar.h"
+	.uleb128 0x12
+	.byte	0x1
+	.uleb128 0x33
+	.string	"__need_wint_t "
+	.byte	0x3
+	.uleb128 0x35
+	.uleb128 0xa
+	.byte	0x1
+	.uleb128 0x15e
+	.string	"_WINT_T "
+	.byte	0x2
+	.uleb128 0x165
+	.string	"__need_wint_t"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x37
+	.file 19 "../../include/bits/wchar.h"
+	.uleb128 0x13
+	.byte	0x1
+	.uleb128 0x15
+	.string	"_BITS_WCHAR_H 1"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"__WCHAR_MIN (-2147483647 - 1)"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"__WCHAR_MAX (2147483647)"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"__mbstate_t_defined 1"
+	.byte	0x2
+	.uleb128 0x62
+	.string	"__need_mbstate_t"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x5f
+	.string	"__STDIO_GETC_MACRO "
+	.byte	0x1
+	.uleb128 0x63
+	.string	"__STDIO_PUTC_MACRO "
+	.byte	0x1
+	.uleb128 0x8a
+	.string	"__STDIO_AUTO_THREADLOCK_VAR int __infunc_user_locking"
+	.byte	0x1
+	.uleb128 0xa5
+	.string	"__STDIO_AUTO_THREADLOCK(__stream) if ((__infunc_user_locking = (__stream)->__user_locking) == 0) { __pthread_mutex_lock(&(__stream)->__lock); }"
+	.byte	0x1
+	.uleb128 0xaa
+	.string	"__STDIO_AUTO_THREADUNLOCK(__stream) if (__infunc_user_locking == 0) { __pthread_mutex_unlock(&(__stream)->__lock); }"
+	.byte	0x1
+	.uleb128 0xaf
+	.string	"__STDIO_SET_USER_LOCKING(__stream) ((__stream)->__user_locking = 1)"
+	.byte	0x1
+	.uleb128 0xb1
+	.string	"__STDIO_ALWAYS_THREADLOCK(__stream) __pthread_mutex_lock(&(__stream)->__lock)"
+	.byte	0x1
+	.uleb128 0xb4
+	.string	"__STDIO_ALWAYS_THREADTRYLOCK(__stream) __pthread_mutex_trylock(&(__stream)->__lock)"
+	.byte	0x1
+	.uleb128 0xb7
+	.string	"__STDIO_ALWAYS_THREADUNLOCK(__stream) __pthread_mutex_unlock(&(__stream)->__lock)"
+	.byte	0x1
+	.uleb128 0xcc
+	.string	"__STDIO_IOFBF 0"
+	.byte	0x1
+	.uleb128 0xcd
+	.string	"__STDIO_IOLBF 1"
+	.byte	0x1
+	.uleb128 0xce
+	.string	"__STDIO_IONBF 2"
+	.byte	0x1
+	.uleb128 0x15b
+	.string	"__MASK_READING 0x0003U"
+	.byte	0x1
+	.uleb128 0x15c
+	.string	"__FLAG_READING 0x0001U"
+	.byte	0x1
+	.uleb128 0x15d
+	.string	"__FLAG_UNGOT 0x0002U"
+	.byte	0x1
+	.uleb128 0x15e
+	.string	"__FLAG_EOF 0x0004U"
+	.byte	0x1
+	.uleb128 0x15f
+	.string	"__FLAG_ERROR 0x0008U"
+	.byte	0x1
+	.uleb128 0x160
+	.string	"__FLAG_WRITEONLY 0x0010U"
+	.byte	0x1
+	.uleb128 0x161
+	.string	"__FLAG_READONLY 0x0020U"
+	.byte	0x1
+	.uleb128 0x162
+	.string	"__FLAG_WRITING 0x0040U"
+	.byte	0x1
+	.uleb128 0x163
+	.string	"__FLAG_NARROW 0x0080U"
+	.byte	0x1
+	.uleb128 0x165
+	.string	"__FLAG_FBF 0x0000U"
+	.byte	0x1
+	.uleb128 0x166
+	.string	"__FLAG_LBF 0x0100U"
+	.byte	0x1
+	.uleb128 0x167
+	.string	"__FLAG_NBF 0x0200U"
+	.byte	0x1
+	.uleb128 0x168
+	.string	"__MASK_BUFMODE 0x0300U"
+	.byte	0x1
+	.uleb128 0x169
+	.string	"__FLAG_APPEND 0x0400U"
+	.byte	0x1
+	.uleb128 0x16a
+	.string	"__FLAG_WIDE 0x0800U"
+	.byte	0x1
+	.uleb128 0x16c
+	.string	"__FLAG_FREEFILE 0x2000U"
+	.byte	0x1
+	.uleb128 0x16d
+	.string	"__FLAG_FREEBUF 0x4000U"
+	.byte	0x1
+	.uleb128 0x16e
+	.string	"__FLAG_LARGEFILE 0x8000U"
+	.byte	0x1
+	.uleb128 0x16f
+	.string	"__FLAG_FAILED_FREOPEN __FLAG_LARGEFILE"
+	.byte	0x1
+	.uleb128 0x19d
+	.string	"__CLEARERR_UNLOCKED(__stream) ((void)((__stream)->__modeflags &= ~(__FLAG_EOF|__FLAG_ERROR)))"
+	.byte	0x1
+	.uleb128 0x19f
+	.string	"__FEOF_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_EOF)"
+	.byte	0x1
+	.uleb128 0x1a0
+	.string	"__FERROR_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_ERROR)"
+	.byte	0x1
+	.uleb128 0x1a3
+	.string	"__CLEARERR(__stream) (clearerr)(__stream)"
+	.byte	0x1
+	.uleb128 0x1a4
+	.string	"__FERROR(__stream) (ferror)(__stream)"
+	.byte	0x1
+	.uleb128 0x1a5
+	.string	"__FEOF(__stream) (feof)(__stream)"
+	.byte	0x1
+	.uleb128 0x1b0
+	.string	"__FGETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))"
+	.byte	0x1
+	.uleb128 0x1b1
+	.string	"__FGETC(__stream) (fgetc)((__stream))"
+	.byte	0x1
+	.uleb128 0x1b2
+	.string	"__GETC_UNLOCKED_MACRO(__stream) (__fgetc_unlocked)((__stream))"
+	.byte	0x1
+	.uleb128 0x1b3
+	.string	"__GETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))"
+	.byte	0x1
+	.uleb128 0x1b4
+	.string	"__GETC(__stream) (fgetc)((__stream))"
+	.byte	0x1
+	.uleb128 0x1b6
+	.string	"__FPUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))"
+	.byte	0x1
+	.uleb128 0x1b7
+	.string	"__FPUTC(__c,__stream) (fputc)((__c),(__stream))"
+	.byte	0x1
+	.uleb128 0x1b8
+	.string	"__PUTC_UNLOCKED_MACRO(__c,__stream) (__fputc_unlocked)((__c),(__stream))"
+	.byte	0x1
+	.uleb128 0x1b9
+	.string	"__PUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))"
+	.byte	0x1
+	.uleb128 0x1ba
+	.string	"__PUTC(__c,__stream) (fputc)((__c),(__stream))"
+	.byte	0x2
+	.uleb128 0x1c1
+	.string	"__GETC_UNLOCKED_MACRO"
+	.byte	0x1
+	.uleb128 0x1c2
+	.string	"__GETC_UNLOCKED_MACRO(__stream) ( ((__stream)->__bufpos < (__stream)->__bufgetc_u) ? (*(__stream)->__bufpos++) : __fgetc_unlocked(__stream) )"
+	.byte	0x2
+	.uleb128 0x1d2
+	.string	"__FGETC_UNLOCKED"
+	.byte	0x1
+	.uleb128 0x1d3
+	.string	"__FGETC_UNLOCKED(__stream) (__extension__ ({ FILE *__S = (__stream); __GETC_UNLOCKED_MACRO(__S); }) )"
+	.byte	0x2
+	.uleb128 0x1d9
+	.string	"__GETC_UNLOCKED"
+	.byte	0x1
+	.uleb128 0x1da
+	.string	"__GETC_UNLOCKED(__stream) __FGETC_UNLOCKED((__stream))"
+	.byte	0x2
+	.uleb128 0x1dd
+	.string	"__FGETC"
+	.byte	0x1
+	.uleb128 0x1de
+	.string	"__FGETC(__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking ) ? __GETC_UNLOCKED_MACRO(__S) : (fgetc)(__S)); }) )"
+	.byte	0x2
+	.uleb128 0x1e6
+	.string	"__GETC"
+	.byte	0x1
+	.uleb128 0x1e7
+	.string	"__GETC(__stream) __FGETC((__stream))"
+	.byte	0x2
+	.uleb128 0x1fc
+	.string	"__PUTC_UNLOCKED_MACRO"
+	.byte	0x1
+	.uleb128 0x1fd
+	.string	"__PUTC_UNLOCKED_MACRO(__c,__stream) ( ((__stream)->__bufpos < (__stream)->__bufputc_u) ? (*(__stream)->__bufpos++) = (__c) : __fputc_unlocked((__c),(__stream)) )"
+	.byte	0x2
+	.uleb128 0x20f
+	.string	"__FPUTC_UNLOCKED"
+	.byte	0x1
+	.uleb128 0x210
+	.string	"__FPUTC_UNLOCKED(__c,__stream) (__extension__ ({ FILE *__S = (__stream); __PUTC_UNLOCKED_MACRO((__c),__S); }) )"
+	.byte	0x2
+	.uleb128 0x216
+	.string	"__PUTC_UNLOCKED"
+	.byte	0x1
+	.uleb128 0x217
+	.string	"__PUTC_UNLOCKED(__c,__stream) __FPUTC_UNLOCKED((__c), (__stream))"
+	.byte	0x2
+	.uleb128 0x21a
+	.string	"__FPUTC"
+	.byte	0x1
+	.uleb128 0x21b
+	.string	"__FPUTC(__c,__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking) ? __PUTC_UNLOCKED_MACRO((__c),__S) : (fputc)((__c),__S)); }) )"
+	.byte	0x2
+	.uleb128 0x223
+	.string	"__PUTC"
+	.byte	0x1
+	.uleb128 0x224
+	.string	"__PUTC(__c,__stream) __FPUTC((__c), (__stream))"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"__need___va_list "
+	.byte	0x3
+	.uleb128 0x4d
+	.file 20 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h"
+	.uleb128 0x14
+	.byte	0x2
+	.uleb128 0x25
+	.string	"__need___va_list"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__GNUC_VA_LIST "
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x5b
+	.string	"_IOFBF __STDIO_IOFBF"
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"_IOLBF __STDIO_IOLBF"
+	.byte	0x1
+	.uleb128 0x5d
+	.string	"_IONBF __STDIO_IONBF"
+	.byte	0x1
+	.uleb128 0x62
+	.string	"BUFSIZ __STDIO_BUFSIZ"
+	.byte	0x1
+	.uleb128 0x69
+	.string	"EOF (-1)"
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"SEEK_SET 0"
+	.byte	0x1
+	.uleb128 0x70
+	.string	"SEEK_CUR 1"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"SEEK_END 2"
+	.byte	0x1
+	.uleb128 0x76
+	.string	"P_tmpdir \"/tmp\""
+	.byte	0x3
+	.uleb128 0x84
+	.file 21 "../../include/bits/stdio_lim.h"
+	.uleb128 0x15
+	.byte	0x1
+	.uleb128 0x18
+	.string	"L_tmpnam 20"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"TMP_MAX 238328"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"FILENAME_MAX 4095"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"L_ctermid 9"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"L_cuserid 9"
+	.byte	0x2
+	.uleb128 0x23
+	.string	"FOPEN_MAX"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"FOPEN_MAX 16"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x8b
+	.string	"stdin stdin"
+	.byte	0x1
+	.uleb128 0x8c
+	.string	"stdout stdout"
+	.byte	0x1
+	.uleb128 0x8d
+	.string	"stderr stderr"
+	.byte	0x1
+	.uleb128 0x1bc
+	.string	"getc(_fp) __GETC(_fp)"
+	.byte	0x1
+	.uleb128 0x1c7
+	.string	"getc_unlocked(_fp) __GETC_UNLOCKED(_fp)"
+	.byte	0x1
+	.uleb128 0x1e9
+	.string	"putc(_ch,_fp) __PUTC(_ch, _fp)"
+	.byte	0x1
+	.uleb128 0x1fe
+	.string	"putc_unlocked(_ch,_fp) __PUTC_UNLOCKED(_ch, _fp)"
+	.byte	0x1
+	.uleb128 0x343
+	.string	"fgetc(_fp) __FGETC(_fp)"
+	.byte	0x1
+	.uleb128 0x344
+	.string	"fputc(_ch,_fp) __FPUTC(_ch, _fp)"
+	.byte	0x1
+	.uleb128 0x347
+	.string	"fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp)"
+	.byte	0x1
+	.uleb128 0x348
+	.string	"fputc_unlocked(_ch,_fp) __FPUTC_UNLOCKED(_ch, _fp)"
+	.byte	0x1
+	.uleb128 0x34e
+	.string	"getchar() __GETC(__stdin)"
+	.byte	0x1
+	.uleb128 0x353
+	.string	"putchar(_ch) __PUTC((_ch), __stdout)"
+	.byte	0x1
+	.uleb128 0x356
+	.string	"getchar_unlocked() __GETC_UNLOCKED(__stdin)"
+	.byte	0x1
+	.uleb128 0x357
+	.string	"putchar_unlocked(_ch) __PUTC_UNLOCKED((_ch), __stdout)"
+	.byte	0x1
+	.uleb128 0x35b
+	.string	"clearerr(_fp) __CLEARERR(_fp)"
+	.byte	0x1
+	.uleb128 0x35c
+	.string	"feof(_fp) __FEOF(_fp)"
+	.byte	0x1
+	.uleb128 0x35d
+	.string	"ferror(_fp) __FERROR(_fp)"
+	.byte	0x1
+	.uleb128 0x360
+	.string	"clearerr_unlocked(_fp) __CLEARERR_UNLOCKED(_fp)"
+	.byte	0x1
+	.uleb128 0x361
+	.string	"feof_unlocked(_fp) __FEOF_UNLOCKED(_fp)"
+	.byte	0x1
+	.uleb128 0x362
+	.string	"ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xc
+	.file 22 "../../include/stdlib.h"
+	.uleb128 0x16
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"__need_size_t "
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"__need_wchar_t "
+	.byte	0x1
+	.uleb128 0x21
+	.string	"__need_NULL "
+	.byte	0x3
+	.uleb128 0x24
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x159
+	.string	"__need_wchar_t"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x28
+	.string	"_STDLIB_H 1"
+	.byte	0x3
+	.uleb128 0x2d
+	.file 23 "../../include/bits/waitflags.h"
+	.uleb128 0x17
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"WNOHANG 1"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"WUNTRACED 2"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"WSTOPPED 2"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"WEXITED 4"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"WCONTINUED 8"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"WNOWAIT 0x01000000"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"__WNOTHREAD 0x20000000"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__WALL 0x40000000"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"__WCLONE 0x80000000"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x2e
+	.file 24 "../../include/bits/waitstatus.h"
+	.uleb128 0x18
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"__WEXITSTATUS(status) (((status) & 0xff00) >> 8)"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__WTERMSIG(status) ((status) & 0x7f)"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"__WSTOPSIG(status) __WEXITSTATUS(status)"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"__WIFEXITED(status) (__WTERMSIG(status) == 0)"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__WIFSIGNALED(status) (__extension__ ({ int __status = (status); !__WIFSTOPPED(__status) && !__WIFEXITED(__status); }))"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"__WIFSTOPPED(status) (((status) & 0xff) == 0x7f)"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"__WCOREDUMP(status) ((status) & __WCOREFLAG)"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"__W_EXITCODE(ret,sig) ((ret) << 8 | (sig))"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"__W_STOPCODE(sig) ((sig) << 8 | 0x7f)"
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"__WCOREFLAG 0x80"
+	.byte	0x3
+	.uleb128 0x40
+	.file 25 "../../include/endian.h"
+	.uleb128 0x19
+	.byte	0x1
+	.uleb128 0x14
+	.string	"_ENDIAN_H 1"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__LITTLE_ENDIAN 1234"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"__BIG_ENDIAN 4321"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"__PDP_ENDIAN 3412"
+	.byte	0x3
+	.uleb128 0x26
+	.file 26 "../../include/bits/endian.h"
+	.uleb128 0x1a
+	.byte	0x1
+	.uleb128 0x8
+	.string	"__BYTE_ORDER __LITTLE_ENDIAN"
+	.byte	0x1
+	.uleb128 0x9
+	.string	"__FLOAT_WORD_ORDER __LITTLE_ENDIAN"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"LITTLE_ENDIAN __LITTLE_ENDIAN"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"BIG_ENDIAN __BIG_ENDIAN"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"PDP_ENDIAN __PDP_ENDIAN"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"BYTE_ORDER __BYTE_ORDER"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"__LONG_LONG_PAIR(HI,LO) LO, HI"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x62
+	.string	"w_termsig __wait_terminated.__w_termsig"
+	.byte	0x1
+	.uleb128 0x63
+	.string	"w_coredump __wait_terminated.__w_coredump"
+	.byte	0x1
+	.uleb128 0x64
+	.string	"w_retcode __wait_terminated.__w_retcode"
+	.byte	0x1
+	.uleb128 0x65
+	.string	"w_stopsig __wait_stopped.__w_stopsig"
+	.byte	0x1
+	.uleb128 0x66
+	.string	"w_stopval __wait_stopped.__w_stopval"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x35
+	.string	"__WAIT_INT(status) (__extension__ ({ union { __typeof(status) __in; int __i; } __u; __u.__in = (status); __u.__i; }))"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"__WAIT_STATUS_DEFN int *"
+	.byte	0x1
+	.uleb128 0x57
+	.string	"WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))"
+	.byte	0x1
+	.uleb128 0x58
+	.string	"WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))"
+	.byte	0x1
+	.uleb128 0x59
+	.string	"WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))"
+	.byte	0x1
+	.uleb128 0x5a
+	.string	"WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))"
+	.byte	0x1
+	.uleb128 0x5b
+	.string	"WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))"
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"__ldiv_t_defined 1"
+	.byte	0x1
+	.uleb128 0x7d
+	.string	"__lldiv_t_defined 1"
+	.byte	0x1
+	.uleb128 0x83
+	.string	"RAND_MAX 2147483647"
+	.byte	0x1
+	.uleb128 0x88
+	.string	"EXIT_FAILURE 1"
+	.byte	0x1
+	.uleb128 0x89
+	.string	"EXIT_SUCCESS 0"
+	.byte	0x1
+	.uleb128 0x92
+	.string	"MB_CUR_MAX (_stdlib_mb_cur_max ())"
+	.byte	0x3
+	.uleb128 0x133
+	.file 27 "../../include/sys/types.h"
+	.uleb128 0x1b
+	.byte	0x1
+	.uleb128 0x19
+	.string	"_SYS_TYPES_H 1"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__u_char_defined "
+	.byte	0x1
+	.uleb128 0x36
+	.string	"__ino_t_defined "
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"__ino64_t_defined "
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"__dev_t_defined "
+	.byte	0x1
+	.uleb128 0x44
+	.string	"__gid_t_defined "
+	.byte	0x1
+	.uleb128 0x49
+	.string	"__mode_t_defined "
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"__nlink_t_defined "
+	.byte	0x1
+	.uleb128 0x53
+	.string	"__uid_t_defined "
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"__off_t_defined "
+	.byte	0x1
+	.uleb128 0x60
+	.string	"__off64_t_defined "
+	.byte	0x1
+	.uleb128 0x65
+	.string	"__pid_t_defined "
+	.byte	0x1
+	.uleb128 0x6a
+	.string	"__id_t_defined "
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"__ssize_t_defined "
+	.byte	0x1
+	.uleb128 0x76
+	.string	"__daddr_t_defined "
+	.byte	0x1
+	.uleb128 0x7c
+	.string	"__key_t_defined "
+	.byte	0x1
+	.uleb128 0x80
+	.string	"__need_clock_t "
+	.byte	0x1
+	.uleb128 0x82
+	.string	"__need_time_t "
+	.byte	0x1
+	.uleb128 0x83
+	.string	"__need_timer_t "
+	.byte	0x1
+	.uleb128 0x84
+	.string	"__need_clockid_t "
+	.byte	0x3
+	.uleb128 0x86
+	.file 28 "../../include/time.h"
+	.uleb128 0x1c
+	.byte	0x1
+	.uleb128 0x37
+	.string	"__clock_t_defined 1"
+	.byte	0x2
+	.uleb128 0x44
+	.string	"__need_clock_t"
+	.byte	0x1
+	.uleb128 0x47
+	.string	"__time_t_defined 1"
+	.byte	0x2
+	.uleb128 0x54
+	.string	"__need_time_t"
+	.byte	0x1
+	.uleb128 0x58
+	.string	"__clockid_t_defined 1"
+	.byte	0x2
+	.uleb128 0x60
+	.string	"__clockid_time_t"
+	.byte	0x1
+	.uleb128 0x64
+	.string	"__timer_t_defined 1"
+	.byte	0x2
+	.uleb128 0x6c
+	.string	"__need_timer_t"
+	.byte	0x2
+	.uleb128 0x80
+	.string	"__need_timespec"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x8a
+	.string	"__useconds_t_defined "
+	.byte	0x1
+	.uleb128 0x8e
+	.string	"__suseconds_t_defined "
+	.byte	0x1
+	.uleb128 0x92
+	.string	"__need_size_t "
+	.byte	0x3
+	.uleb128 0x94
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0xb8
+	.string	"__intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE)))"
+	.byte	0x1
+	.uleb128 0xba
+	.string	"__u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE)))"
+	.byte	0x1
+	.uleb128 0xbe
+	.string	"__int8_t_defined "
+	.byte	0x1
+	.uleb128 0xd0
+	.string	"__BIT_TYPES_DEFINED__ 1"
+	.byte	0x3
+	.uleb128 0xd9
+	.file 29 "../../include/sys/select.h"
+	.uleb128 0x1d
+	.byte	0x1
+	.uleb128 0x17
+	.string	"_SYS_SELECT_H 1"
+	.byte	0x3
+	.uleb128 0x20
+	.file 30 "../../include/bits/select.h"
+	.uleb128 0x1e
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"__FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"__FD_SET(d,s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"__FD_CLR(d,s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"__FD_ISSET(d,s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x23
+	.file 31 "../../include/bits/sigset.h"
+	.uleb128 0x1f
+	.byte	0x1
+	.uleb128 0x15
+	.string	"_SIGSET_H_types 1"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"_SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__sigset_t_defined "
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__need_time_t "
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"__need_timespec "
+	.byte	0x3
+	.uleb128 0x2d
+	.uleb128 0x1c
+	.byte	0x2
+	.uleb128 0x44
+	.string	"__need_clock_t"
+	.byte	0x2
+	.uleb128 0x54
+	.string	"__need_time_t"
+	.byte	0x2
+	.uleb128 0x60
+	.string	"__clockid_time_t"
+	.byte	0x2
+	.uleb128 0x6c
+	.string	"__need_timer_t"
+	.byte	0x1
+	.uleb128 0x73
+	.string	"__timespec_defined 1"
+	.byte	0x2
+	.uleb128 0x80
+	.string	"__need_timespec"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"__need_timeval "
+	.byte	0x3
+	.uleb128 0x2f
+	.file 32 "../../include/bits/time.h"
+	.uleb128 0x20
+	.byte	0x2
+	.uleb128 0x42
+	.string	"__need_timeval"
+	.byte	0x1
+	.uleb128 0x44
+	.string	"_STRUCT_TIMEVAL 1"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x3a
+	.string	"__NFDBITS"
+	.byte	0x2
+	.uleb128 0x3b
+	.string	"__FDELT"
+	.byte	0x2
+	.uleb128 0x3c
+	.string	"__FDMASK"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"__NFDBITS (8 * sizeof (__fd_mask))"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"__FDELT(d) ((d) / __NFDBITS)"
+	.byte	0x1
+	.uleb128 0x40
+	.string	"__FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"__FDS_BITS(set) ((set)->fds_bits)"
+	.byte	0x1
+	.uleb128 0x51
+	.string	"FD_SETSIZE __FD_SETSIZE"
+	.byte	0x1
+	.uleb128 0x58
+	.string	"NFDBITS __NFDBITS"
+	.byte	0x1
+	.uleb128 0x5d
+	.string	"FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)"
+	.byte	0x1
+	.uleb128 0x5e
+	.string	"FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)"
+	.byte	0x1
+	.uleb128 0x5f
+	.string	"FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)"
+	.byte	0x1
+	.uleb128 0x60
+	.string	"FD_ZERO(fdsetp) __FD_ZERO (fdsetp)"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xdc
+	.file 33 "../../include/sys/sysmacros.h"
+	.uleb128 0x21
+	.byte	0x1
+	.uleb128 0x15
+	.string	"_SYS_SYSMACROS_H 1"
+	.byte	0x1
+	.uleb128 0x40
+	.string	"major(dev) gnu_dev_major (dev)"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"minor(dev) gnu_dev_minor (dev)"
+	.byte	0x1
+	.uleb128 0x42
+	.string	"makedev(maj,min) gnu_dev_makedev (maj, min)"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0xe1
+	.string	"__blksize_t_defined "
+	.byte	0x1
+	.uleb128 0xe8
+	.string	"__blkcnt_t_defined "
+	.byte	0x1
+	.uleb128 0xec
+	.string	"__fsblkcnt_t_defined "
+	.byte	0x1
+	.uleb128 0xf0
+	.string	"__fsfilcnt_t_defined "
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x1ca
+	.string	"__malloc_and_calloc_defined "
+	.byte	0x3
+	.uleb128 0x1e5
+	.file 34 "../../include/alloca.h"
+	.uleb128 0x22
+	.byte	0x1
+	.uleb128 0x14
+	.string	"_ALLOCA_H 1"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"__need_size_t "
+	.byte	0x3
+	.uleb128 0x1a
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x1e
+	.string	"alloca"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"alloca(size) __builtin_alloca (size)"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"__MAX_ALLOCA_CUTOFF 65536"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x232
+	.string	"__UCLIBC_MAX_ATEXIT 20"
+	.byte	0x1
+	.uleb128 0x285
+	.string	"__COMPAR_FN_T "
+	.byte	0x2
+	.uleb128 0x35c
+	.string	"__need_malloc_and_calloc"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xd
+	.file 35 "../../include/string.h"
+	.uleb128 0x23
+	.byte	0x1
+	.uleb128 0x18
+	.string	"_STRING_H 1"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"__need_size_t "
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__need_NULL "
+	.byte	0x3
+	.uleb128 0x22
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x90
+	.string	"strdupa(s) (__extension__ ({ __const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))"
+	.byte	0x1
+	.uleb128 0x9a
+	.string	"strndupa(s,n) (__extension__ ({ __const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\\0'; (char *) memcpy (__new, __old, __len); }))"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xe
+	.file 36 "../../include/locale.h"
+	.uleb128 0x24
+	.byte	0x1
+	.uleb128 0x18
+	.string	"_LOCALE_H 1"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"__need_NULL "
+	.byte	0x3
+	.uleb128 0x1e
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x1f
+	.file 37 "../../include/bits/uClibc_locale.h"
+	.uleb128 0x25
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"_UCLIBC_LOCALE_H "
+	.byte	0x2
+	.uleb128 0x26
+	.string	"__LOCALE_C_ONLY"
+	.byte	0x1
+	.uleb128 0x34
+	.string	"__NL_ITEM_CATEGORY_SHIFT (8)"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"__NL_ITEM_INDEX_MASK (0xff)"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"__LC_CTYPE 0"
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"__LC_NUMERIC 1"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"__LC_MONETARY 2"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"__LC_TIME 3"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"__LC_COLLATE 4"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"__LC_MESSAGES 5"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"__LC_ALL 6"
+	.byte	0x3
+	.uleb128 0x46
+	.uleb128 0xa
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"_STDDEF_H "
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"_STDDEF_H_ "
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"_ANSI_STDDEF_H "
+	.byte	0x1
+	.uleb128 0x30
+	.string	"__STDDEF_H__ "
+	.byte	0x1
+	.uleb128 0x8d
+	.string	"_PTRDIFF_T "
+	.byte	0x1
+	.uleb128 0x8e
+	.string	"_T_PTRDIFF_ "
+	.byte	0x1
+	.uleb128 0x8f
+	.string	"_T_PTRDIFF "
+	.byte	0x1
+	.uleb128 0x90
+	.string	"__PTRDIFF_T "
+	.byte	0x1
+	.uleb128 0x91
+	.string	"_PTRDIFF_T_ "
+	.byte	0x1
+	.uleb128 0x92
+	.string	"_BSD_PTRDIFF_T_ "
+	.byte	0x1
+	.uleb128 0x93
+	.string	"___int_ptrdiff_t_h "
+	.byte	0x1
+	.uleb128 0x94
+	.string	"_GCC_PTRDIFF_T "
+	.byte	0x2
+	.uleb128 0xa3
+	.string	"__need_ptrdiff_t"
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x159
+	.string	"__need_wchar_t"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x1
+	.uleb128 0x19e
+	.string	"offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x47
+	.file 38 "../../include/stdint.h"
+	.uleb128 0x26
+	.byte	0x1
+	.uleb128 0x18
+	.string	"_STDINT_H 1"
+	.byte	0x3
+	.uleb128 0x1f
+	.uleb128 0xd
+	.byte	0x1
+	.uleb128 0x13
+	.string	"__WORDSIZE 32"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x37
+	.string	"__uint32_t_defined "
+	.byte	0x1
+	.uleb128 0x81
+	.string	"__intptr_t_defined "
+	.byte	0x1
+	.uleb128 0x9b
+	.string	"__INT64_C(c) c ## LL"
+	.byte	0x1
+	.uleb128 0x9c
+	.string	"__UINT64_C(c) c ## ULL"
+	.byte	0x1
+	.uleb128 0xa2
+	.string	"INT8_MIN (-128)"
+	.byte	0x1
+	.uleb128 0xa3
+	.string	"INT16_MIN (-32767-1)"
+	.byte	0x1
+	.uleb128 0xa4
+	.string	"INT32_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0xa5
+	.string	"INT64_MIN (-__INT64_C(9223372036854775807)-1)"
+	.byte	0x1
+	.uleb128 0xa7
+	.string	"INT8_MAX (127)"
+	.byte	0x1
+	.uleb128 0xa8
+	.string	"INT16_MAX (32767)"
+	.byte	0x1
+	.uleb128 0xa9
+	.string	"INT32_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0xaa
+	.string	"INT64_MAX (__INT64_C(9223372036854775807))"
+	.byte	0x1
+	.uleb128 0xad
+	.string	"UINT8_MAX (255)"
+	.byte	0x1
+	.uleb128 0xae
+	.string	"UINT16_MAX (65535)"
+	.byte	0x1
+	.uleb128 0xaf
+	.string	"UINT32_MAX (4294967295U)"
+	.byte	0x1
+	.uleb128 0xb0
+	.string	"UINT64_MAX (__UINT64_C(18446744073709551615))"
+	.byte	0x1
+	.uleb128 0xb4
+	.string	"INT_LEAST8_MIN (-128)"
+	.byte	0x1
+	.uleb128 0xb5
+	.string	"INT_LEAST16_MIN (-32767-1)"
+	.byte	0x1
+	.uleb128 0xb6
+	.string	"INT_LEAST32_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0xb7
+	.string	"INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)"
+	.byte	0x1
+	.uleb128 0xb9
+	.string	"INT_LEAST8_MAX (127)"
+	.byte	0x1
+	.uleb128 0xba
+	.string	"INT_LEAST16_MAX (32767)"
+	.byte	0x1
+	.uleb128 0xbb
+	.string	"INT_LEAST32_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0xbc
+	.string	"INT_LEAST64_MAX (__INT64_C(9223372036854775807))"
+	.byte	0x1
+	.uleb128 0xbf
+	.string	"UINT_LEAST8_MAX (255)"
+	.byte	0x1
+	.uleb128 0xc0
+	.string	"UINT_LEAST16_MAX (65535)"
+	.byte	0x1
+	.uleb128 0xc1
+	.string	"UINT_LEAST32_MAX (4294967295U)"
+	.byte	0x1
+	.uleb128 0xc2
+	.string	"UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))"
+	.byte	0x1
+	.uleb128 0xc6
+	.string	"INT_FAST8_MIN (-128)"
+	.byte	0x1
+	.uleb128 0xcb
+	.string	"INT_FAST16_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0xcc
+	.string	"INT_FAST32_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0xce
+	.string	"INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)"
+	.byte	0x1
+	.uleb128 0xd0
+	.string	"INT_FAST8_MAX (127)"
+	.byte	0x1
+	.uleb128 0xd5
+	.string	"INT_FAST16_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0xd6
+	.string	"INT_FAST32_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0xd8
+	.string	"INT_FAST64_MAX (__INT64_C(9223372036854775807))"
+	.byte	0x1
+	.uleb128 0xdb
+	.string	"UINT_FAST8_MAX (255)"
+	.byte	0x1
+	.uleb128 0xe0
+	.string	"UINT_FAST16_MAX (4294967295U)"
+	.byte	0x1
+	.uleb128 0xe1
+	.string	"UINT_FAST32_MAX (4294967295U)"
+	.byte	0x1
+	.uleb128 0xe3
+	.string	"UINT_FAST64_MAX (__UINT64_C(18446744073709551615))"
+	.byte	0x1
+	.uleb128 0xec
+	.string	"INTPTR_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0xed
+	.string	"INTPTR_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0xee
+	.string	"UINTPTR_MAX (4294967295U)"
+	.byte	0x1
+	.uleb128 0xf3
+	.string	"INTMAX_MIN (-__INT64_C(9223372036854775807)-1)"
+	.byte	0x1
+	.uleb128 0xf5
+	.string	"INTMAX_MAX (__INT64_C(9223372036854775807))"
+	.byte	0x1
+	.uleb128 0xf8
+	.string	"UINTMAX_MAX (__UINT64_C(18446744073709551615))"
+	.byte	0x1
+	.uleb128 0x10a
+	.string	"PTRDIFF_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0x10b
+	.string	"PTRDIFF_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0x10f
+	.string	"SIG_ATOMIC_MIN (-2147483647-1)"
+	.byte	0x1
+	.uleb128 0x110
+	.string	"SIG_ATOMIC_MAX (2147483647)"
+	.byte	0x1
+	.uleb128 0x116
+	.string	"SIZE_MAX (4294967295U)"
+	.byte	0x1
+	.uleb128 0x11d
+	.string	"WCHAR_MIN __WCHAR_MIN"
+	.byte	0x1
+	.uleb128 0x11e
+	.string	"WCHAR_MAX __WCHAR_MAX"
+	.byte	0x1
+	.uleb128 0x122
+	.string	"WINT_MIN (0u)"
+	.byte	0x1
+	.uleb128 0x123
+	.string	"WINT_MAX (4294967295u)"
+	.byte	0x1
+	.uleb128 0x12e
+	.string	"INT8_C(c) c"
+	.byte	0x1
+	.uleb128 0x12f
+	.string	"INT16_C(c) c"
+	.byte	0x1
+	.uleb128 0x130
+	.string	"INT32_C(c) c"
+	.byte	0x1
+	.uleb128 0x134
+	.string	"INT64_C(c) c ## LL"
+	.byte	0x1
+	.uleb128 0x138
+	.string	"UINT8_C(c) c ## U"
+	.byte	0x1
+	.uleb128 0x139
+	.string	"UINT16_C(c) c ## U"
+	.byte	0x1
+	.uleb128 0x13a
+	.string	"UINT32_C(c) c ## U"
+	.byte	0x1
+	.uleb128 0x13e
+	.string	"UINT64_C(c) c ## ULL"
+	.byte	0x1
+	.uleb128 0x146
+	.string	"INTMAX_C(c) c ## LL"
+	.byte	0x1
+	.uleb128 0x147
+	.string	"UINTMAX_C(c) c ## ULL"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x48
+	.file 39 "../../include/bits/uClibc_touplow.h"
+	.uleb128 0x27
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"_UCLIBC_TOUPLOW_H "
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"__UCLIBC_CTYPE_B_TBL_OFFSET 128"
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"__UCLIBC_CTYPE_TO_TBL_OFFSET 128"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x4b
+	.file 40 "../../include/bits/uClibc_locale_data.h"
+	.uleb128 0x28
+	.byte	0x1
+	.uleb128 0x1
+	.string	"__lc_time_data_LEN 25900"
+	.byte	0x1
+	.uleb128 0x2
+	.string	"__lc_time_rows_LEN 7650"
+	.byte	0x1
+	.uleb128 0x3
+	.string	"__lc_time_item_offsets_LEN 50"
+	.byte	0x1
+	.uleb128 0x4
+	.string	"__lc_time_item_idx_LEN 3190"
+	.byte	0x1
+	.uleb128 0x5
+	.string	"__lc_numeric_data_LEN 22"
+	.byte	0x1
+	.uleb128 0x6
+	.string	"__lc_numeric_rows_LEN 42"
+	.byte	0x1
+	.uleb128 0x7
+	.string	"__lc_numeric_item_offsets_LEN 3"
+	.byte	0x1
+	.uleb128 0x8
+	.string	"__lc_numeric_item_idx_LEN 13"
+	.byte	0x1
+	.uleb128 0x9
+	.string	"__lc_monetary_data_LEN 1578"
+	.byte	0x1
+	.uleb128 0xa
+	.string	"__lc_monetary_rows_LEN 3652"
+	.byte	0x1
+	.uleb128 0xb
+	.string	"__lc_monetary_item_offsets_LEN 22"
+	.byte	0x1
+	.uleb128 0xc
+	.string	"__lc_monetary_item_idx_LEN 391"
+	.byte	0x1
+	.uleb128 0xd
+	.string	"__lc_messages_data_LEN 1583"
+	.byte	0x1
+	.uleb128 0xe
+	.string	"__lc_messages_rows_LEN 312"
+	.byte	0x1
+	.uleb128 0xf
+	.string	"__lc_messages_item_offsets_LEN 4"
+	.byte	0x1
+	.uleb128 0x10
+	.string	"__lc_messages_item_idx_LEN 170"
+	.byte	0x1
+	.uleb128 0x11
+	.string	"__lc_ctype_data_LEN 51"
+	.byte	0x1
+	.uleb128 0x12
+	.string	"__lc_ctype_rows_LEN 20"
+	.byte	0x1
+	.uleb128 0x13
+	.string	"__lc_ctype_item_offsets_LEN 10"
+	.byte	0x1
+	.uleb128 0x14
+	.string	"__lc_ctype_item_idx_LEN 20"
+	.byte	0x1
+	.uleb128 0x15
+	.string	"__CTYPE_HAS_UTF_8_LOCALES 1"
+	.byte	0x1
+	.uleb128 0x16
+	.string	"__LOCALE_DATA_CATEGORIES 6"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"__LOCALE_DATA_WIDTH_LOCALES 9"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"__LOCALE_DATA_NUM_LOCALES 315"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"__LOCALE_DATA_NUM_LOCALE_NAMES 167"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"__LOCALE_DATA_AT_MODIFIERS_LENGTH 18"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"__lc_names_LEN 69"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"__lc_collate_data_LEN 91141"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"__CTYPE_HAS_8_BIT_LOCALES 1"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"__LOCALE_DATA_Cctype_IDX_SHIFT 3"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"__LOCALE_DATA_Cctype_IDX_LEN 16"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"__LOCALE_DATA_Cctype_ROW_LEN 4"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"__LOCALE_DATA_Cctype_PACKED 1"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"__LOCALE_DATA_Cuplow_IDX_SHIFT 3"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__LOCALE_DATA_Cuplow_IDX_LEN 16"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"__LOCALE_DATA_Cuplow_ROW_LEN 8"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"__LOCALE_DATA_Cc2wc_IDX_LEN 16"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"__LOCALE_DATA_Cc2wc_IDX_SHIFT 3"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__LOCALE_DATA_Cc2wc_ROW_LEN 8"
+	.byte	0x1
+	.uleb128 0x34
+	.string	"__LOCALE_DATA_Cwc2c_DOMAIN_MAX 0x25ff"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"__LOCALE_DATA_Cwc2c_TI_SHIFT 4"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"__LOCALE_DATA_Cwc2c_TT_SHIFT 4"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"__LOCALE_DATA_Cwc2c_II_LEN 38"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"__LOCALE_DATA_Cwc2c_TI_LEN 1072"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"__LOCALE_DATA_Cwc2c_TT_LEN 3456"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"__LOCALE_DATA_Cwc2c_TBL_LEN 4528"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"__LOCALE_DATA_Cuplow_TBL_LEN 504"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"__LOCALE_DATA_Cctype_TBL_LEN 420"
+	.byte	0x1
+	.uleb128 0x44
+	.string	"__LOCALE_DATA_Cc2wc_TBL_LEN 1760"
+	.byte	0x1
+	.uleb128 0x48
+	.string	"__LOCALE_DATA_NUM_CODESETS 23"
+	.byte	0x1
+	.uleb128 0x49
+	.ascii	"__LOCALE_DATA_CODESET_LIST \"\\x18\\x22\\x31\\x38\\x3f\\x4b\\"
+	.ascii	"x56\\x62\" \"\\x6e\\x7a\\x86\\x92\\x9d\\xa8\\xb3\\xbe\" \"\\"
+	.ascii	"xc9\\xd4\\xdf\\xea\\xf1\\xf8\\xff\" \"\\0\" \"ARMSCII-8\\0\""
+	.ascii	" \"ANSI_X3.4-1968\\0\" \"CP1251\\0\" \"CP1255\\0\" \"GEORGIA"
+	.ascii	"N-PS\\0\" \"IS"
+	.string	"O-8859-1\\0\" \"ISO-8859-10\\0\" \"ISO-8859-13\\0\" \"ISO-8859-14\\0\" \"ISO-8859-15\\0\" \"ISO-8859-16\\0\" \"ISO-8859-2\\0\" \"ISO-8859-3\\0\" \"ISO-8859-4\\0\" \"ISO-8859-5\\0\" \"ISO-8859-6\\0\" \"ISO-8859-7\\0\" \"ISO-8859-8\\0\" \"ISO-8859-9\\0\" \"KOI8-R\\0\" \"KOI8-T\\0\" \"KOI8-U\\0\" \"TIS-620\\0\""
+	.byte	0x1
+	.uleb128 0x66
+	.string	"__CTYPE_HAS_CODESET_ARMSCII_8 "
+	.byte	0x1
+	.uleb128 0x67
+	.string	"__CTYPE_HAS_CODESET_ANSI_X3 .4_1968"
+	.byte	0x1
+	.uleb128 0x68
+	.string	"__CTYPE_HAS_CODESET_CP1251 "
+	.byte	0x1
+	.uleb128 0x69
+	.string	"__CTYPE_HAS_CODESET_CP1255 "
+	.byte	0x1
+	.uleb128 0x6a
+	.string	"__CTYPE_HAS_CODESET_GEORGIAN_PS "
+	.byte	0x1
+	.uleb128 0x6b
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_1 "
+	.byte	0x1
+	.uleb128 0x6c
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_10 "
+	.byte	0x1
+	.uleb128 0x6d
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_13 "
+	.byte	0x1
+	.uleb128 0x6e
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_14 "
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_15 "
+	.byte	0x1
+	.uleb128 0x70
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_16 "
+	.byte	0x1
+	.uleb128 0x71
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_2 "
+	.byte	0x1
+	.uleb128 0x72
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_3 "
+	.byte	0x1
+	.uleb128 0x73
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_4 "
+	.byte	0x1
+	.uleb128 0x74
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_5 "
+	.byte	0x1
+	.uleb128 0x75
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_6 "
+	.byte	0x1
+	.uleb128 0x76
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_7 "
+	.byte	0x1
+	.uleb128 0x77
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_8 "
+	.byte	0x1
+	.uleb128 0x78
+	.string	"__CTYPE_HAS_CODESET_ISO_8859_9 "
+	.byte	0x1
+	.uleb128 0x79
+	.string	"__CTYPE_HAS_CODESET_KOI8_R "
+	.byte	0x1
+	.uleb128 0x7a
+	.string	"__CTYPE_HAS_CODESET_KOI8_T "
+	.byte	0x1
+	.uleb128 0x7b
+	.string	"__CTYPE_HAS_CODESET_KOI8_U "
+	.byte	0x1
+	.uleb128 0x7c
+	.string	"__CTYPE_HAS_CODESET_TIS_620 "
+	.byte	0x1
+	.uleb128 0x7d
+	.string	"__CTYPE_HAS_CODESET_UTF_8 "
+	.byte	0x1
+	.uleb128 0x7e
+	.string	"__LOCALE_DATA_WC_TABLE_DOMAIN_MAX 0x2ffff"
+	.byte	0x1
+	.uleb128 0x80
+	.string	"__LOCALE_DATA_WCctype_II_LEN 768"
+	.byte	0x1
+	.uleb128 0x81
+	.string	"__LOCALE_DATA_WCctype_TI_LEN 1888"
+	.byte	0x1
+	.uleb128 0x82
+	.string	"__LOCALE_DATA_WCctype_UT_LEN 948"
+	.byte	0x1
+	.uleb128 0x83
+	.string	"__LOCALE_DATA_WCctype_II_SHIFT 5"
+	.byte	0x1
+	.uleb128 0x84
+	.string	"__LOCALE_DATA_WCctype_TI_SHIFT 3"
+	.byte	0x1
+	.uleb128 0x87
+	.string	"__LOCALE_DATA_WCuplow_II_LEN 384"
+	.byte	0x1
+	.uleb128 0x88
+	.string	"__LOCALE_DATA_WCuplow_TI_LEN 576"
+	.byte	0x1
+	.uleb128 0x89
+	.string	"__LOCALE_DATA_WCuplow_UT_LEN 720"
+	.byte	0x1
+	.uleb128 0x8a
+	.string	"__LOCALE_DATA_WCuplow_II_SHIFT 6"
+	.byte	0x1
+	.uleb128 0x8b
+	.string	"__LOCALE_DATA_WCuplow_TI_SHIFT 3"
+	.byte	0x1
+	.uleb128 0x8e
+	.string	"__LOCALE_DATA_WCuplow_diffs 98"
+	.byte	0x1
+	.uleb128 0x96
+	.string	"__WCHAR_ENABLED "
+	.byte	0x1
+	.uleb128 0x9b
+	.string	"__LOCALE_DATA_WCctype_TBL_LEN (__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + __LOCALE_DATA_WCctype_UT_LEN)"
+	.byte	0x1
+	.uleb128 0x9c
+	.string	"__LOCALE_DATA_WCuplow_TBL_LEN (__LOCALE_DATA_WCuplow_II_LEN + __LOCALE_DATA_WCuplow_TI_LEN + __LOCALE_DATA_WCuplow_UT_LEN)"
+	.byte	0x1
+	.uleb128 0x9d
+	.string	"__LOCALE_DATA_WCuplow_diff_TBL_LEN (2 * __LOCALE_DATA_WCuplow_diffs)"
+	.byte	0x2
+	.uleb128 0xa1
+	.string	"__PASTE2"
+	.byte	0x1
+	.uleb128 0xa2
+	.string	"__PASTE2(A,B) A ## B"
+	.byte	0x2
+	.uleb128 0xa3
+	.string	"__PASTE3"
+	.byte	0x1
+	.uleb128 0xa4
+	.string	"__PASTE3(A,B,C) A ## B ## C"
+	.byte	0x1
+	.uleb128 0xa6
+	.string	"__LOCALE_DATA_COMMON_MMAP(X) unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)];"
+	.byte	0x1
+	.uleb128 0xa9
+	.string	"__LOCALE_DATA_COMMON_MMIDX(X) unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)];"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x57
+	.string	"LOCALE_STRING_SIZE (2 * __LC_ALL + 2)"
+	.byte	0x1
+	.uleb128 0x163
+	.string	"__UCLIBC_CURLOCALE (__global_locale)"
+	.byte	0x1
+	.uleb128 0x164
+	.string	"__UCLIBC_CURLOCALE_DATA (*__global_locale)"
+	.byte	0x1
+	.uleb128 0x171
+	.string	"__XL_NPP(N) N"
+	.byte	0x1
+	.uleb128 0x172
+	.string	"__LOCALE_PARAM "
+	.byte	0x1
+	.uleb128 0x173
+	.string	"__LOCALE_ARG "
+	.byte	0x1
+	.uleb128 0x174
+	.string	"__LOCALE_PTR __UCLIBC_CURLOCALE"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x24
+	.string	"LC_CTYPE __LC_CTYPE"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"LC_NUMERIC __LC_NUMERIC"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"LC_TIME __LC_TIME"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"LC_COLLATE __LC_COLLATE"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"LC_MONETARY __LC_MONETARY"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"LC_MESSAGES __LC_MESSAGES"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"LC_ALL __LC_ALL"
+	.byte	0x1
+	.uleb128 0xa5
+	.string	"LC_CTYPE_MASK (1 << __LC_CTYPE)"
+	.byte	0x1
+	.uleb128 0xa6
+	.string	"LC_NUMERIC_MASK (1 << __LC_NUMERIC)"
+	.byte	0x1
+	.uleb128 0xa7
+	.string	"LC_TIME_MASK (1 << __LC_TIME)"
+	.byte	0x1
+	.uleb128 0xa8
+	.string	"LC_COLLATE_MASK (1 << __LC_COLLATE)"
+	.byte	0x1
+	.uleb128 0xa9
+	.string	"LC_MONETARY_MASK (1 << __LC_MONETARY)"
+	.byte	0x1
+	.uleb128 0xaa
+	.string	"LC_MESSAGES_MASK (1 << __LC_MESSAGES)"
+	.byte	0x1
+	.uleb128 0xc3
+	.string	"LC_ALL_MASK (LC_CTYPE_MASK | LC_NUMERIC_MASK | LC_TIME_MASK | LC_COLLATE_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK )"
+	.byte	0x1
+	.uleb128 0xdd
+	.string	"LC_GLOBAL_LOCALE ((__locale_t) -1L)"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xf
+	.file 41 "../../include/errno.h"
+	.uleb128 0x29
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"_ERRNO_H 1"
+	.byte	0x3
+	.uleb128 0x25
+	.file 42 "../../include/bits/errno.h"
+	.uleb128 0x2a
+	.byte	0x3
+	.uleb128 0x17
+	.file 43 "../../include/bits/errno_values.h"
+	.uleb128 0x2b
+	.byte	0x1
+	.uleb128 0x2
+	.string	"_BITS_ERRNO_VALUES_H "
+	.byte	0x1
+	.uleb128 0xc
+	.string	"EPERM 1"
+	.byte	0x1
+	.uleb128 0xd
+	.string	"ENOENT 2"
+	.byte	0x1
+	.uleb128 0xe
+	.string	"ESRCH 3"
+	.byte	0x1
+	.uleb128 0xf
+	.string	"EINTR 4"
+	.byte	0x1
+	.uleb128 0x10
+	.string	"EIO 5"
+	.byte	0x1
+	.uleb128 0x11
+	.string	"ENXIO 6"
+	.byte	0x1
+	.uleb128 0x12
+	.string	"E2BIG 7"
+	.byte	0x1
+	.uleb128 0x13
+	.string	"ENOEXEC 8"
+	.byte	0x1
+	.uleb128 0x14
+	.string	"EBADF 9"
+	.byte	0x1
+	.uleb128 0x15
+	.string	"ECHILD 10"
+	.byte	0x1
+	.uleb128 0x16
+	.string	"EAGAIN 11"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"ENOMEM 12"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"EACCES 13"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"EFAULT 14"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"ENOTBLK 15"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"EBUSY 16"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"EEXIST 17"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"EXDEV 18"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"ENODEV 19"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"ENOTDIR 20"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"EISDIR 21"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"EINVAL 22"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"ENFILE 23"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"EMFILE 24"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"ENOTTY 25"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"ETXTBSY 26"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"EFBIG 27"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"ENOSPC 28"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"ESPIPE 29"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"EROFS 30"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"EMLINK 31"
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"EPIPE 32"
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"EDOM 33"
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"ERANGE 34"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"EDEADLK 35"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"ENAMETOOLONG 36"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"ENOLCK 37"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"ENOSYS 38"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"ENOTEMPTY 39"
+	.byte	0x1
+	.uleb128 0x33
+	.string	"ELOOP 40"
+	.byte	0x1
+	.uleb128 0x34
+	.string	"EWOULDBLOCK EAGAIN"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"ENOMSG 42"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"EIDRM 43"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"ECHRNG 44"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"EL2NSYNC 45"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"EL3HLT 46"
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"EL3RST 47"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"ELNRNG 48"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"EUNATCH 49"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"ENOCSI 50"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"EL2HLT 51"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"EBADE 52"
+	.byte	0x1
+	.uleb128 0x40
+	.string	"EBADR 53"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"EXFULL 54"
+	.byte	0x1
+	.uleb128 0x42
+	.string	"ENOANO 55"
+	.byte	0x1
+	.uleb128 0x43
+	.string	"EBADRQC 56"
+	.byte	0x1
+	.uleb128 0x44
+	.string	"EBADSLT 57"
+	.byte	0x1
+	.uleb128 0x45
+	.string	"EDEADLOCK EDEADLK"
+	.byte	0x1
+	.uleb128 0x46
+	.string	"EBFONT 59"
+	.byte	0x1
+	.uleb128 0x47
+	.string	"ENOSTR 60"
+	.byte	0x1
+	.uleb128 0x48
+	.string	"ENODATA 61"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"ETIME 62"
+	.byte	0x1
+	.uleb128 0x4a
+	.string	"ENOSR 63"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"ENONET 64"
+	.byte	0x1
+	.uleb128 0x4c
+	.string	"ENOPKG 65"
+	.byte	0x1
+	.uleb128 0x4d
+	.string	"EREMOTE 66"
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"ENOLINK 67"
+	.byte	0x1
+	.uleb128 0x4f
+	.string	"EADV 68"
+	.byte	0x1
+	.uleb128 0x50
+	.string	"ESRMNT 69"
+	.byte	0x1
+	.uleb128 0x51
+	.string	"ECOMM 70"
+	.byte	0x1
+	.uleb128 0x52
+	.string	"EPROTO 71"
+	.byte	0x1
+	.uleb128 0x53
+	.string	"EMULTIHOP 72"
+	.byte	0x1
+	.uleb128 0x54
+	.string	"EDOTDOT 73"
+	.byte	0x1
+	.uleb128 0x55
+	.string	"EBADMSG 74"
+	.byte	0x1
+	.uleb128 0x56
+	.string	"EOVERFLOW 75"
+	.byte	0x1
+	.uleb128 0x57
+	.string	"ENOTUNIQ 76"
+	.byte	0x1
+	.uleb128 0x58
+	.string	"EBADFD 77"
+	.byte	0x1
+	.uleb128 0x59
+	.string	"EREMCHG 78"
+	.byte	0x1
+	.uleb128 0x5a
+	.string	"ELIBACC 79"
+	.byte	0x1
+	.uleb128 0x5b
+	.string	"ELIBBAD 80"
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"ELIBSCN 81"
+	.byte	0x1
+	.uleb128 0x5d
+	.string	"ELIBMAX 82"
+	.byte	0x1
+	.uleb128 0x5e
+	.string	"ELIBEXEC 83"
+	.byte	0x1
+	.uleb128 0x5f
+	.string	"EILSEQ 84"
+	.byte	0x1
+	.uleb128 0x60
+	.string	"ERESTART 85"
+	.byte	0x1
+	.uleb128 0x61
+	.string	"ESTRPIPE 86"
+	.byte	0x1
+	.uleb128 0x62
+	.string	"EUSERS 87"
+	.byte	0x1
+	.uleb128 0x63
+	.string	"ENOTSOCK 88"
+	.byte	0x1
+	.uleb128 0x64
+	.string	"EDESTADDRREQ 89"
+	.byte	0x1
+	.uleb128 0x65
+	.string	"EMSGSIZE 90"
+	.byte	0x1
+	.uleb128 0x66
+	.string	"EPROTOTYPE 91"
+	.byte	0x1
+	.uleb128 0x67
+	.string	"ENOPROTOOPT 92"
+	.byte	0x1
+	.uleb128 0x68
+	.string	"EPROTONOSUPPORT 93"
+	.byte	0x1
+	.uleb128 0x69
+	.string	"ESOCKTNOSUPPORT 94"
+	.byte	0x1
+	.uleb128 0x6a
+	.string	"EOPNOTSUPP 95"
+	.byte	0x1
+	.uleb128 0x6b
+	.string	"EPFNOSUPPORT 96"
+	.byte	0x1
+	.uleb128 0x6c
+	.string	"EAFNOSUPPORT 97"
+	.byte	0x1
+	.uleb128 0x6d
+	.string	"EADDRINUSE 98"
+	.byte	0x1
+	.uleb128 0x6e
+	.string	"EADDRNOTAVAIL 99"
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"ENETDOWN 100"
+	.byte	0x1
+	.uleb128 0x70
+	.string	"ENETUNREACH 101"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"ENETRESET 102"
+	.byte	0x1
+	.uleb128 0x72
+	.string	"ECONNABORTED 103"
+	.byte	0x1
+	.uleb128 0x73
+	.string	"ECONNRESET 104"
+	.byte	0x1
+	.uleb128 0x74
+	.string	"ENOBUFS 105"
+	.byte	0x1
+	.uleb128 0x75
+	.string	"EISCONN 106"
+	.byte	0x1
+	.uleb128 0x76
+	.string	"ENOTCONN 107"
+	.byte	0x1
+	.uleb128 0x77
+	.string	"ESHUTDOWN 108"
+	.byte	0x1
+	.uleb128 0x78
+	.string	"ETOOMANYREFS 109"
+	.byte	0x1
+	.uleb128 0x79
+	.string	"ETIMEDOUT 110"
+	.byte	0x1
+	.uleb128 0x7a
+	.string	"ECONNREFUSED 111"
+	.byte	0x1
+	.uleb128 0x7b
+	.string	"EHOSTDOWN 112"
+	.byte	0x1
+	.uleb128 0x7c
+	.string	"EHOSTUNREACH 113"
+	.byte	0x1
+	.uleb128 0x7d
+	.string	"EALREADY 114"
+	.byte	0x1
+	.uleb128 0x7e
+	.string	"EINPROGRESS 115"
+	.byte	0x1
+	.uleb128 0x7f
+	.string	"ESTALE 116"
+	.byte	0x1
+	.uleb128 0x80
+	.string	"EUCLEAN 117"
+	.byte	0x1
+	.uleb128 0x81
+	.string	"ENOTNAM 118"
+	.byte	0x1
+	.uleb128 0x82
+	.string	"ENAVAIL 119"
+	.byte	0x1
+	.uleb128 0x83
+	.string	"EISNAM 120"
+	.byte	0x1
+	.uleb128 0x84
+	.string	"EREMOTEIO 121"
+	.byte	0x1
+	.uleb128 0x85
+	.string	"EDQUOT 122"
+	.byte	0x1
+	.uleb128 0x86
+	.string	"ENOMEDIUM 123"
+	.byte	0x1
+	.uleb128 0x87
+	.string	"EMEDIUMTYPE 124"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x19
+	.string	"ENOTSUP EOPNOTSUPP"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"ECANCELED 125"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"errno (*__errno_location ())"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x25
+	.string	"__need_Emath"
+	.byte	0x2
+	.uleb128 0x3f
+	.string	"errno"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"errno __libc_errno"
+	.byte	0x1
+	.uleb128 0x4a
+	.string	"__set_errno(val) (errno = (val))"
+	.byte	0x1
+	.uleb128 0x5a
+	.string	"__error_t_defined 1"
+	.byte	0x2
+	.uleb128 0x5c
+	.string	"__need_error_t"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x10
+	.file 44 "../../include/signal.h"
+	.uleb128 0x2c
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"_SIGNAL_H "
+	.byte	0x3
+	.uleb128 0x22
+	.uleb128 0x1f
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"_SIGSET_H_fns 1"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"_EXTERN_INLINE extern __inline"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"__sigmask(sig) (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"__sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"__sigemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = 0; 0; }))"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"__sigfillset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; 0; }))"
+	.byte	0x1
+	.uleb128 0x48
+	.string	"__sigisemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; const sigset_t *__set = (set); int __ret = __set->__val[--__cnt]; while (!__ret && --__cnt >= 0) __ret = __set->__val[__cnt]; __ret == 0; }))"
+	.byte	0x1
+	.uleb128 0x4f
+	.ascii	"__sigandset("
+	.string	"dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] & __right->__val[__cnt]); 0; }))"
+	.byte	0x1
+	.uleb128 0x58
+	.ascii	"__sigorset("
+	.string	"dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] | __right->__val[__cnt]); 0; }))"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x27
+	.string	"__sig_atomic_t_defined "
+	.byte	0x2
+	.uleb128 0x2c
+	.string	"__need_sig_atomic_t"
+	.byte	0x2
+	.uleb128 0x34
+	.string	"__need_sigset_t"
+	.byte	0x3
+	.uleb128 0x3b
+	.file 45 "../../include/bits/signum.h"
+	.uleb128 0x2d
+	.byte	0x1
+	.uleb128 0x17
+	.string	"SIG_ERR ((__sighandler_t) -1)"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"SIG_DFL ((__sighandler_t) 0)"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"SIG_IGN ((__sighandler_t) 1)"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"SIG_HOLD ((__sighandler_t) 2)"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"SIGHUP 1"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"SIGINT 2"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"SIGQUIT 3"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"SIGILL 4"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"SIGTRAP 5"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"SIGABRT 6"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"SIGIOT 6"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"SIGBUS 7"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"SIGFPE 8"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"SIGKILL 9"
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"SIGUSR1 10"
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"SIGSEGV 11"
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"SIGUSR2 12"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"SIGPIPE 13"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"SIGALRM 14"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"SIGTERM 15"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"SIGSTKFLT 16"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"SIGCLD SIGCHLD"
+	.byte	0x1
+	.uleb128 0x33
+	.string	"SIGCHLD 17"
+	.byte	0x1
+	.uleb128 0x34
+	.string	"SIGCONT 18"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"SIGSTOP 19"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"SIGTSTP 20"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"SIGTTIN 21"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"SIGTTOU 22"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"SIGURG 23"
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"SIGXCPU 24"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"SIGXFSZ 25"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"SIGVTALRM 26"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"SIGPROF 27"
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"SIGWINCH 28"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"SIGPOLL SIGIO"
+	.byte	0x1
+	.uleb128 0x40
+	.string	"SIGIO 29"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"SIGPWR 30"
+	.byte	0x1
+	.uleb128 0x42
+	.string	"SIGSYS 31"
+	.byte	0x1
+	.uleb128 0x43
+	.string	"SIGUNUSED 31"
+	.byte	0x1
+	.uleb128 0x45
+	.string	"_NSIG 64"
+	.byte	0x1
+	.uleb128 0x48
+	.string	"SIGRTMIN (__libc_current_sigrtmin ())"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"SIGRTMAX (__libc_current_sigrtmax ())"
+	.byte	0x1
+	.uleb128 0x4d
+	.string	"__SIGRTMIN 32"
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"__SIGRTMAX (_NSIG - 1)"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0xa3
+	.string	"sigpause(sig) __sigpause ((sig), 1)"
+	.byte	0x1
+	.uleb128 0xaf
+	.string	"sigmask(sig) __sigmask(sig)"
+	.byte	0x1
+	.uleb128 0xbd
+	.string	"NSIG _NSIG"
+	.byte	0x1
+	.uleb128 0xcd
+	.string	"__need_timespec "
+	.byte	0x3
+	.uleb128 0xcf
+	.uleb128 0x1c
+	.byte	0x2
+	.uleb128 0x44
+	.string	"__need_clock_t"
+	.byte	0x2
+	.uleb128 0x54
+	.string	"__need_time_t"
+	.byte	0x2
+	.uleb128 0x60
+	.string	"__clockid_time_t"
+	.byte	0x2
+	.uleb128 0x6c
+	.string	"__need_timer_t"
+	.byte	0x2
+	.uleb128 0x80
+	.string	"__need_timespec"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xd2
+	.file 46 "../../include/bits/siginfo.h"
+	.uleb128 0x2e
+	.byte	0x3
+	.uleb128 0x1a
+	.uleb128 0xd
+	.byte	0x1
+	.uleb128 0x13
+	.string	"__WORDSIZE 32"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"__have_sigval_t 1"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"__have_siginfo_t 1"
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"__SI_MAX_SIZE 128"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"__SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)"
+	.byte	0x1
+	.uleb128 0x6f
+	.string	"si_pid _sifields._kill.si_pid"
+	.byte	0x1
+	.uleb128 0x70
+	.string	"si_uid _sifields._kill.si_uid"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"si_timer1 _sifields._timer._timer1"
+	.byte	0x1
+	.uleb128 0x72
+	.string	"si_timer2 _sifields._timer._timer2"
+	.byte	0x1
+	.uleb128 0x73
+	.string	"si_status _sifields._sigchld.si_status"
+	.byte	0x1
+	.uleb128 0x74
+	.string	"si_utime _sifields._sigchld.si_utime"
+	.byte	0x1
+	.uleb128 0x75
+	.string	"si_stime _sifields._sigchld.si_stime"
+	.byte	0x1
+	.uleb128 0x76
+	.string	"si_value _sifields._rt.si_sigval"
+	.byte	0x1
+	.uleb128 0x77
+	.string	"si_int _sifields._rt.si_sigval.sival_int"
+	.byte	0x1
+	.uleb128 0x78
+	.string	"si_ptr _sifields._rt.si_sigval.sival_ptr"
+	.byte	0x1
+	.uleb128 0x79
+	.string	"si_addr _sifields._sigfault.si_addr"
+	.byte	0x1
+	.uleb128 0x7a
+	.string	"si_band _sifields._sigpoll.si_band"
+	.byte	0x1
+	.uleb128 0x7b
+	.string	"si_fd _sifields._sigpoll.si_fd"
+	.byte	0x1
+	.uleb128 0x83
+	.string	"SI_ASYNCNL SI_ASYNCNL"
+	.byte	0x1
+	.uleb128 0x85
+	.string	"SI_TKILL SI_TKILL"
+	.byte	0x1
+	.uleb128 0x87
+	.string	"SI_SIGIO SI_SIGIO"
+	.byte	0x1
+	.uleb128 0x89
+	.string	"SI_ASYNCIO SI_ASYNCIO"
+	.byte	0x1
+	.uleb128 0x8b
+	.string	"SI_MESGQ SI_MESGQ"
+	.byte	0x1
+	.uleb128 0x8d
+	.string	"SI_TIMER SI_TIMER"
+	.byte	0x1
+	.uleb128 0x8f
+	.string	"SI_QUEUE SI_QUEUE"
+	.byte	0x1
+	.uleb128 0x91
+	.string	"SI_USER SI_USER"
+	.byte	0x1
+	.uleb128 0x93
+	.string	"SI_KERNEL SI_KERNEL"
+	.byte	0x1
+	.uleb128 0x9b
+	.string	"ILL_ILLOPC ILL_ILLOPC"
+	.byte	0x1
+	.uleb128 0x9d
+	.string	"ILL_ILLOPN ILL_ILLOPN"
+	.byte	0x1
+	.uleb128 0x9f
+	.string	"ILL_ILLADR ILL_ILLADR"
+	.byte	0x1
+	.uleb128 0xa1
+	.string	"ILL_ILLTRP ILL_ILLTRP"
+	.byte	0x1
+	.uleb128 0xa3
+	.string	"ILL_PRVOPC ILL_PRVOPC"
+	.byte	0x1
+	.uleb128 0xa5
+	.string	"ILL_PRVREG ILL_PRVREG"
+	.byte	0x1
+	.uleb128 0xa7
+	.string	"ILL_COPROC ILL_COPROC"
+	.byte	0x1
+	.uleb128 0xa9
+	.string	"ILL_BADSTK ILL_BADSTK"
+	.byte	0x1
+	.uleb128 0xb0
+	.string	"FPE_INTDIV FPE_INTDIV"
+	.byte	0x1
+	.uleb128 0xb2
+	.string	"FPE_INTOVF FPE_INTOVF"
+	.byte	0x1
+	.uleb128 0xb4
+	.string	"FPE_FLTDIV FPE_FLTDIV"
+	.byte	0x1
+	.uleb128 0xb6
+	.string	"FPE_FLTOVF FPE_FLTOVF"
+	.byte	0x1
+	.uleb128 0xb8
+	.string	"FPE_FLTUND FPE_FLTUND"
+	.byte	0x1
+	.uleb128 0xba
+	.string	"FPE_FLTRES FPE_FLTRES"
+	.byte	0x1
+	.uleb128 0xbc
+	.string	"FPE_FLTINV FPE_FLTINV"
+	.byte	0x1
+	.uleb128 0xbe
+	.string	"FPE_FLTSUB FPE_FLTSUB"
+	.byte	0x1
+	.uleb128 0xc5
+	.string	"SEGV_MAPERR SEGV_MAPERR"
+	.byte	0x1
+	.uleb128 0xc7
+	.string	"SEGV_ACCERR SEGV_ACCERR"
+	.byte	0x1
+	.uleb128 0xce
+	.string	"BUS_ADRALN BUS_ADRALN"
+	.byte	0x1
+	.uleb128 0xd0
+	.string	"BUS_ADRERR BUS_ADRERR"
+	.byte	0x1
+	.uleb128 0xd2
+	.string	"BUS_OBJERR BUS_OBJERR"
+	.byte	0x1
+	.uleb128 0xd9
+	.string	"TRAP_BRKPT TRAP_BRKPT"
+	.byte	0x1
+	.uleb128 0xdb
+	.string	"TRAP_TRACE TRAP_TRACE"
+	.byte	0x1
+	.uleb128 0xe2
+	.string	"CLD_EXITED CLD_EXITED"
+	.byte	0x1
+	.uleb128 0xe4
+	.string	"CLD_KILLED CLD_KILLED"
+	.byte	0x1
+	.uleb128 0xe6
+	.string	"CLD_DUMPED CLD_DUMPED"
+	.byte	0x1
+	.uleb128 0xe8
+	.string	"CLD_TRAPPED CLD_TRAPPED"
+	.byte	0x1
+	.uleb128 0xea
+	.string	"CLD_STOPPED CLD_STOPPED"
+	.byte	0x1
+	.uleb128 0xec
+	.string	"CLD_CONTINUED CLD_CONTINUED"
+	.byte	0x1
+	.uleb128 0xf3
+	.string	"POLL_IN POLL_IN"
+	.byte	0x1
+	.uleb128 0xf5
+	.string	"POLL_OUT POLL_OUT"
+	.byte	0x1
+	.uleb128 0xf7
+	.string	"POLL_MSG POLL_MSG"
+	.byte	0x1
+	.uleb128 0xf9
+	.string	"POLL_ERR POLL_ERR"
+	.byte	0x1
+	.uleb128 0xfb
+	.string	"POLL_PRI POLL_PRI"
+	.byte	0x1
+	.uleb128 0xfd
+	.string	"POLL_HUP POLL_HUP"
+	.byte	0x2
+	.uleb128 0x100
+	.string	"__need_siginfo_t"
+	.byte	0x1
+	.uleb128 0x106
+	.string	"__have_sigevent_t 1"
+	.byte	0x1
+	.uleb128 0x109
+	.string	"__SIGEV_MAX_SIZE 64"
+	.byte	0x1
+	.uleb128 0x10d
+	.string	"__SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)"
+	.byte	0x1
+	.uleb128 0x126
+	.string	"sigev_notify_function _sigev_un._sigev_thread._function"
+	.byte	0x1
+	.uleb128 0x127
+	.string	"sigev_notify_attributes _sigev_un._sigev_thread._attribute"
+	.byte	0x1
+	.uleb128 0x12d
+	.string	"SIGEV_SIGNAL SIGEV_SIGNAL"
+	.byte	0x1
+	.uleb128 0x12f
+	.string	"SIGEV_NONE SIGEV_NONE"
+	.byte	0x1
+	.uleb128 0x131
+	.string	"SIGEV_THREAD SIGEV_THREAD"
+	.byte	0x1
+	.uleb128 0x134
+	.string	"SIGEV_THREAD_ID SIGEV_THREAD_ID"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0xf4
+	.file 47 "../../include/bits/sigaction.h"
+	.uleb128 0x2f
+	.byte	0x1
+	.uleb128 0x25
+	.string	"sa_handler __sigaction_handler.sa_handler"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"sa_sigaction __sigaction_handler.sa_sigaction"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"SA_NOCLDSTOP 1"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"SA_NOCLDWAIT 2"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"SA_SIGINFO 4"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"SA_ONSTACK 0x08000000"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"SA_RESTART 0x10000000"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"SA_NODEFER 0x40000000"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"SA_RESETHAND 0x80000000"
+	.byte	0x1
+	.uleb128 0x42
+	.string	"SA_INTERRUPT 0x20000000"
+	.byte	0x1
+	.uleb128 0x45
+	.string	"SA_NOMASK SA_NODEFER"
+	.byte	0x1
+	.uleb128 0x46
+	.string	"SA_ONESHOT SA_RESETHAND"
+	.byte	0x1
+	.uleb128 0x47
+	.string	"SA_STACK SA_ONSTACK"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"SIG_BLOCK 0"
+	.byte	0x1
+	.uleb128 0x4c
+	.string	"SIG_UNBLOCK 1"
+	.byte	0x1
+	.uleb128 0x4d
+	.string	"SIG_SETMASK 2"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x139
+	.string	"sv_onstack sv_flags"
+	.byte	0x1
+	.uleb128 0x13d
+	.string	"SV_ONSTACK (1 << 0)"
+	.byte	0x1
+	.uleb128 0x13e
+	.string	"SV_INTERRUPT (1 << 1)"
+	.byte	0x1
+	.uleb128 0x13f
+	.string	"SV_RESETHAND (1 << 2)"
+	.byte	0x3
+	.uleb128 0x14d
+	.file 48 "../../include/bits/sigcontext.h"
+	.uleb128 0x30
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"sigcontext_struct sigcontext"
+	.byte	0x3
+	.uleb128 0x1d
+	.file 49 "/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include/asm/sigcontext.h"
+	.uleb128 0x31
+	.byte	0x1
+	.uleb128 0x2
+	.string	"__ASM_SH_SIGCONTEXT_H "
+	.byte	0x4
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x15c
+	.file 50 "../../include/bits/sigstack.h"
+	.uleb128 0x32
+	.byte	0x1
+	.uleb128 0x25
+	.string	"SS_ONSTACK SS_ONSTACK"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"SS_DISABLE SS_DISABLE"
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"MINSIGSTKSZ 2048"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"SIGSTKSZ 8192"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x15f
+	.file 51 "../../include/ucontext.h"
+	.uleb128 0x33
+	.byte	0x1
+	.uleb128 0x14
+	.string	"_UCONTEXT_H 1"
+	.byte	0x3
+	.uleb128 0x1a
+	.file 52 "../../include/sys/ucontext.h"
+	.uleb128 0x34
+	.byte	0x1
+	.uleb128 0x16
+	.string	"_SYS_UCONTEXT_H 1"
+	.byte	0x3
+	.uleb128 0x1a
+	.uleb128 0x2c
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x1e
+	.uleb128 0x30
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x23
+	.string	"NFPREG 16"
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"R0 R0"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"R1 R1"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"R2 R2"
+	.byte	0x1
+	.uleb128 0x33
+	.string	"R3 R3"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"R4 R4"
+	.byte	0x1
+	.uleb128 0x37
+	.string	"R5 R5"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"R6 R6"
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"R7 R7"
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"R8 R8"
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"R9 R9"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"R10 R10"
+	.byte	0x1
+	.uleb128 0x43
+	.string	"R11 R11"
+	.byte	0x1
+	.uleb128 0x45
+	.string	"R12 R12"
+	.byte	0x1
+	.uleb128 0x47
+	.string	"R13 R13"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"R14 R14"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"R15 R15"
+	.byte	0x1
+	.uleb128 0x52
+	.string	"NFPREG 16"
+	.byte	0x4
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x183
+	.file 53 "../../include/bits/sigthread.h"
+	.uleb128 0x35
+	.byte	0x1
+	.uleb128 0x15
+	.string	"_BITS_SIGTHREAD_H 1"
+	.byte	0x4
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x12
+	.file 54 "tst_types.h"
+	.uleb128 0x36
+	.byte	0x1
+	.uleb128 0xb
+	.string	"TST_TYPES_H "
+	.byte	0x3
+	.uleb128 0xf
+	.uleb128 0x12
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"_WCHAR_H 1"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"__need___FILE "
+	.byte	0x1
+	.uleb128 0x27
+	.string	"__need_FILE "
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"__need___va_list "
+	.byte	0x3
+	.uleb128 0x2d
+	.uleb128 0x14
+	.byte	0x2
+	.uleb128 0x25
+	.string	"__need___va_list"
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"__need_size_t "
+	.byte	0x1
+	.uleb128 0x30
+	.string	"__need_wchar_t "
+	.byte	0x1
+	.uleb128 0x31
+	.string	"__need_NULL "
+	.byte	0x1
+	.uleb128 0x33
+	.string	"__need_wint_t "
+	.byte	0x3
+	.uleb128 0x35
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xa3
+	.string	"__need_ptrdiff_t"
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x159
+	.string	"__need_wchar_t"
+	.byte	0x2
+	.uleb128 0x165
+	.string	"__need_wint_t"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x1
+	.uleb128 0x19e
+	.string	"offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x62
+	.string	"__need_mbstate_t"
+	.byte	0x1
+	.uleb128 0x78
+	.string	"WEOF (0xffffffffu)"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x10
+	.file 55 "../../include/wctype.h"
+	.uleb128 0x37
+	.byte	0x1
+	.uleb128 0x22
+	.string	"_WCTYPE_H 1"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"__need_wint_t "
+	.byte	0x3
+	.uleb128 0x28
+	.uleb128 0xa
+	.byte	0x2
+	.uleb128 0xa3
+	.string	"__need_ptrdiff_t"
+	.byte	0x2
+	.uleb128 0xec
+	.string	"__need_size_t"
+	.byte	0x2
+	.uleb128 0x159
+	.string	"__need_wchar_t"
+	.byte	0x2
+	.uleb128 0x165
+	.string	"__need_wint_t"
+	.byte	0x2
+	.uleb128 0x18e
+	.string	"NULL"
+	.byte	0x1
+	.uleb128 0x193
+	.string	"NULL ((void *)0)"
+	.byte	0x2
+	.uleb128 0x199
+	.string	"__need_NULL"
+	.byte	0x1
+	.uleb128 0x19e
+	.string	"offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)"
+	.byte	0x4
+	.byte	0x2
+	.uleb128 0x3b
+	.string	"__need_iswxxx"
+	.byte	0x1
+	.uleb128 0x41
+	.string	"__iswxxx_defined 1"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"_ISwbit(bit) (1 << (bit))"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x11
+	.file 56 "tst_funcs.h"
+	.uleb128 0x38
+	.byte	0x1
+	.uleb128 0xb
+	.string	"TST_FUNCS_H "
+	.byte	0x1
+	.uleb128 0xd
+	.string	"C_SUCCESS 'S'"
+	.byte	0x1
+	.uleb128 0xe
+	.string	"C_FAILURE 'F'"
+	.byte	0x1
+	.uleb128 0xf
+	.string	"C_IGNORED 'I'"
+	.byte	0x1
+	.uleb128 0x10
+	.string	"C_INVALID 'D'"
+	.byte	0x1
+	.uleb128 0x11
+	.string	"C_LOCALES 'L'"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"Result(C,S,E,M) result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M))"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"CASE_0 0"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"CASE_1 1"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"CASE_2 2"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"CASE_3 3"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"CASE_4 4"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"CASE_5 5"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"CASE_6 6"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"CASE_7 7"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"CASE_8 8"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"CASE_9 9"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"MS_PASSED \"PASSED\""
+	.byte	0x1
+	.uleb128 0x26
+	.string	"MS_SPACE \"\t \""
+	.byte	0x1
+	.uleb128 0x27
+	.string	"MS_FAILED \"\t \""
+	.byte	0x1
+	.uleb128 0x28
+	.string	"MS_NOTEST \"NOTEST\""
+	.byte	0x1
+	.uleb128 0x29
+	.string	"MS_ABORTU \"ABEND0\""
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"MS_ABORT \"ABEND1\""
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"MK_PASSED 0x00"
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"MK_SPACE 0x01"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"MK_NOTEST 0x02"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"MK_ABORTU 0x04"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"MK_ABORT 0x08"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"TST_ABS(x) (((x) > 0) ? (x) : -(x))"
+	.byte	0x1
+	.uleb128 0x38
+	.string	"TMD_ERRET(_type_) int err_val; int ret_flg; _type_ ret_val"
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"TMD_RECHEAD(_FUNC_) typedef struct { TIN_ ##_FUNC_ ##_REC input; TEX_ ##_FUNC_ ##_REC expect; int is_last; } TST_ ##_FUNC_ ##_REC; typedef struct { TST_HEAD hd; TST_ ##_FUNC_ ##_REC rec[ MAX_LOC_TEST ]; } TST_ ##_FUNC_"
+	.byte	0x1
+	.uleb128 0x48
+	.string	"TST_FTYP(func) tst_ ##func ##_loc"
+	.byte	0x1
+	.uleb128 0x49
+	.string	"TST_HEAD(func) tst_ ##func ##_loc[ loc ].hd"
+	.byte	0x1
+	.uleb128 0x4a
+	.string	"TST_INPUT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input"
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"TST_EXPECT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect"
+	.byte	0x1
+	.uleb128 0x4c
+	.string	"TST_INPUT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input.seq[ seq_num ]"
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"TST_EXPECT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ]"
+	.byte	0x1
+	.uleb128 0x50
+	.string	"TST_IS_LAST(func) tst_ ##func ##_loc[ loc ].rec[ rec ].is_last"
+	.byte	0x1
+	.uleb128 0x54
+	.string	"TST_DECL_VARS(_type_) int loc, rec, err_count = 0; int warn_count __attribute__ ((unused)); int func_id, seq_num = 0; const char *locale; int err_exp, ret_flg; int errno_save = 0; _type_ ret_exp; _type_ ret"
+	.byte	0x1
+	.uleb128 0x5e
+	.string	"TST_DO_TEST(o_func) for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc)"
+	.byte	0x1
+	.uleb128 0x62
+	.ascii	"TST_HEAD_LOCALE(ofunc,s_func) func_id = TST_HEAD (ofunc"
+	.string	").func_id; locale = TST_HEAD (ofunc).locale; if (setlocale (LC_ALL, locale) == NULL) { fprintf (stderr, \"Warning : can't set locale: %s\\nskipping ...\\n\", locale); result (fp, C_LOCALES, s_func, locale, 0, 0, 0, \"can't set locale\"); ++err_count; continue; }"
+	.byte	0x1
+	.uleb128 0x6e
+	.string	"TST_DO_REC(ofunc) for (rec=0; !TST_IS_LAST (ofunc); ++rec)"
+	.byte	0x1
+	.uleb128 0x71
+	.string	"TST_DO_SEQ(_count_) for (seq_num=0; seq_num < _count_; seq_num++)"
+	.byte	0x1
+	.uleb128 0x74
+	.string	"TST_GET_ERRET(_ofunc_) err_exp = TST_EXPECT (_ofunc_).err_val; ret_flg = TST_EXPECT (_ofunc_).ret_flg; ret_exp = TST_EXPECT (_ofunc_).ret_val"
+	.byte	0x1
+	.uleb128 0x79
+	.string	"TST_GET_ERRET_SEQ(_ofunc_) err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val"
+	.byte	0x1
+	.uleb128 0x7e
+	.string	"TST_CLEAR_ERRNO errno = 0"
+	.byte	0x1
+	.uleb128 0x81
+	.string	"TST_SAVE_ERRNO errno_save = errno"
+	.byte	0x1
+	.uleb128 0x85
+	.ascii	"TST_IF_RETURN(_s_func_) if (err_exp != 0) { if (errno_save ="
+	.ascii	"= err_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1,"
+	.ascii	" seq_num+1, 1, MS_PASSED); } else { err_count++; result (fp,"
+	.ascii	" C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1, \"the val"
+	.ascii	"ue of errno is different from an expected value\"); } } if ("
+	.ascii	"ret_f"
+	.string	"lg == 1) { if (ret == ret_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2, \"the return value is different from an expected value\"); } } else"
+	.byte	0x1
+	.uleb128 0xa5
+	.string	"TEX_ERRET_REC(_type_) struct { TMD_ERRET (_type_); }"
+	.byte	0x1
+	.uleb128 0xaa
+	.string	"TEX_ERRET_REC_SEQ(_type_,_count_) struct { struct { TMD_ERRET (_type_); } seq[ _count_ ]; }"
+	.byte	0x1
+	.uleb128 0xb5
+	.string	"TST_ISW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_ISW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (int) TEX_ISW ##_FUNC_ ##_REC; TMD_RECHEAD (ISW ##_FUNC_)"
+	.byte	0x1
+	.uleb128 0xbe
+	.ascii	"TST_FUNC_ISW(_FUNC_,_func_) int tst_isw ##_func_ (FILE *fp, "
+	.ascii	"int debug_flg) { TST_DECL_VARS(int); wint_t wc; TST_DO_TEST "
+	.ascii	"(isw ##_func_) { TST_HEAD_LOCALE (isw ##_func_, S_ISW ##_FUN"
+	.ascii	"C_); TST_DO_REC(isw ##_func_) { TST_GET_ERRET (isw ##_func_)"
+	.ascii	"; wc = TST_INPUT (isw ##_func_).wc; ret = isw ##_func_ (wc);"
+	.ascii	" if (debug_flg) { fprintf (stdout, \"isw*() [ %s : %d ] ret "
+	.ascii	"= %d\\n\", locale, rec+1, ret); } TST_IF_RETURN (S_ISW ##_FU"
+	.ascii	"NC_) { if (ret !"
+	.string	"= 0) { result (fp, C_SUCCESS, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, \"the function returned 0, but should be non-zero\"); } } } } return err_count; }"
+	.byte	0x1
+	.uleb128 0xeb
+	.string	"TST_TOW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_TOW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (wint_t) TEX_TOW ##_FUNC_ ##_REC; TMD_RECHEAD (TOW ##_FUNC_)"
+	.byte	0x1
+	.uleb128 0xf4
+	.ascii	"TST_FUNC_TOW(_FUNC_,_func_) int tst_tow ##_func_ (FILE *fp, "
+	.ascii	"int debug_flg) { TST_DECL_VARS (wint_t); wint_t wc; TST_DO_T"
+	.ascii	"EST (tow ##_func_) { TST_HEAD_LOCALE (tow ##_func_, S_TOW ##"
+	.ascii	"_FUNC_); TST_DO_REC ("
+	.string	"tow ##_func_) { TST_GET_ERRET (tow ##_func_); wc = TST_INPUT (tow ##_func_).wc; ret = tow ##_func_ (wc); if (debug_flg) { fprintf (stdout, \"tow*() [ %s : %d ] ret = 0x%x\\n\", locale, rec+1, ret); } TST_IF_RETURN (S_TOW ##_FUNC_) { }; } } return err_count; }"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x12
+	.file 57 "tgn_funcdef.h"
+	.uleb128 0x39
+	.byte	0x1
+	.uleb128 0x2
+	.string	"TGN_FUNCDEF_H "
+	.byte	0x1
+	.uleb128 0x5
+	.string	"Tiswalnum 1"
+	.byte	0x1
+	.uleb128 0x6
+	.string	"Tiswalpha 2"
+	.byte	0x1
+	.uleb128 0x7
+	.string	"Tiswcntrl 3"
+	.byte	0x1
+	.uleb128 0x8
+	.string	"Tiswctype 4"
+	.byte	0x1
+	.uleb128 0x9
+	.string	"Tiswdigit 5"
+	.byte	0x1
+	.uleb128 0xa
+	.string	"Tiswgraph 6"
+	.byte	0x1
+	.uleb128 0xb
+	.string	"Tiswlower 7"
+	.byte	0x1
+	.uleb128 0xc
+	.string	"Tiswprint 8"
+	.byte	0x1
+	.uleb128 0xd
+	.string	"Tiswpunct 9"
+	.byte	0x1
+	.uleb128 0xe
+	.string	"Tiswspace 10"
+	.byte	0x1
+	.uleb128 0xf
+	.string	"Tiswupper 11"
+	.byte	0x1
+	.uleb128 0x10
+	.string	"Tiswxdigit 12"
+	.byte	0x1
+	.uleb128 0x11
+	.string	"Tmblen 13"
+	.byte	0x1
+	.uleb128 0x12
+	.string	"Tmbrlen 14"
+	.byte	0x1
+	.uleb128 0x13
+	.string	"Tmbrtowc 15"
+	.byte	0x1
+	.uleb128 0x14
+	.string	"Tmbsrtowcs 16"
+	.byte	0x1
+	.uleb128 0x15
+	.string	"Tmbstowcs 17"
+	.byte	0x1
+	.uleb128 0x16
+	.string	"Tmbtowc 18"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"Tstrcoll 19"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"Tstrfmon 20"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"Tstrxfrm 21"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"Tswscanf 22"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"Ttowctrans 23"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"Ttowlower 24"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"Ttowupper 25"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"Twcrtomb 26"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"Twcscat 27"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"Twcschr 28"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"Twcscmp 29"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"Twcscoll 30"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"Twcscpy 31"
+	.byte	0x1
+	.uleb128 0x24
+	.string	"Twcscspn 32"
+	.byte	0x1
+	.uleb128 0x25
+	.string	"Twcslen 33"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"Twcsncat 34"
+	.byte	0x1
+	.uleb128 0x27
+	.string	"Twcsncmp 35"
+	.byte	0x1
+	.uleb128 0x28
+	.string	"Twcsncpy 36"
+	.byte	0x1
+	.uleb128 0x29
+	.string	"Twcspbrk 37"
+	.byte	0x1
+	.uleb128 0x2a
+	.string	"Twcsrtombs 38"
+	.byte	0x1
+	.uleb128 0x2b
+	.string	"Twcsspn 39"
+	.byte	0x1
+	.uleb128 0x2c
+	.string	"Twcsstr 40"
+	.byte	0x1
+	.uleb128 0x2d
+	.string	"Twcstod 41"
+	.byte	0x1
+	.uleb128 0x2e
+	.string	"Twcstok 42"
+	.byte	0x1
+	.uleb128 0x2f
+	.string	"Twcstombs 43"
+	.byte	0x1
+	.uleb128 0x30
+	.string	"Twcswidth 44"
+	.byte	0x1
+	.uleb128 0x31
+	.string	"Twcsxfrm 45"
+	.byte	0x1
+	.uleb128 0x32
+	.string	"Twctob 46"
+	.byte	0x1
+	.uleb128 0x33
+	.string	"Twctomb 47"
+	.byte	0x1
+	.uleb128 0x34
+	.string	"Twctrans 48"
+	.byte	0x1
+	.uleb128 0x35
+	.string	"Twctype 49"
+	.byte	0x1
+	.uleb128 0x36
+	.string	"Twcwidth 50"
+	.byte	0x1
+	.uleb128 0x39
+	.string	"S_ISWALNUM \"iswalnum\""
+	.byte	0x1
+	.uleb128 0x3a
+	.string	"S_ISWALPHA \"iswalpha\""
+	.byte	0x1
+	.uleb128 0x3b
+	.string	"S_ISWCNTRL \"iswcntrl\""
+	.byte	0x1
+	.uleb128 0x3c
+	.string	"S_ISWCTYPE \"iswctype\""
+	.byte	0x1
+	.uleb128 0x3d
+	.string	"S_ISWDIGIT \"iswdigit\""
+	.byte	0x1
+	.uleb128 0x3e
+	.string	"S_ISWGRAPH \"iswgraph\""
+	.byte	0x1
+	.uleb128 0x3f
+	.string	"S_ISWLOWER \"iswlower\""
+	.byte	0x1
+	.uleb128 0x40
+	.string	"S_ISWPRINT \"iswprint\""
+	.byte	0x1
+	.uleb128 0x41
+	.string	"S_ISWPUNCT \"iswpunct\""
+	.byte	0x1
+	.uleb128 0x42
+	.string	"S_ISWSPACE \"iswspace\""
+	.byte	0x1
+	.uleb128 0x43
+	.string	"S_ISWUPPER \"iswupper\""
+	.byte	0x1
+	.uleb128 0x44
+	.string	"S_ISWXDIGIT \"iswxdigit\""
+	.byte	0x1
+	.uleb128 0x45
+	.string	"S_MBLEN \"mblen\""
+	.byte	0x1
+	.uleb128 0x46
+	.string	"S_MBRLEN \"mbrlen\""
+	.byte	0x1
+	.uleb128 0x47
+	.string	"S_MBRTOWC \"mbrtowc\""
+	.byte	0x1
+	.uleb128 0x48
+	.string	"S_MBSRTOWCS \"mbsrtowcs\""
+	.byte	0x1
+	.uleb128 0x49
+	.string	"S_MBSTOWCS \"mbstowcs\""
+	.byte	0x1
+	.uleb128 0x4a
+	.string	"S_MBTOWC \"mbtowc\""
+	.byte	0x1
+	.uleb128 0x4b
+	.string	"S_STRCOLL \"strcoll\""
+	.byte	0x1
+	.uleb128 0x4c
+	.string	"S_STRFMON \"strfmon\""
+	.byte	0x1
+	.uleb128 0x4d
+	.string	"S_STRXFRM \"strxfrm\""
+	.byte	0x1
+	.uleb128 0x4e
+	.string	"S_SWSCANF \"swscanf\""
+	.byte	0x1
+	.uleb128 0x4f
+	.string	"S_TOWCTRANS \"towctrans\""
+	.byte	0x1
+	.uleb128 0x50
+	.string	"S_TOWLOWER \"towlower\""
+	.byte	0x1
+	.uleb128 0x51
+	.string	"S_TOWUPPER \"towupper\""
+	.byte	0x1
+	.uleb128 0x52
+	.string	"S_WCRTOMB \"wcrtomb\""
+	.byte	0x1
+	.uleb128 0x53
+	.string	"S_WCSCAT \"wcscat\""
+	.byte	0x1
+	.uleb128 0x54
+	.string	"S_WCSCHR \"wcschr\""
+	.byte	0x1
+	.uleb128 0x55
+	.string	"S_WCSCMP \"wcscmp\""
+	.byte	0x1
+	.uleb128 0x56
+	.string	"S_WCSCOLL \"wcscoll\""
+	.byte	0x1
+	.uleb128 0x57
+	.string	"S_WCSCPY \"wcscpy\""
+	.byte	0x1
+	.uleb128 0x58
+	.string	"S_WCSCSPN \"wcscspn\""
+	.byte	0x1
+	.uleb128 0x59
+	.string	"S_WCSLEN \"wcslen\""
+	.byte	0x1
+	.uleb128 0x5a
+	.string	"S_WCSNCAT \"wcsncat\""
+	.byte	0x1
+	.uleb128 0x5b
+	.string	"S_WCSNCMP \"wcsncmp\""
+	.byte	0x1
+	.uleb128 0x5c
+	.string	"S_WCSNCPY \"wcsncpy\""
+	.byte	0x1
+	.uleb128 0x5d
+	.string	"S_WCSPBRK \"wcspbrk\""
+	.byte	0x1
+	.uleb128 0x5e
+	.string	"S_WCSRTOMBS \"wcsrtombs\""
+	.byte	0x1
+	.uleb128 0x5f
+	.string	"S_WCSSPN \"wcsspn\""
+	.byte	0x1
+	.uleb128 0x60
+	.string	"S_WCSSTR \"wcsstr\""
+	.byte	0x1
+	.uleb128 0x61
+	.string	"S_WCSTOD \"wcstod\""
+	.byte	0x1
+	.uleb128 0x62
+	.string	"S_WCSTOK \"wcstok\""
+	.byte	0x1
+	.uleb128 0x63
+	.string	"S_WCSTOMBS \"wcstombs\""
+	.byte	0x1
+	.uleb128 0x64
+	.string	"S_WCSWIDTH \"wcswidth\""
+	.byte	0x1
+	.uleb128 0x65
+	.string	"S_WCSXFRM \"wcsxfrm\""
+	.byte	0x1
+	.uleb128 0x66
+	.string	"S_WCTOB \"wctob\""
+	.byte	0x1
+	.uleb128 0x67
+	.string	"S_WCTOMB \"wctomb\""
+	.byte	0x1
+	.uleb128 0x68
+	.string	"S_WCTRANS \"wctrans\""
+	.byte	0x1
+	.uleb128 0x69
+	.string	"S_WCTYPE \"wctype\""
+	.byte	0x1
+	.uleb128 0x6a
+	.string	"S_WCWIDTH \"wcwidth\""
+	.byte	0x4
+	.byte	0x1
+	.uleb128 0x13
+	.string	"MBSSIZE 24"
+	.byte	0x1
+	.uleb128 0x14
+	.string	"WCSSIZE 12"
+	.byte	0x1
+	.uleb128 0x15
+	.string	"MONFMTSIZE 16"
+	.byte	0x1
+	.uleb128 0x16
+	.string	"MONSIZE 64"
+	.byte	0x1
+	.uleb128 0x17
+	.string	"USE_MBCURMAX 99"
+	.byte	0x1
+	.uleb128 0x18
+	.string	"TST_DBL_EPS 2.22153e-16"
+	.byte	0x1
+	.uleb128 0x19
+	.string	"WCSTOK_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x1a
+	.string	"MBLEN_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x1b
+	.string	"MBTOWC_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"MBSTOWCS_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x1d
+	.string	"WCTOMB_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x1e
+	.string	"WCSTOMBS_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"MBRLEN_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x20
+	.string	"MBRTOWC_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x21
+	.string	"MBSRTOWCS_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x22
+	.string	"WCRTOMB_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x23
+	.string	"WCSRTOMBS_SEQNUM 3"
+	.byte	0x1
+	.uleb128 0x26
+	.string	"MAX_LOC_TEST 300"
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x13
+	.file 58 "tgn_locdef.h"
+	.uleb128 0x3a
+	.byte	0x1
+	.uleb128 0x2
+	.string	"TGN_LOCDEF_H "
+	.byte	0x1
+	.uleb128 0x7
+	.string	"TST_LOC_C \"C\""
+	.byte	0x1
+	.uleb128 0xa
+	.string	"TST_LOC_de \"de_DE.ISO-8859-1\""
+	.byte	0x1
+	.uleb128 0xe
+	.string	"TST_LOC_enUS \"en_US.ANSI_X3.4-1968\""
+	.byte	0x1
+	.uleb128 0x15
+	.string	"TST_LOC_eucJP \"ja_JP.EUC-JP\""
+	.byte	0x1
+	.uleb128 0x1c
+	.string	"TST_LOC_de_UTF8 \"de_DE.UTF-8\""
+	.byte	0x1
+	.uleb128 0x1f
+	.string	"TST_LOC_end \"lastEntry\""
+	.byte	0x4
+	.section	.rodata
+	.align 2
+.LC0:
+	.string	"\nTST_MBWC ===> %s ...\n"
+	.text
+	.align 1
+	.global	main
+	.type	main, @function
+main:
+.LFB5:
+	.loc 4 23 0
+	mov.l	r14,@-r15
+.LCFI0:
+	sts.l	pr,@-r15
+.LCFI1:
+	add	#-20,r15
+.LCFI2:
+	mov	r15,r14
+.LCFI3:
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	r4,@(52,r1)
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	r5,@(48,r1)
+	.loc 4 27 0
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(52,r1),r2
+	mov	#1,r1
+	cmp/gt	r1,r2
+	bf	.L2
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(48,r1),r1
+	add	#4,r1
+	mov.l	@r1,r1
+	mov	r1,r4
+	mov.l	.L8,r1
+	jsr	@r1
+	nop
+	mov.l	r0,@r14
+	bra	.L4
+	nop
+	.align 1
+.L2:
+	mov	#0,r1
+	mov.l	r1,@r14
+.L4:
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@r14,r2
+	mov.l	r2,@(60,r1)
+	.loc 4 29 0
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(60,r1),r1
+	tst	r1,r1
+	bt	.L5
+	.loc 4 31 0
+	mov.l	.L12,r1
+	mov.l	@r1,r2
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(48,r1),r1
+	mov.l	@r1,r3
+	mov.l	.L10,r1
+	mov	r2,r4
+	mov	r1,r5
+	mov	r3,r6
+	mov.l	.L11,r1
+	jsr	@r1
+	nop
+.L5:
+	.loc 4 33 0
+	mov.l	.L12,r1
+	mov.l	@r1,r2
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(60,r1),r1
+	mov	r2,r4
+	mov	r1,r5
+	mov.l	.L13,r1
+	jsr	@r1
+	nop
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	r0,@(56,r1)
+	.loc 4 35 0
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(56,r1),r1
+	tst	r1,r1
+	mov	#-1,r1
+	negc	r1,r1
+	mov	r1,r0
+	.loc 4 36 0
+	add	#20,r14
+	mov	r14,r15
+	lds.l	@r15+,pr
+	mov.l	@r15+,r14
+	rts
+	nop
+.L14:
+	.align 2
+.L8:
+	.long	atoi
+.L12:
+	.long	stdout
+.L10:
+	.long	.LC0
+.L11:
+	.long	fprintf
+.L13:
+	.long	tst_mbrlen
+.LFE5:
+	.size	main, .-main
+	.section	.debug_macinfo
+	.byte	0x1
+	.uleb128 0x26
+	.string	"MAX_RESULT_REC 132"
+	.section	.rodata
+	.align 2
+.LC1:
+	.string	"Warning: result(): can't write the result: %s:%s:%d:%d:%s\n"
+	.align 2
+.LC2:
+	.string	"%s:%s:%d:%d:%d:%c:%s\n"
+	.text
+	.align 1
+	.global	result
+	.type	result, @function
+result:
+.LFB6:
+	.loc 4 45 0
+	mov.l	r8,@-r15
+.LCFI4:
+	mov.l	r14,@-r15
+.LCFI5:
+	sts.l	pr,@-r15
+.LCFI6:
+	add	#-20,r15
+.LCFI7:
+	mov	r15,r14
+.LCFI8:
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	r4,@(60,r1)
+	mov	r5,r2
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	r6,@(52,r1)
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	r7,@(48,r1)
+	mov	r14,r1
+	add	#12,r1
+	mov.b	r2,@r1
+	.loc 4 46 0
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(60,r1),r1
+	tst	r1,r1
+	bt	.L16
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(52,r1),r1
+	mov	r1,r4
+	mov.l	.L25,r1
+	jsr	@r1
+	nop
+	mov	r0,r8
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(48,r1),r1
+	mov	r1,r4
+	mov.l	.L25,r1
+	jsr	@r1
+	nop
+	add	r0,r8
+	mov.l	@(44,r14),r1
+	mov	r1,r4
+	mov.l	.L25,r1
+	jsr	@r1
+	nop
+	mov	r8,r1
+	add	r0,r1
+	mov	r1,r2
+	add	#32,r2
+	mov.w	.L26,r1
+	cmp/hi	r1,r2
+	bf	.L18
+.L16:
+	.loc 4 49 0
+	mov.l	.L27,r1
+	mov.l	@r1,r7
+	add	#-12,r15
+	mov	r15,r2
+	mov.l	.L28,r6
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(52,r1),r0
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(48,r1),r3
+	mov.l	@(32,r14),r1
+	mov.l	r1,@r2
+	mov.l	@(40,r14),r1
+	mov.l	r1,@(4,r2)
+	mov.l	@(44,r14),r1
+	mov.l	r1,@(8,r2)
+	mov	r7,r4
+	mov	r6,r5
+	mov	r0,r6
+	mov	r3,r7
+	mov.l	.L29,r1
+.LCFI9:
+	jsr	@r1
+	nop
+	add	#12,r15
+	.loc 4 52 0
+	mov	#0,r1
+	mov.l	r1,@r14
+	bra	.L19
+	nop
+	.align 1
+.L18:
+	.loc 4 55 0
+	mov	r14,r1
+	add	#12,r1
+	mov.b	@r1,r3
+	add	#-20,r15
+	mov	r15,r2
+	mov.l	.L33,r7
+	mov.l	.L31,r6
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(52,r1),r0
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(48,r1),r8
+	mov.l	@(32,r14),r1
+	mov.l	r1,@r2
+	mov.l	@(36,r14),r1
+	mov.l	r1,@(4,r2)
+	mov.l	@(40,r14),r1
+	mov.l	r1,@(8,r2)
+	mov.l	r3,@(12,r2)
+	mov.l	@(44,r14),r1
+	mov.l	r1,@(16,r2)
+	mov	r7,r4
+	mov	r6,r5
+	mov	r0,r6
+	mov	r8,r7
+	mov.l	.L32,r1
+.LCFI10:
+	jsr	@r1
+	nop
+	add	#20,r15
+	.loc 4 58 0
+	mov.l	.L33,r2
+	mov	r14,r1
+	add	#-44,r1
+	mov.l	@(60,r1),r1
+	mov	r2,r4
+	mov	r1,r5
+	mov.l	.L34,r1
+.LCFI11:
+	jsr	@r1
+	nop
+	mov	#-1,r1
+	cmp/eq	r1,r0
+	bf	.L20
+	.loc 4 60 0
+	mov	#0,r1
+	mov.l	r1,@r14
+	bra	.L19
+	nop
+	.align 1
+.L20:
+	.loc 4 63 0
+	mov	#1,r1
+	mov.l	r1,@r14
+.L19:
+	mov.l	@r14,r0
+	.loc 4 64 0
+	add	#20,r14
+	mov	r14,r15
+	lds.l	@r15+,pr
+	mov.l	@r15+,r14
+	mov.l	@r15+,r8
+	rts
+	nop
+	.align 1
+.L26:
+	.short	132
+.L35:
+	.align 2
+.L25:
+	.long	strlen
+.L27:
+	.long	stderr
+.L28:
+	.long	.LC1
+.L29:
+	.long	fprintf
+.L33:
+	.long	result_rec
+.L31:
+	.long	.LC2
+.L32:
+	.long	sprintf
+.L34:
+	.long	fputs
+.LFE6:
+	.size	result, .-result
+	.section	.debug_macinfo
+	.byte	0x4
+	.byte	0x3
+	.uleb128 0x9
+	.file 59 "dat_mbrlen.c"
+	.uleb128 0x3b
+	.global	tst_mbrlen_loc
+	.section	.rodata
+	.align 2
+.LC3:
+	.string	"de_DE.ISO-8859-1"
+	.align 2
+.LC4:
+	.string	"en_US.ANSI_X3.4-1968"
+	.align 2
+.LC5:
+	.string	"ja_JP.EUC-JP"
+	.align 2
+.LC6:
+	.string	"lastEntry"
+	.data
+	.align 2
+	.type	tst_mbrlen_loc, @object
+	.size	tst_mbrlen_loc, 192032
+tst_mbrlen_loc:
+	.long	14
+	.long	.LC3
+	.long	1
+	.string	""
+	.zero	23
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.string	""
+	.zero	23
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.string	"\300"
+	.zero	22
+	.long	99
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.long	1
+	.zero	4
+	.long	1
+	.string	"\300\001"
+	.zero	21
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.string	"\300\001"
+	.zero	21
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.string	"\317\001"
+	.zero	21
+	.long	99
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.long	1
+	.zero	4
+	.zero	156
+	.long	1
+	.zero	47520
+	.long	14
+	.long	.LC4
+	.long	1
+	.string	"A"
+	.zero	22
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.string	"A"
+	.zero	22
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.string	"A"
+	.zero	22
+	.long	99
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.long	1
+	.zero	4
+	.long	1
+	.string	"\317\001"
+	.zero	21
+	.long	0
+	.long	1
+	.long	0
+	.long	1
+	.string	"\317\001"
+	.zero	21
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.string	"\317\001"
+	.zero	21
+	.long	99
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.long	0
+	.long	84
+	.long	1
+	.long	-1
+	.long	84
+	.long	1
+	.long	-1
+	.zero	4
+	.zero	156
+	.long	1
+	.zero	47520
+	.long	14
+	.long	.LC5
+	.long	1
+	.string	"\317\302"
+	.zero	21
+	.long	1
+	.long	1
+	.long	1
+	.long	0
+	.string	""
+	.zero	23
+	.long	0
+	.long	1
+	.long	0
+	.long	1
+	.string	"\317\302"
+	.zero	21
+	.long	99
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.long	-2
+	.long	0
+	.long	1
+	.long	-1
+	.long	0
+	.long	1
+	.long	2
+	.zero	4
+	.long	1
+	.string	"\317"
+	.zero	22
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.string	"\302"
+	.zero	22
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.string	"\317\302"
+	.zero	21
+	.long	99
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.long	-2
+	.long	0
+	.long	1
+	.long	1
+	.long	0
+	.long	1
+	.long	2
+	.zero	4
+	.long	1
+	.string	"\216\217"
+	.zero	21
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.string	"\216\217"
+	.zero	21
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.string	"\216\217"
+	.zero	21
+	.long	99
+	.long	0
+	.long	0
+	.long	0
+	.long	1
+	.long	0
+	.long	0
+	.long	1
+	.long	-2
+	.long	84
+	.long	1
+	.long	-1
+	.zero	4
+	.zero	156
+	.long	1
+	.zero	47360
+	.long	14
+	.long	.LC6
+	.zero	48000
+	.section	.debug_macinfo
+	.byte	0x4
+	.local	s.3934
+	.comm	s.3934,8,4
+	.section	.rodata
+	.align 2
+.LC7:
+	.string	"Warning : can't set locale: %s\nskipping ...\n"
+	.align 2
+.LC8:
+	.string	"mbrlen"
+	.align 2
+.LC9:
+	.string	"can't set locale"
+	.align 2
+.LC10:
+	.string	"Initialization (external mbstate object) failed - skipped this test case."
+	.align 2
+.LC11:
+	.string	"n = %d.\n"
+	.align 2
+.LC12:
+	.string	"s_in = %c, n = %d, t_ini = %d, s_flg = %d,                 t_flg = %d, MB_CUR_MAX = %d.\n"
+	.align 2
+.LC13:
+	.string	"mbrlen() [ %s : %d : %d ] ret = %zd\n"
+	.align 2
+.LC14:
+	.string	"\t\t\t   errno = %d\n"
+	.align 2
+.LC15:
+	.string	"PASSED"
+	.align 2
+.LC16:
+	.string	"the value of errno is different from an expected value"
+	.align 2
+.LC17:
+	.string	"the return value is different from an expected value"
+	.text
+	.align 1
+	.global	tst_mbrlen
+	.type	tst_mbrlen, @function
+tst_mbrlen:
+.LFB7:
+	.loc 1 13 0
+	mov.l	r8,@-r15
+.LCFI12:
+	mov.l	r9,@-r15
+.LCFI13:
+	mov.l	r10,@-r15
+.LCFI14:
+	mov.l	r11,@-r15
+.LCFI15:
+	mov.l	r12,@-r15
+.LCFI16:
+	mov.l	r14,@-r15
+.LCFI17:
+	sts.l	pr,@-r15
+.LCFI18:
+	add	#-80,r15
+.LCFI19:
+	mov	r15,r14
+.LCFI20:
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	r4,@(56,r1)
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	r5,@(52,r1)
+	.loc 1 14 0
+	mov	r14,r2
+	add	#16,r2
+	mov	#0,r1
+	mov.l	r1,@(4,r2)
+	mov	r14,r2
+	add	#16,r2
+	mov	#0,r1
+	mov.l	r1,@(16,r2)
+	mov	r14,r2
+	add	#16,r2
+	mov	#0,r1
+	mov.l	r1,@(32,r2)
+	.loc 1 23 0
+	mov	r14,r2
+	add	#-48,r2
+	mov	#0,r1
+	mov.l	r1,@(60,r2)
+	bra	.L37
+	nop
+	.align 1
+.L38:
+	.loc 1 25 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r2
+	mov	r14,r7
+	add	#16,r7
+	mov.l	.L72,r3
+	mov.l	.L73,r1
+	mul.l	r1,r2
+	sts	macl,r1
+	add	r3,r1
+	mov.l	@r1,r1
+	mov.l	r1,@(12,r7)
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r2
+	mov	r14,r7
+	add	#16,r7
+	mov.l	.L72,r3
+	mov.l	.L73,r1
+	mul.l	r1,r2
+	sts	macl,r1
+	add	r3,r1
+	add	#4,r1
+	mov.l	@r1,r1
+	mov.l	r1,@(20,r7)
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r1
+	mov	#6,r4
+	mov	r1,r5
+	mov.l	.L74,r1
+	jsr	@r1
+	nop
+	tst	r0,r0
+	bf	.L39
+	mov.l	.L75,r1
+	mov.l	@r1,r2
+	mov.l	.L76,r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r1
+	mov	r2,r4
+	mov	r3,r5
+	mov	r1,r6
+	mov.l	.L77,r1
+	jsr	@r1
+	nop
+	add	#-16,r15
+	mov	r15,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(56,r1),r3
+	mov.l	.L83,r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r0
+	mov	#0,r1
+	mov.l	r1,@r2
+	mov	#0,r1
+	mov.l	r1,@(4,r2)
+	mov	#0,r1
+	mov.l	r1,@(8,r2)
+	mov.l	.L79,r1
+	mov.l	r1,@(12,r2)
+	mov	r3,r4
+	mov	#76,r5
+	mov	r7,r6
+	mov	r0,r7
+	mov.l	.L85,r1
+.LCFI21:
+	jsr	@r1
+	nop
+	add	#16,r15
+	mov	r14,r2
+	add	#16,r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(4,r1),r1
+	add	#1,r1
+	mov.l	r1,@(4,r2)
+	bra	.L41
+	nop
+	.align 1
+.L39:
+	.loc 1 26 0
+	mov	r14,r2
+	add	#16,r2
+	mov	#0,r1
+	mov.l	r1,@(0,r2)
+	bra	.L42
+	nop
+	.align 1
+.L43:
+	.loc 1 28 0
+	mov.l	.L81,r1
+	mov	#0,r4
+	mov	#0,r5
+	mov	r1,r6
+	mov.l	.L82,r1
+.LCFI22:
+	jsr	@r1
+	nop
+	tst	r0,r0
+	bt	.L44
+	.loc 1 30 0
+	mov	r14,r2
+	add	#16,r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(4,r1),r1
+	add	#1,r1
+	mov.l	r1,@(4,r2)
+	.loc 1 31 0
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	mov	r1,r6
+	add	#1,r6
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	mov	r1,r3
+	add	#1,r3
+	add	#-16,r15
+	mov	r15,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(56,r1),r7
+	mov.l	.L83,r8
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r0
+	mov.l	r6,@r2
+	mov.l	r3,@(4,r2)
+	mov	#3,r1
+	mov.l	r1,@(8,r2)
+	mov.l	.L84,r1
+	mov.l	r1,@(12,r2)
+	mov	r7,r4
+	mov	#70,r5
+	mov	r8,r6
+	mov	r0,r7
+	mov.l	.L85,r1
+.LCFI23:
+	jsr	@r1
+	nop
+	add	#16,r15
+	.loc 1 34 0
+	bra	.L46
+	nop
+	.align 1
+.L44:
+	.loc 1 37 0
+	mov	r14,r2
+	add	#16,r2
+	mov	#0,r1
+	mov.l	r1,@(16,r2)
+	bra	.L47
+	nop
+.L86:
+	.align 2
+.L72:
+	.long	tst_mbrlen_loc
+.L73:
+	.long	48008
+.L74:
+	.long	setlocale
+.L75:
+	.long	stderr
+.L76:
+	.long	.LC7
+.L77:
+	.long	fprintf
+.L83:
+	.long	.LC8
+.L79:
+	.long	.LC9
+.L85:
+	.long	result
+.L81:
+	.long	s.3934
+.L82:
+	.long	mbrlen
+.L84:
+	.long	.LC10
+	.align 1
+.L48:
+	.loc 1 39 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov	r14,r6
+	add	#16,r6
+	mov.l	.L112,r5
+	mov	r2,r1
+	add	r1,r1
+	add	r2,r1
+	mov	r1,r2
+	shll2	r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	mov	r1,r2
+	add	r5,r2
+	mov.w	.L91,r1
+	add	r2,r1
+	mov.l	@r1,r1
+	mov.l	r1,@(24,r6)
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov	r14,r6
+	add	#16,r6
+	mov.l	.L112,r5
+	mov	r2,r1
+	add	r1,r1
+	add	r2,r1
+	mov	r1,r2
+	shll2	r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	mov	r1,r2
+	add	r5,r2
+	mov.w	.L95,r1
+	add	r2,r1
+	mov.l	@r1,r1
+	mov.l	r1,@(28,r6)
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov	r14,r6
+	add	#16,r6
+	mov.l	.L112,r5
+	mov	r2,r1
+	add	r1,r1
+	add	r2,r1
+	mov	r1,r2
+	shll2	r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	mov	r1,r2
+	add	r5,r2
+	mov.w	.L99,r1
+	add	r2,r1
+	mov.l	@r1,r1
+	mov.l	r1,@(36,r6)
+	.loc 1 40 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov.l	.L112,r6
+	mov	#40,r1
+	mul.l	r1,r2
+	sts	macl,r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	add	r6,r1
+	add	#8,r1
+	mov.l	@r1,r2
+	mov	r14,r1
+	add	#63,r1
+	mov.b	r2,@r1
+	.loc 1 41 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov	r14,r6
+	add	#16,r6
+	mov	#40,r1
+	mul.l	r1,r2
+	sts	macl,r2
+	mov.w	.L114,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.l	.L113,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	mov	r1,r2
+	add	#12,r2
+	mov.l	.L112,r1
+	add	r2,r1
+	mov.l	r1,@(48,r6)
+	.loc 1 42 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov	r14,r6
+	add	#16,r6
+	mov.l	.L112,r5
+	mov	#40,r1
+	mul.l	r1,r2
+	sts	macl,r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	add	r5,r1
+	add	#36,r1
+	mov.l	@r1,r1
+	mov.l	r1,@(52,r6)
+	.loc 1 43 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov.l	.L112,r6
+	mov	#40,r1
+	mul.l	r1,r2
+	sts	macl,r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	add	r6,r1
+	add	#40,r1
+	mov.l	@r1,r2
+	mov	r14,r1
+	add	#74,r1
+	mov.b	r2,@r1
+	.loc 1 44 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov.l	.L112,r6
+	mov	#40,r1
+	mul.l	r1,r2
+	sts	macl,r2
+	mov.l	.L113,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r1,r2
+	mov.w	.L114,r1
+	mul.l	r1,r7
+	sts	macl,r1
+	add	r2,r1
+	add	r6,r1
+	add	#44,r1
+	mov.l	@r1,r2
+	mov	r14,r1
+	add	#75,r1
+	mov.b	r2,@r1
+	.loc 1 45 0
+	mov	r14,r1
+	add	#63,r1
+	mov.b	@r1,r1
+	tst	r1,r1
+	bra	.L87
+	nop
+	.align 1
+.L114:
+	.short	160
+.L91:
+	.short	128
+.L95:
+	.short	132
+.L99:
+	.short	136
+.L115:
+	.align 2
+.L112:
+	.long	tst_mbrlen_loc
+.L113:
+	.long	48008
+	.align 1
+.L87:
+	bf	.L49
+	.loc 1 47 0
+	mov	r14,r2
+	add	#16,r2
+	mov	#0,r1
+	mov.l	r1,@(48,r2)
+.L49:
+	.loc 1 51 0
+	mov.l	.L136,r1
+	mov.l	@r1,r2
+	mov.l	.L117,r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(52,r1),r1
+	mov	r2,r4
+	mov	r3,r5
+	mov	r1,r6
+	mov.l	.L138,r1
+.LCFI24:
+	jsr	@r1
+	nop
+	.loc 1 53 0
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(52,r1),r2
+	mov	#99,r1
+	cmp/eq	r1,r2
+	bf	.L51
+	.loc 1 55 0
+	mov.l	.L130,r1
+	jsr	@r1
+	nop
+	mov	r14,r1
+	add	#16,r1
+	mov.l	r0,@(52,r1)
+.L51:
+	.loc 1 58 0
+	mov	r14,r1
+	add	#74,r1
+	mov.b	@r1,r1
+	tst	r1,r1
+	bt	.L53
+	mov.l	.L121,r1
+	mov.l	r1,@r14
+	bra	.L55
+	nop
+	.align 1
+.L53:
+	mov	#0,r2
+	mov.l	r2,@r14
+.L55:
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@r14,r2
+	mov.l	r2,@(60,r1)
+	.loc 1 60 0
+	mov	r14,r1
+	add	#75,r1
+	mov.b	@r1,r1
+	tst	r1,r1
+	bt	.L56
+	.loc 1 62 0
+	mov.l	.L121,r1
+	mov	r1,r4
+	mov	#0,r5
+	mov	#8,r6
+	mov.l	.L122,r1
+	jsr	@r1
+	nop
+	.loc 1 63 0
+	mov	#0,r4
+	mov	#0,r5
+	mov	#0,r6
+	mov.l	.L126,r1
+	jsr	@r1
+	nop
+.L56:
+	.loc 1 66 0
+	mova	.L128,r0
+	mov.l	.L128,r12
+	add	r0,r12
+	mov.l	1f,r0
+	stc	gbr,r1
+	mov.l	@(r0,r12),r0
+	bra	2f
+	add	r0,r1
+	.align	2
+1:	.long	__libc_errno@GOTTPOFF
+2:
+	mov	r1,r2
+	mov	#0,r1
+	mov.l	r1,@r2
+	.loc 1 67 0
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(48,r1),r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(52,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(60,r1),r1
+	mov	r2,r4
+	mov	r3,r5
+	mov	r1,r6
+	mov.l	.L126,r1
+	jsr	@r1
+	nop
+	mov	r14,r1
+	add	#16,r1
+	mov.l	r0,@(40,r1)
+	.loc 1 68 0
+	mov	r14,r2
+	add	#16,r2
+	mova	.L128,r0
+	mov.l	.L128,r12
+	add	r0,r12
+	mov.l	1f,r0
+	stc	gbr,r1
+	mov.l	@(r0,r12),r0
+	bra	2f
+	add	r0,r1
+	.align	2
+1:	.long	__libc_errno@GOTTPOFF
+2:
+	mov.l	@r1,r1
+	mov.l	r1,@(32,r2)
+	.loc 1 71 0
+	mov.l	.L136,r1
+	mov.l	@r1,r8
+	mov	r14,r1
+	add	#75,r1
+	mov.b	@r1,r9
+	mov	r14,r1
+	add	#63,r1
+	mov.b	@r1,r10
+	mov	r14,r1
+	add	#74,r1
+	mov.b	@r1,r11
+	mov.l	.L130,r1
+	jsr	@r1
+	nop
+	add	#-16,r15
+	mov	r15,r2
+	mov.l	.L131,r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(48,r1),r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(52,r1),r1
+	mov.l	r9,@r2
+	mov.l	r10,@(4,r2)
+	mov.l	r11,@(8,r2)
+	mov.l	r0,@(12,r2)
+	mov	r8,r4
+	mov	r3,r5
+	mov	r7,r6
+	mov	r1,r7
+	mov.l	.L138,r1
+.LCFI25:
+	jsr	@r1
+	nop
+	add	#16,r15
+	.loc 1 75 0
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(52,r1),r1
+	tst	r1,r1
+	bt	.L58
+	.loc 1 77 0
+	mov.l	.L136,r1
+	mov.l	@r1,r5
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	mov	r1,r0
+	add	#1,r0
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	mov	r1,r3
+	add	#1,r3
+	add	#-8,r15
+	mov	r15,r2
+	mov.l	.L134,r7
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r6
+	mov.l	r3,@r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(40,r1),r1
+	mov.l	r1,@(4,r2)
+	mov	r5,r4
+	mov	r7,r5
+	mov	r0,r7
+	mov.l	.L138,r1
+.LCFI26:
+	jsr	@r1
+	nop
+	add	#8,r15
+	.loc 1 79 0
+	mov.l	.L136,r1
+	mov.l	@r1,r2
+	mov.l	.L137,r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(32,r1),r1
+	mov	r2,r4
+	mov	r3,r5
+	mov	r1,r6
+	mov.l	.L138,r1
+.LCFI27:
+	jsr	@r1
+	nop
+.L58:
+	.loc 1 82 0
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(24,r1),r1
+	tst	r1,r1
+	bt	.L60
+	mov	r14,r1
+	add	#16,r1
+	mov	r14,r2
+	add	#16,r2
+	mov.l	@(32,r1),r3
+	mov.l	@(24,r2),r1
+	cmp/eq	r1,r3
+	bf	.L62
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	mov	r1,r6
+	add	#1,r6
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	mov	r1,r3
+	add	#1,r3
+	add	#-16,r15
+	mov	r15,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(56,r1),r7
+	mov.l	.L145,r8
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r0
+	mov.l	r6,@r2
+	mov.l	r3,@(4,r2)
+	mov	#1,r1
+	mov.l	r1,@(8,r2)
+	mov.l	.L146,r1
+	mov.l	r1,@(12,r2)
+	mov	r7,r4
+	mov	#83,r5
+	mov	r8,r6
+	mov	r0,r7
+	mov.l	.L147,r1
+.LCFI28:
+	jsr	@r1
+	nop
+	add	#16,r15
+	bra	.L60
+	nop
+	.align 1
+.L62:
+	mov	r14,r2
+	add	#16,r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(4,r1),r1
+	add	#1,r1
+	mov.l	r1,@(4,r2)
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	mov	r1,r6
+	add	#1,r6
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	mov	r1,r3
+	add	#1,r3
+	add	#-16,r15
+	mov	r15,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(56,r1),r7
+	mov.l	.L145,r8
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r0
+	mov.l	r6,@r2
+	mov.l	r3,@(4,r2)
+	mov	#1,r1
+	mov.l	r1,@(8,r2)
+	mov.l	.L143,r1
+	mov.l	r1,@(12,r2)
+	mov	r7,r4
+	mov	#70,r5
+	mov	r8,r6
+	mov	r0,r7
+	mov.l	.L147,r1
+	jsr	@r1
+	nop
+	add	#16,r15
+.L60:
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(28,r1),r2
+	mov	#1,r1
+	cmp/eq	r1,r2
+	bf	.L161
+	mov	r14,r1
+	add	#16,r1
+	mov	r14,r2
+	add	#16,r2
+	mov.l	@(40,r1),r3
+	mov.l	@(36,r2),r1
+	cmp/eq	r1,r3
+	bf	.L66
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	mov	r1,r6
+	add	#1,r6
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	mov	r1,r3
+	add	#1,r3
+	add	#-16,r15
+	mov	r15,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(56,r1),r7
+	mov.l	.L145,r8
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r0
+	mov.l	r6,@r2
+	mov.l	r3,@(4,r2)
+	mov	#2,r1
+	mov.l	r1,@(8,r2)
+	mov.l	.L146,r1
+	mov.l	r1,@(12,r2)
+	mov	r7,r4
+	mov	#83,r5
+	mov	r8,r6
+	mov	r0,r7
+	mov.l	.L147,r1
+	jsr	@r1
+	nop
+	add	#16,r15
+.L161:
+	bra	.L64
+	nop
+.L148:
+	.align 2
+.L136:
+	.long	stdout
+.L117:
+	.long	.LC11
+.L138:
+	.long	fprintf
+.L130:
+	.long	_stdlib_mb_cur_max
+.L121:
+	.long	s.3934
+.L122:
+	.long	memset
+.L126:
+	.long	mbrlen
+.L128:
+	.long	_GLOBAL_OFFSET_TABLE_
+.L131:
+	.long	.LC12
+.L134:
+	.long	.LC13
+.L137:
+	.long	.LC14
+.L145:
+	.long	.LC8
+.L146:
+	.long	.LC15
+.L147:
+	.long	result
+.L143:
+	.long	.LC16
+	.align 1
+.L66:
+	mov	r14,r2
+	add	#16,r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(4,r1),r1
+	add	#1,r1
+	mov.l	r1,@(4,r2)
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	mov	r1,r6
+	add	#1,r6
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	mov	r1,r3
+	add	#1,r3
+	add	#-16,r15
+	mov	r15,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(56,r1),r7
+	mov.l	.L149,r8
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(20,r1),r0
+	mov.l	r6,@r2
+	mov.l	r3,@(4,r2)
+	mov	#2,r1
+	mov.l	r1,@(8,r2)
+	mov.l	.L150,r1
+	mov.l	r1,@(12,r2)
+	mov	r7,r4
+	mov	#70,r5
+	mov	r8,r6
+	mov	r0,r7
+	mov.l	.L151,r1
+	jsr	@r1
+	nop
+	add	#16,r15
+.L64:
+	.loc 1 37 0
+	mov	r14,r2
+	add	#16,r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r1
+	add	#1,r1
+	mov.l	r1,@(16,r2)
+.L47:
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(16,r1),r2
+	mov	#2,r1
+	cmp/gt	r1,r2
+	bt	.L167
+	bra	.L48
+	nop
+.L167:
+.L46:
+	.loc 1 26 0
+	mov	r14,r2
+	add	#16,r2
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r1
+	add	#1,r1
+	mov.l	r1,@(0,r2)
+.L42:
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r3
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(0,r1),r2
+	mov.l	.L156,r7
+	mov.w	.L153,r1
+	mul.l	r1,r2
+	sts	macl,r2
+	mov.l	.L157,r1
+	mul.l	r1,r3
+	sts	macl,r1
+	add	r2,r1
+	mov	r1,r2
+	add	r7,r2
+	mov.w	.L155,r1
+	add	r2,r1
+	mov.l	@r1,r1
+	tst	r1,r1
+	bf	.L166
+	bra	.L43
+	nop
+.L166:
+.L41:
+	.loc 1 23 0
+	mov	r14,r2
+	add	#-48,r2
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r1
+	add	#1,r1
+	mov.l	r1,@(60,r2)
+.L37:
+	mov	r14,r1
+	add	#-48,r1
+	mov.l	@(60,r1),r2
+	mov.l	.L156,r3
+	mov.l	.L157,r1
+	mul.l	r1,r2
+	sts	macl,r1
+	add	r3,r1
+	add	#4,r1
+	mov.l	@r1,r1
+	mov.l	.L158,r2
+	mov	r1,r4
+	mov	r2,r5
+	mov.l	.L159,r1
+.LCFI29:
+	jsr	@r1
+	nop
+	tst	r0,r0
+	bt	.L165
+	bra	.L38
+	nop
+.L165:
+	.loc 1 89 0
+	mov	r14,r1
+	add	#16,r1
+	mov.l	@(4,r1),r1
+	mov	r1,r0
+	.loc 1 90 0
+	add	#80,r14
+	mov	r14,r15
+	lds.l	@r15+,pr
+	mov.l	@r15+,r14
+	mov.l	@r15+,r12
+	mov.l	@r15+,r11
+	mov.l	@r15+,r10
+	mov.l	@r15+,r9
+	mov.l	@r15+,r8
+	rts
+	nop
+	.align 1
+.L153:
+	.short	160
+.L155:
+	.short	164
+.L160:
+	.align 2
+.L149:
+	.long	.LC8
+.L150:
+	.long	.LC17
+.L151:
+	.long	result
+.L156:
+	.long	tst_mbrlen_loc
+.L157:
+	.long	48008
+.L158:
+	.long	.LC6
+.L159:
+	.long	strcmp
+.LFE7:
+	.size	tst_mbrlen, .-tst_mbrlen
+	.section	.debug_macinfo
+	.byte	0x4
+	.comm	result_rec,132,4
+	.section	.debug_frame,"",@progbits
+.Lframe0:
+	.ualong	.LECIE0-.LSCIE0
+.LSCIE0:
+	.ualong	0xffffffff
+	.byte	0x1
+	.string	""
+	.uleb128 0x1
+	.sleb128 -4
+	.byte	0x11
+	.byte	0xc
+	.uleb128 0xf
+	.uleb128 0x0
+	.align 2
+.LECIE0:
+.LSFDE0:
+	.ualong	.LEFDE0-.LASFDE0
+.LASFDE0:
+	.ualong	.Lframe0
+	.ualong	.LFB5
+	.ualong	.LFE5-.LFB5
+	.byte	0x4
+	.ualong	.LCFI0-.LFB5
+	.byte	0xe
+	.uleb128 0x4
+	.byte	0x4
+	.ualong	.LCFI1-.LCFI0
+	.byte	0xe
+	.uleb128 0x8
+	.byte	0x4
+	.ualong	.LCFI2-.LCFI1
+	.byte	0xe
+	.uleb128 0x1c
+	.byte	0x91
+	.uleb128 0x2
+	.byte	0x8e
+	.uleb128 0x1
+	.byte	0x4
+	.ualong	.LCFI3-.LCFI2
+	.byte	0xd
+	.uleb128 0xe
+	.align 2
+.LEFDE0:
+.LSFDE2:
+	.ualong	.LEFDE2-.LASFDE2
+.LASFDE2:
+	.ualong	.Lframe0
+	.ualong	.LFB6
+	.ualong	.LFE6-.LFB6
+	.byte	0x4
+	.ualong	.LCFI4-.LFB6
+	.byte	0xe
+	.uleb128 0x4
+	.byte	0x4
+	.ualong	.LCFI5-.LCFI4
+	.byte	0xe
+	.uleb128 0x8
+	.byte	0x4
+	.ualong	.LCFI6-.LCFI5
+	.byte	0xe
+	.uleb128 0xc
+	.byte	0x4
+	.ualong	.LCFI7-.LCFI6
+	.byte	0xe
+	.uleb128 0x20
+	.byte	0x91
+	.uleb128 0x3
+	.byte	0x8e
+	.uleb128 0x2
+	.byte	0x88
+	.uleb128 0x1
+	.byte	0x4
+	.ualong	.LCFI8-.LCFI7
+	.byte	0xd
+	.uleb128 0xe
+	.byte	0x4
+	.ualong	.LCFI9-.LCFI8
+	.byte	0x2e
+	.uleb128 0xc
+	.byte	0x4
+	.ualong	.LCFI10-.LCFI9
+	.byte	0x2e
+	.uleb128 0x14
+	.byte	0x4
+	.ualong	.LCFI11-.LCFI10
+	.byte	0x2e
+	.uleb128 0x0
+	.align 2
+.LEFDE2:
+.LSFDE4:
+	.ualong	.LEFDE4-.LASFDE4
+.LASFDE4:
+	.ualong	.Lframe0
+	.ualong	.LFB7
+	.ualong	.LFE7-.LFB7
+	.byte	0x4
+	.ualong	.LCFI12-.LFB7
+	.byte	0xe
+	.uleb128 0x4
+	.byte	0x4
+	.ualong	.LCFI13-.LCFI12
+	.byte	0xe
+	.uleb128 0x8
+	.byte	0x4
+	.ualong	.LCFI14-.LCFI13
+	.byte	0xe
+	.uleb128 0xc
+	.byte	0x4
+	.ualong	.LCFI15-.LCFI14
+	.byte	0xe
+	.uleb128 0x10
+	.byte	0x4
+	.ualong	.LCFI16-.LCFI15
+	.byte	0xe
+	.uleb128 0x14
+	.byte	0x4
+	.ualong	.LCFI17-.LCFI16
+	.byte	0xe
+	.uleb128 0x18
+	.byte	0x4
+	.ualong	.LCFI18-.LCFI17
+	.byte	0xe
+	.uleb128 0x1c
+	.byte	0x4
+	.ualong	.LCFI19-.LCFI18
+	.byte	0xe
+	.uleb128 0x6c
+	.byte	0x91
+	.uleb128 0x7
+	.byte	0x8e
+	.uleb128 0x6
+	.byte	0x8c
+	.uleb128 0x5
+	.byte	0x8b
+	.uleb128 0x4
+	.byte	0x8a
+	.uleb128 0x3
+	.byte	0x89
+	.uleb128 0x2
+	.byte	0x88
+	.uleb128 0x1
+	.byte	0x4
+	.ualong	.LCFI20-.LCFI19
+	.byte	0xd
+	.uleb128 0xe
+	.byte	0x4
+	.ualong	.LCFI21-.LCFI20
+	.byte	0x2e
+	.uleb128 0x10
+	.byte	0x4
+	.ualong	.LCFI22-.LCFI21
+	.byte	0x2e
+	.uleb128 0x0
+	.byte	0x4
+	.ualong	.LCFI23-.LCFI22
+	.byte	0x2e
+	.uleb128 0x10
+	.byte	0x4
+	.ualong	.LCFI24-.LCFI23
+	.byte	0x2e
+	.uleb128 0x0
+	.byte	0x4
+	.ualong	.LCFI25-.LCFI24
+	.byte	0x2e
+	.uleb128 0x10
+	.byte	0x4
+	.ualong	.LCFI26-.LCFI25
+	.byte	0x2e
+	.uleb128 0x8
+	.byte	0x4
+	.ualong	.LCFI27-.LCFI26
+	.byte	0x2e
+	.uleb128 0x0
+	.byte	0x4
+	.ualong	.LCFI28-.LCFI27
+	.byte	0x2e
+	.uleb128 0x10
+	.byte	0x4
+	.ualong	.LCFI29-.LCFI28
+	.byte	0x2e
+	.uleb128 0x0
+	.align 2
+.LEFDE4:
+	.text
+.Letext0:
+	.section	.debug_loc,"",@progbits
+.Ldebug_loc0:
+.LLST0:
+	.ualong	.LFB5-.Ltext0
+	.ualong	.LCFI0-.Ltext0
+	.uaword	0x1
+	.byte	0x5f
+	.ualong	.LCFI0-.Ltext0
+	.ualong	.LCFI1-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 4
+	.ualong	.LCFI1-.Ltext0
+	.ualong	.LCFI2-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 8
+	.ualong	.LCFI2-.Ltext0
+	.ualong	.LCFI3-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 28
+	.ualong	.LCFI3-.Ltext0
+	.ualong	.LFE5-.Ltext0
+	.uaword	0x2
+	.byte	0x7e
+	.sleb128 28
+	.ualong	0x0
+	.ualong	0x0
+.LLST1:
+	.ualong	.LFB6-.Ltext0
+	.ualong	.LCFI4-.Ltext0
+	.uaword	0x1
+	.byte	0x5f
+	.ualong	.LCFI4-.Ltext0
+	.ualong	.LCFI5-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 4
+	.ualong	.LCFI5-.Ltext0
+	.ualong	.LCFI6-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 8
+	.ualong	.LCFI6-.Ltext0
+	.ualong	.LCFI7-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 12
+	.ualong	.LCFI7-.Ltext0
+	.ualong	.LCFI8-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 32
+	.ualong	.LCFI8-.Ltext0
+	.ualong	.LFE6-.Ltext0
+	.uaword	0x2
+	.byte	0x7e
+	.sleb128 32
+	.ualong	0x0
+	.ualong	0x0
+.LLST2:
+	.ualong	.LFB7-.Ltext0
+	.ualong	.LCFI12-.Ltext0
+	.uaword	0x1
+	.byte	0x5f
+	.ualong	.LCFI12-.Ltext0
+	.ualong	.LCFI13-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 4
+	.ualong	.LCFI13-.Ltext0
+	.ualong	.LCFI14-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 8
+	.ualong	.LCFI14-.Ltext0
+	.ualong	.LCFI15-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 12
+	.ualong	.LCFI15-.Ltext0
+	.ualong	.LCFI16-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 16
+	.ualong	.LCFI16-.Ltext0
+	.ualong	.LCFI17-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 20
+	.ualong	.LCFI17-.Ltext0
+	.ualong	.LCFI18-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 24
+	.ualong	.LCFI18-.Ltext0
+	.ualong	.LCFI19-.Ltext0
+	.uaword	0x2
+	.byte	0x7f
+	.sleb128 28
+	.ualong	.LCFI19-.Ltext0
+	.ualong	.LCFI20-.Ltext0
+	.uaword	0x3
+	.byte	0x7f
+	.sleb128 108
+	.ualong	.LCFI20-.Ltext0
+	.ualong	.LFE7-.Ltext0
+	.uaword	0x3
+	.byte	0x7e
+	.sleb128 108
+	.ualong	0x0
+	.ualong	0x0
+	.section	.debug_info
+	.ualong	0x925
+	.uaword	0x2
+	.ualong	.Ldebug_abbrev0
+	.byte	0x4
+	.uleb128 0x1
+	.ualong	.Ldebug_macinfo0
+	.ualong	.Ldebug_line0
+	.ualong	.Letext0
+	.ualong	.Ltext0
+	.string	"GNU C 4.1.1 (STMicroelectronics Special) [build Jun 26 2007]"
+	.byte	0x1
+	.string	"tst_mbrlen.c"
+	.string	"/vob/stsca_uClibc-nptl/uClibc-nptl/test/locale-mbwc"
+	.uleb128 0x2
+	.string	"size_t"
+	.byte	0xa
+	.byte	0xd6
+	.ualong	0xa9
+	.uleb128 0x3
+	.ualong	.LASF0
+	.byte	0x4
+	.byte	0x7
+	.uleb128 0x4
+	.string	"short unsigned int"
+	.byte	0x2
+	.byte	0x7
+	.uleb128 0x4
+	.string	"long unsigned int"
+	.byte	0x4
+	.byte	0x7
+	.uleb128 0x4
+	.string	"long int"
+	.byte	0x4
+	.byte	0x5
+	.uleb128 0x4
+	.string	"int"
+	.byte	0x4
+	.byte	0x5
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0xf4
+	.uleb128 0x4
+	.string	"char"
+	.byte	0x1
+	.byte	0x6
+	.uleb128 0x4
+	.string	"long long int"
+	.byte	0x8
+	.byte	0x5
+	.uleb128 0x3
+	.ualong	.LASF0
+	.byte	0x4
+	.byte	0x7
+	.uleb128 0x4
+	.string	"unsigned char"
+	.byte	0x1
+	.byte	0x8
+	.uleb128 0x4
+	.string	"signed char"
+	.byte	0x1
+	.byte	0x6
+	.uleb128 0x4
+	.string	"short int"
+	.byte	0x2
+	.byte	0x5
+	.uleb128 0x4
+	.string	"long long unsigned int"
+	.byte	0x8
+	.byte	0x7
+	.uleb128 0x6
+	.ualong	0x1cf
+	.byte	0x18
+	.byte	0x10
+	.byte	0x34
+	.uleb128 0x7
+	.string	"__lock"
+	.byte	0x10
+	.byte	0x35
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"__count"
+	.byte	0x10
+	.byte	0x36
+	.ualong	0xa9
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x4
+	.uleb128 0x7
+	.string	"__owner"
+	.byte	0x10
+	.byte	0x37
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x8
+	.uleb128 0x7
+	.string	"__kind"
+	.byte	0x10
+	.byte	0x3a
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0xc
+	.uleb128 0x7
+	.string	"__nusers"
+	.byte	0x10
+	.byte	0x3b
+	.ualong	0xa9
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x10
+	.uleb128 0x7
+	.string	"__spins"
+	.byte	0x10
+	.byte	0x3c
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x14
+	.byte	0x0
+	.uleb128 0x8
+	.ualong	0x203
+	.byte	0x18
+	.byte	0x10
+	.byte	0x32
+	.uleb128 0x9
+	.string	"__data"
+	.byte	0x10
+	.byte	0x3d
+	.ualong	0x15b
+	.uleb128 0x9
+	.string	"__size"
+	.byte	0x10
+	.byte	0x3e
+	.ualong	0x203
+	.uleb128 0x9
+	.string	"__align"
+	.byte	0x10
+	.byte	0x3f
+	.ualong	0xdb
+	.byte	0x0
+	.uleb128 0xa
+	.ualong	0x213
+	.ualong	0xf4
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x17
+	.byte	0x0
+	.uleb128 0x2
+	.string	"pthread_mutex_t"
+	.byte	0x10
+	.byte	0x40
+	.ualong	0x1cf
+	.uleb128 0x2
+	.string	"FILE"
+	.byte	0x5
+	.byte	0x2e
+	.ualong	0x236
+	.uleb128 0xc
+	.ualong	0x381
+	.string	"__STDIO_FILE_STRUCT"
+	.byte	0x50
+	.byte	0x5
+	.byte	0x2e
+	.uleb128 0xd
+	.string	"__modeflags"
+	.byte	0x11
+	.uaword	0x110
+	.ualong	0xb0
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0xd
+	.string	"__ungot_width"
+	.byte	0x11
+	.uaword	0x113
+	.ualong	0x3cd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x2
+	.uleb128 0xd
+	.string	"__filedes"
+	.byte	0x11
+	.uaword	0x11a
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x4
+	.uleb128 0xd
+	.string	"__bufstart"
+	.byte	0x11
+	.uaword	0x11c
+	.ualong	0x3dd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x8
+	.uleb128 0xd
+	.string	"__bufend"
+	.byte	0x11
+	.uaword	0x11d
+	.ualong	0x3dd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0xc
+	.uleb128 0xd
+	.string	"__bufpos"
+	.byte	0x11
+	.uaword	0x11e
+	.ualong	0x3dd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x10
+	.uleb128 0xd
+	.string	"__bufread"
+	.byte	0x11
+	.uaword	0x11f
+	.ualong	0x3dd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x14
+	.uleb128 0xd
+	.string	"__bufgetc_u"
+	.byte	0x11
+	.uaword	0x122
+	.ualong	0x3dd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x18
+	.uleb128 0xd
+	.string	"__bufputc_u"
+	.byte	0x11
+	.uaword	0x125
+	.ualong	0x3dd
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x1c
+	.uleb128 0xd
+	.string	"__nextopen"
+	.byte	0x11
+	.uaword	0x12b
+	.ualong	0x3e3
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x20
+	.uleb128 0xd
+	.string	"__ungot"
+	.byte	0x11
+	.uaword	0x132
+	.ualong	0x3e9
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x24
+	.uleb128 0xd
+	.string	"__state"
+	.byte	0x11
+	.uaword	0x135
+	.ualong	0x3ba
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x2c
+	.uleb128 0xd
+	.string	"__user_locking"
+	.byte	0x11
+	.uaword	0x13b
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x34
+	.uleb128 0xd
+	.string	"__lock"
+	.byte	0x11
+	.uaword	0x13f
+	.ualong	0x213
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x38
+	.byte	0x0
+	.uleb128 0xe
+	.string	"wchar_t"
+	.byte	0xa
+	.uaword	0x146
+	.ualong	0xdb
+	.uleb128 0x6
+	.ualong	0x3ba
+	.byte	0x8
+	.byte	0x12
+	.byte	0x52
+	.uleb128 0x7
+	.string	"__mask"
+	.byte	0x12
+	.byte	0x53
+	.ualong	0x381
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"__wc"
+	.byte	0x12
+	.byte	0x54
+	.ualong	0x381
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x4
+	.byte	0x0
+	.uleb128 0x2
+	.string	"__mbstate_t"
+	.byte	0x12
+	.byte	0x55
+	.ualong	0x391
+	.uleb128 0xa
+	.ualong	0x3dd
+	.ualong	0x114
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x1
+	.byte	0x0
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0x114
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0x236
+	.uleb128 0xa
+	.ualong	0x3f9
+	.ualong	0x381
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x1
+	.byte	0x0
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0x3ff
+	.uleb128 0xf
+	.ualong	0xf4
+	.uleb128 0x2
+	.string	"mbstate_t"
+	.byte	0x12
+	.byte	0x6b
+	.ualong	0x3ba
+	.uleb128 0x6
+	.ualong	0x441
+	.byte	0x8
+	.byte	0x36
+	.byte	0x35
+	.uleb128 0x7
+	.string	"func_id"
+	.byte	0x36
+	.byte	0x36
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"locale"
+	.byte	0x36
+	.byte	0x37
+	.ualong	0x3f9
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x4
+	.byte	0x0
+	.uleb128 0x2
+	.string	"TST_HEAD"
+	.byte	0x36
+	.byte	0x39
+	.ualong	0x415
+	.uleb128 0x6
+	.ualong	0x4a3
+	.byte	0x28
+	.byte	0x36
+	.byte	0x76
+	.uleb128 0x7
+	.string	"s_flg"
+	.byte	0x36
+	.byte	0x77
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"s"
+	.byte	0x36
+	.byte	0x78
+	.ualong	0x203
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x4
+	.uleb128 0x7
+	.string	"n"
+	.byte	0x36
+	.byte	0x79
+	.ualong	0x9b
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x1c
+	.uleb128 0x7
+	.string	"t_flg"
+	.byte	0x36
+	.byte	0x7a
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x20
+	.uleb128 0x7
+	.string	"t_init"
+	.byte	0x36
+	.byte	0x7b
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x24
+	.byte	0x0
+	.uleb128 0x6
+	.ualong	0x4ba
+	.byte	0x78
+	.byte	0x36
+	.byte	0x74
+	.uleb128 0x7
+	.string	"seq"
+	.byte	0x36
+	.byte	0x7d
+	.ualong	0x4ba
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.byte	0x0
+	.uleb128 0xa
+	.ualong	0x4ca
+	.ualong	0x451
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x2
+	.byte	0x0
+	.uleb128 0x2
+	.string	"TIN_MBRLEN_REC"
+	.byte	0x36
+	.byte	0x7f
+	.ualong	0x4a3
+	.uleb128 0x6
+	.ualong	0x51f
+	.byte	0xc
+	.byte	0x36
+	.byte	0x81
+	.uleb128 0x7
+	.string	"err_val"
+	.byte	0x36
+	.byte	0x81
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"ret_flg"
+	.byte	0x36
+	.byte	0x81
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x4
+	.uleb128 0x7
+	.string	"ret_val"
+	.byte	0x36
+	.byte	0x81
+	.ualong	0x9b
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x8
+	.byte	0x0
+	.uleb128 0x6
+	.ualong	0x536
+	.byte	0x24
+	.byte	0x36
+	.byte	0x81
+	.uleb128 0x7
+	.string	"seq"
+	.byte	0x36
+	.byte	0x81
+	.ualong	0x536
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.byte	0x0
+	.uleb128 0xa
+	.ualong	0x546
+	.ualong	0x4e0
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x2
+	.byte	0x0
+	.uleb128 0x2
+	.string	"TEX_MBRLEN_REC"
+	.byte	0x36
+	.byte	0x81
+	.ualong	0x51f
+	.uleb128 0x6
+	.ualong	0x599
+	.byte	0xa0
+	.byte	0x36
+	.byte	0x82
+	.uleb128 0x7
+	.string	"input"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0x4ca
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"expect"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0x546
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x78
+	.uleb128 0x7
+	.string	"is_last"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x23
+	.uleb128 0x9c
+	.byte	0x0
+	.uleb128 0x2
+	.string	"TST_MBRLEN_REC"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0x55c
+	.uleb128 0x10
+	.ualong	0x5d4
+	.uaword	0xbb88
+	.byte	0x36
+	.byte	0x82
+	.uleb128 0x7
+	.string	"hd"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0x441
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.uleb128 0x7
+	.string	"rec"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0x5d4
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x8
+	.byte	0x0
+	.uleb128 0xa
+	.ualong	0x5e5
+	.ualong	0x599
+	.uleb128 0x11
+	.ualong	0x10d
+	.uaword	0x12b
+	.byte	0x0
+	.uleb128 0x2
+	.string	"TST_MBRLEN"
+	.byte	0x36
+	.byte	0x82
+	.ualong	0x5af
+	.uleb128 0x4
+	.string	"double"
+	.byte	0x8
+	.byte	0x4
+	.uleb128 0x4
+	.string	"float"
+	.byte	0x4
+	.byte	0x4
+	.uleb128 0x12
+	.ualong	0x665
+	.byte	0x1
+	.string	"main"
+	.byte	0x4
+	.byte	0x17
+	.byte	0x1
+	.ualong	0xe7
+	.ualong	.LFB5
+	.ualong	.LFE5
+	.ualong	.LLST0
+	.uleb128 0x13
+	.string	"argc"
+	.byte	0x4
+	.byte	0x16
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -20
+	.uleb128 0x13
+	.string	"argv"
+	.byte	0x4
+	.byte	0x16
+	.ualong	0x665
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -24
+	.uleb128 0x14
+	.string	"ret"
+	.byte	0x4
+	.byte	0x18
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -16
+	.uleb128 0x14
+	.string	"debug"
+	.byte	0x4
+	.byte	0x19
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -12
+	.byte	0x0
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0xee
+	.uleb128 0x12
+	.ualong	0x706
+	.byte	0x1
+	.string	"result"
+	.byte	0x4
+	.byte	0x2d
+	.byte	0x1
+	.ualong	0xe7
+	.ualong	.LFB6
+	.ualong	.LFE6
+	.ualong	.LLST1
+	.uleb128 0x13
+	.string	"fp"
+	.byte	0x4
+	.byte	0x2b
+	.ualong	0x706
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -16
+	.uleb128 0x13
+	.string	"res"
+	.byte	0x4
+	.byte	0x2b
+	.ualong	0xf4
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -20
+	.uleb128 0x13
+	.string	"func"
+	.byte	0x4
+	.byte	0x2b
+	.ualong	0x3f9
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -24
+	.uleb128 0x13
+	.string	"loc"
+	.byte	0x4
+	.byte	0x2b
+	.ualong	0x3f9
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -28
+	.uleb128 0x13
+	.string	"rec_no"
+	.byte	0x4
+	.byte	0x2b
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 0
+	.uleb128 0x13
+	.string	"seq_no"
+	.byte	0x4
+	.byte	0x2c
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 4
+	.uleb128 0x13
+	.string	"case_no"
+	.byte	0x4
+	.byte	0x2c
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 8
+	.uleb128 0x13
+	.string	"msg"
+	.byte	0x4
+	.byte	0x2c
+	.ualong	0x3f9
+	.byte	0x2
+	.byte	0x91
+	.sleb128 12
+	.byte	0x0
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0x22a
+	.uleb128 0x12
+	.ualong	0x896
+	.byte	0x1
+	.string	"tst_mbrlen"
+	.byte	0x1
+	.byte	0xd
+	.byte	0x1
+	.ualong	0xe7
+	.ualong	.LFB7
+	.ualong	.LFE7
+	.ualong	.LLST2
+	.uleb128 0x13
+	.string	"fp"
+	.byte	0x1
+	.byte	0xc
+	.ualong	0x706
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -100
+	.uleb128 0x13
+	.string	"debug_flg"
+	.byte	0x1
+	.byte	0xc
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -104
+	.uleb128 0x14
+	.string	"loc"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -96
+	.uleb128 0x14
+	.string	"rec"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -92
+	.uleb128 0x14
+	.string	"err_count"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -88
+	.uleb128 0x14
+	.string	"warn_count"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -84
+	.uleb128 0x14
+	.string	"func_id"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -80
+	.uleb128 0x14
+	.string	"seq_num"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -76
+	.uleb128 0x14
+	.string	"locale"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0x3f9
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -72
+	.uleb128 0x14
+	.string	"err_exp"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x3
+	.byte	0x91
+	.sleb128 -68
+	.uleb128 0x14
+	.string	"ret_flg"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -64
+	.uleb128 0x14
+	.string	"errno_save"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0xe7
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -60
+	.uleb128 0x14
+	.string	"ret_exp"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0x9b
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -56
+	.uleb128 0x14
+	.string	"ret"
+	.byte	0x1
+	.byte	0xe
+	.ualong	0x9b
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -52
+	.uleb128 0x14
+	.string	"s_flg"
+	.byte	0x1
+	.byte	0xf
+	.ualong	0xf4
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -45
+	.uleb128 0x14
+	.string	"s_in"
+	.byte	0x1
+	.byte	0x10
+	.ualong	0x3f9
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -44
+	.uleb128 0x14
+	.string	"n"
+	.byte	0x1
+	.byte	0x11
+	.ualong	0x9b
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -40
+	.uleb128 0x14
+	.string	"t_flg"
+	.byte	0x1
+	.byte	0x12
+	.ualong	0xf4
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -34
+	.uleb128 0x14
+	.string	"t_ini"
+	.byte	0x1
+	.byte	0x13
+	.ualong	0xf4
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -33
+	.uleb128 0x14
+	.string	"ps"
+	.byte	0x1
+	.byte	0x15
+	.ualong	0x896
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -32
+	.uleb128 0x14
+	.string	"s"
+	.byte	0x1
+	.byte	0x14
+	.ualong	0x404
+	.byte	0x5
+	.byte	0x3
+	.ualong	s.3934
+	.byte	0x0
+	.uleb128 0x5
+	.byte	0x4
+	.ualong	0x404
+	.uleb128 0x15
+	.string	"stdout"
+	.byte	0x5
+	.byte	0x88
+	.ualong	0x706
+	.byte	0x1
+	.byte	0x1
+	.uleb128 0x15
+	.string	"stderr"
+	.byte	0x5
+	.byte	0x89
+	.ualong	0x706
+	.byte	0x1
+	.byte	0x1
+	.uleb128 0x15
+	.string	"__libc_errno"
+	.byte	0x29
+	.byte	0x45
+	.ualong	0xe7
+	.byte	0x1
+	.byte	0x1
+	.uleb128 0xa
+	.ualong	0x8e2
+	.ualong	0xf4
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x83
+	.byte	0x0
+	.uleb128 0x16
+	.string	"result_rec"
+	.byte	0x4
+	.byte	0x27
+	.ualong	0x8d2
+	.byte	0x1
+	.byte	0x5
+	.byte	0x3
+	.ualong	result_rec
+	.uleb128 0xa
+	.ualong	0x90b
+	.ualong	0x5e5
+	.uleb128 0xb
+	.ualong	0x10d
+	.byte	0x3
+	.byte	0x0
+	.uleb128 0x16
+	.string	"tst_mbrlen_loc"
+	.byte	0x3b
+	.byte	0x13
+	.ualong	0x8fb
+	.byte	0x1
+	.byte	0x5
+	.byte	0x3
+	.ualong	tst_mbrlen_loc
+	.byte	0x0
+	.section	.debug_abbrev
+	.uleb128 0x1
+	.uleb128 0x11
+	.byte	0x1
+	.uleb128 0x43
+	.uleb128 0x6
+	.uleb128 0x10
+	.uleb128 0x6
+	.uleb128 0x12
+	.uleb128 0x1
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x25
+	.uleb128 0x8
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x1b
+	.uleb128 0x8
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x2
+	.uleb128 0x16
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x24
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x4
+	.uleb128 0x24
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x5
+	.uleb128 0xf
+	.byte	0x0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x6
+	.uleb128 0x13
+	.byte	0x1
+	.uleb128 0x1
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x7
+	.uleb128 0xd
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x8
+	.uleb128 0x17
+	.byte	0x1
+	.uleb128 0x1
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x9
+	.uleb128 0xd
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xa
+	.uleb128 0x1
+	.byte	0x1
+	.uleb128 0x1
+	.uleb128 0x13
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xb
+	.uleb128 0x21
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2f
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xc
+	.uleb128 0x13
+	.byte	0x1
+	.uleb128 0x1
+	.uleb128 0x13
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xd
+	.uleb128 0xd
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0x5
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xe
+	.uleb128 0x16
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0x5
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xf
+	.uleb128 0x26
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x10
+	.uleb128 0x13
+	.byte	0x1
+	.uleb128 0x1
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0x5
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x11
+	.uleb128 0x21
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2f
+	.uleb128 0x5
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x12
+	.uleb128 0x2e
+	.byte	0x1
+	.uleb128 0x1
+	.uleb128 0x13
+	.uleb128 0x3f
+	.uleb128 0xc
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x27
+	.uleb128 0xc
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x12
+	.uleb128 0x1
+	.uleb128 0x40
+	.uleb128 0x6
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x13
+	.uleb128 0x5
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x14
+	.uleb128 0x34
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x15
+	.uleb128 0x34
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x3f
+	.uleb128 0xc
+	.uleb128 0x3c
+	.uleb128 0xc
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x16
+	.uleb128 0x34
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x3f
+	.uleb128 0xc
+	.uleb128 0x2
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.byte	0x0
+	.section	.debug_pubnames,"",@progbits
+	.ualong	0x53
+	.uaword	0x2
+	.ualong	.Ldebug_info0
+	.ualong	0x929
+	.ualong	0x60a
+	.string	"main"
+	.ualong	0x66b
+	.string	"result"
+	.ualong	0x70c
+	.string	"tst_mbrlen"
+	.ualong	0x8e2
+	.string	"result_rec"
+	.ualong	0x90b
+	.string	"tst_mbrlen_loc"
+	.ualong	0x0
+	.section	.debug_aranges,"",@progbits
+	.ualong	0x1c
+	.uaword	0x2
+	.ualong	.Ldebug_info0
+	.byte	0x4
+	.byte	0x0
+	.uaword	0x0
+	.uaword	0x0
+	.ualong	.Ltext0
+	.ualong	.Letext0-.Ltext0
+	.ualong	0x0
+	.ualong	0x0
+	.section	.debug_macinfo
+	.byte	0x0
+	.section	.debug_str,"",@progbits
+.LASF0:
+	.string	"unsigned int"
+	.ident	"GCC: (GNU) 4.1.1 (STMicroelectronics Special) [build Jun 26 2007]"
+	.section	.note.GNU-stack,"",@progbits

+ 103 - 0
test/locale-mbwc/tst_mbrtowc.c

@@ -0,0 +1,103 @@
+/*
+  MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n,
+			   mbstate_t *ps)
+*/
+
+#define TST_FUNCTION mbrtowc
+
+#include "tsp_common.c"
+#include "dat_mbrtowc.c"
+
+
+int
+tst_mbrtowc (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char w_flg, s_flg;
+  char *s;
+  size_t n;
+  char t_flg, t_ini;
+  static mbstate_t t = { 0 };
+  mbstate_t *pt;
+  wchar_t wc, *pwc, wc_ex;
+
+  TST_DO_TEST (mbrtowc)
+  {
+    TST_HEAD_LOCALE (mbrtowc, S_MBRTOWC);
+    TST_DO_REC (mbrtowc)
+    {
+      if (mbrtowc (NULL, "", 0, &t) != 0)
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_MBRTOWC, CASE_3,
+		  "Initialization failed - skipping this test case.");
+	  continue;
+	}
+
+      TST_DO_SEQ (MBRTOWC_SEQNUM)
+      {
+	TST_GET_ERRET_SEQ (mbrtowc);
+	w_flg = TST_INPUT_SEQ (mbrtowc).w_flg;
+	s_flg = TST_INPUT_SEQ (mbrtowc).s_flg;
+	s = TST_INPUT_SEQ (mbrtowc).s;
+	n = TST_INPUT_SEQ (mbrtowc).n;
+	t_flg = TST_INPUT_SEQ (mbrtowc).t_flg;
+	t_ini = TST_INPUT_SEQ (mbrtowc).t_init;
+	pwc = (w_flg == 0) ? NULL : &wc;
+
+	if (s_flg == 0)
+	  {
+	    s = NULL;
+	  }
+
+	if (n == USE_MBCURMAX)
+	  {
+	    n = MB_CUR_MAX;
+	  }
+
+	pt = (t_flg == 0) ? NULL : &t;
+#if 0
+	if (t_ini != 0)
+	  {
+	    memset (&t, 0, sizeof (t));
+	  }
+#endif
+	TST_CLEAR_ERRNO;
+	ret = mbrtowc (pwc, s, n, pt);
+	TST_SAVE_ERRNO;
+
+	if (debug_flg)
+	  {
+	    fprintf (stdout, "mbrtowc() [ %s : %d : %d ] ret = %zd\n",
+		     locale, rec + 1, seq_num + 1, ret);
+	    fprintf (stdout, "			    errno = %hd\n",
+		     errno_save);
+	  }
+
+	TST_IF_RETURN (S_MBRTOWC)
+	{
+	};
+
+	if (pwc == NULL || s == NULL || ret == (size_t) - 1
+	    || ret == (size_t) - 2)
+	  {
+	    continue;
+	  }
+
+	wc_ex = TST_EXPECT_SEQ (mbrtowc).wc;
+	if (wc_ex == wc)
+	  {
+	    Result (C_SUCCESS, S_MBRTOWC, CASE_4, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_MBRTOWC, CASE_4,
+		    "converted wc is different from an expected wc");
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 109 - 0
test/locale-mbwc/tst_mbsrtowcs.c

@@ -0,0 +1,109 @@
+/*
+  MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n,
+			       mbstate_t *ps)
+*/
+
+#define TST_FUNCTION mbsrtowcs
+
+#include "tsp_common.c"
+#include "dat_mbsrtowcs.c"
+
+int
+tst_mbsrtowcs (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char w_flg;
+  const char *s, *p;
+  size_t n;
+  char t_flg, t_ini;
+  static mbstate_t t = { 0 };
+  mbstate_t *pt;
+  wchar_t ws[WCSSIZE], *ws_ex, *wp;
+  int err, i;
+
+  TST_DO_TEST (mbsrtowcs)
+  {
+    TST_HEAD_LOCALE (mbsrtowcs, S_MBSRTOWCS);
+    TST_DO_REC (mbsrtowcs)
+    {
+      s = "";
+      if (mbsrtowcs (NULL, &s, 0, &t) != 0)
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_MBSRTOWCS, CASE_3,
+		  "Initialization failed - skipping this test case.");
+	  continue;
+	}
+
+      TST_DO_SEQ (MBSRTOWCS_SEQNUM)
+      {
+	TST_GET_ERRET_SEQ (mbsrtowcs);
+	w_flg = TST_INPUT_SEQ (mbsrtowcs).w_flg;
+	p = s = TST_INPUT_SEQ (mbsrtowcs).s;
+	n = TST_INPUT_SEQ (mbsrtowcs).n;
+	t_flg = TST_INPUT_SEQ (mbsrtowcs).t_flg;
+	t_ini = TST_INPUT_SEQ (mbsrtowcs).t_init;
+	wp = (w_flg == 0) ? NULL : ws;
+
+	if (n == USE_MBCURMAX)
+	  {
+	    n = MB_CUR_MAX;
+	  }
+
+	pt = (t_flg == 0) ? NULL : &t;
+
+	if (t_ini != 0)
+	  {
+	    memset (&t, 0, sizeof (t));
+	  }
+
+	TST_CLEAR_ERRNO;
+	ret = mbsrtowcs (wp, &p, n, pt);
+	TST_SAVE_ERRNO;
+
+	if (debug_flg)
+	  {
+	    fprintf (stderr, "mbsrtowcs: [ %d ] : ret = %zd\n", rec + 1, ret);
+	  }
+
+	TST_IF_RETURN (S_MBSRTOWCS)
+	{
+	};
+
+	if (wp == NULL || ret == (size_t) - 1 || ret == (size_t) - 2)
+	  {
+	    continue;
+	  }
+
+	ws_ex = TST_EXPECT_SEQ (mbsrtowcs).ws;
+	for (err = 0, i = 0; i < ret; i++)
+	  {
+	    if (debug_flg)
+	      {
+		fprintf (stderr,
+			 "mbsrtowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n",
+			 i, (unsigned long int) ws[i],
+			 (unsigned long int) ws_ex[i], i);
+	      }
+
+	    if (ws[i] != ws_ex[i])
+	      {
+		err++;
+		err_count++;
+		Result (C_FAILURE, S_MBSRTOWCS, CASE_4,
+			"the converted wc string has "
+			"different value from an expected string");
+		break;
+	      }
+	  }
+
+	if (!err)
+	  {
+	    Result (C_SUCCESS, S_MBSRTOWCS, CASE_4, MS_PASSED);
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 98 - 0
test/locale-mbwc/tst_mbstowcs.c

@@ -0,0 +1,98 @@
+/*
+  MBSTOWCS: size_t mbstowcs (wchar_t *ws, char *s, size_t n)
+*/
+
+#define TST_FUNCTION mbstowcs
+
+#include "tsp_common.c"
+#include "dat_mbstowcs.c"
+
+int
+tst_mbstowcs (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char w_flg, s_flg;
+  const char *s;
+  size_t n;
+  wchar_t ws[WCSSIZE], *ws_ex, *wp;
+  int err, i;
+
+  TST_DO_TEST (mbstowcs)
+  {
+    TST_HEAD_LOCALE (mbstowcs, S_MBSTOWCS);
+    TST_DO_REC (mbstowcs)
+    {
+      if (mbstowcs (NULL, "", 0) != 0)
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_MBSTOWCS, CASE_3,
+		  "Initialization failed - skipping this test case.");
+	  continue;
+	}
+
+      TST_DO_SEQ (MBSTOWCS_SEQNUM)
+      {
+	TST_GET_ERRET_SEQ (mbstowcs);
+	w_flg = TST_INPUT_SEQ (mbstowcs).w_flg;
+	s_flg = TST_INPUT_SEQ (mbstowcs).s_flg;
+	n = TST_INPUT_SEQ (mbstowcs).n;
+
+	if (s_flg == 0)
+	  s = NULL;
+	else
+	  s = TST_INPUT_SEQ (mbstowcs).s;
+
+
+	wp = (wchar_t *) ((w_flg == 0) ? NULL : ws);
+
+	TST_CLEAR_ERRNO;
+	ret = mbstowcs (wp, s, n);
+	TST_SAVE_ERRNO;
+
+	if (debug_flg)
+	  {
+	    fprintf (stderr, "mbstowcs: ret = %zd\n", ret);
+	  }
+
+	TST_IF_RETURN (S_MBSTOWCS)
+	{
+	};
+
+	if (s == NULL || wp == NULL || ret == (size_t) - 1)
+	  {
+	    continue;
+	  }
+
+	ws_ex = TST_EXPECT_SEQ (mbstowcs).ws;
+
+	for (err = 0, i = 0; i < ret; i++)
+	  {
+	    if (debug_flg)
+	      {
+		fprintf (stderr,
+			 "mbstowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n",
+			 i, (unsigned long int) ws[i],
+			 (unsigned long int) ws_ex[i], i);
+	      }
+
+	    if (ws[i] != ws_ex[i])
+	      {
+		err++;
+		err_count++;
+		Result (C_FAILURE, S_MBSTOWCS, CASE_4,
+			"the converted wc string has "
+			"different value from an expected string");
+		break;
+	      }
+	  }
+
+	if (!err)
+	  {
+	    Result (C_SUCCESS, S_MBSTOWCS, CASE_4, MS_PASSED);
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 130 - 0
test/locale-mbwc/tst_mbtowc.c

@@ -0,0 +1,130 @@
+/*
+  MBTOWC: int mbtowc (wchar_t *wc, char *s, size_t n)
+*/
+
+#define TST_FUNCTION mbtowc
+
+#include "tsp_common.c"
+#include "dat_mbtowc.c"
+
+
+int
+tst_mbtowc (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  char w_flg, s_flg;
+  const char *s_in;
+  size_t n;
+  wchar_t wc, wc_ex, *wp;
+
+  TST_DO_TEST (mbtowc)
+  {
+    TST_HEAD_LOCALE (mbtowc, S_MBTOWC);
+    TST_DO_REC (mbtowc)
+    {
+      if (mbstowcs (NULL, "", 0) != 0)
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_MBSTOWCS, CASE_3,
+		  "Initialization failed - skipping this test case.");
+	  continue;
+	}
+
+      TST_DO_SEQ (MBTOWC_SEQNUM)
+      {
+	TST_GET_ERRET_SEQ (mbtowc);
+	w_flg = TST_INPUT_SEQ (mbtowc).w_flg;
+	s_flg = TST_INPUT_SEQ (mbtowc).s_flg;
+	n = TST_INPUT_SEQ (mbtowc).n;
+
+	if (n == USE_MBCURMAX)
+	  {
+	    n = MB_CUR_MAX;
+	  }
+
+	if (s_flg == 0)
+	  s_in = NULL;
+	else
+	  s_in = TST_INPUT_SEQ (mbtowc).s;
+
+	wp = (wchar_t *) ((w_flg == 0) ? NULL : &wc);
+
+	/* XXX Clear the internal state.  We should probably have
+	   a flag for this.  */
+	mbtowc (NULL, NULL, 0);
+
+	TST_CLEAR_ERRNO;
+	ret = mbtowc (wp, s_in, n);
+	TST_SAVE_ERRNO;
+
+	if (debug_flg)
+	  {
+	    fprintf (stdout, "mbtowc() [ %s : %d ] ret = %d\n", locale,
+		     rec + 1, ret);
+	    fprintf (stdout, "			   errno      = %d\n",
+		     errno_save);
+	  }
+
+	TST_IF_RETURN (S_MBTOWC)
+	{
+	  if (s_in == NULL)
+	    {			/* state dependency */
+	      if (ret_exp == +1)
+		{		/* state-dependent  */
+		  if (ret != 0)
+		    {
+		      /* Non-zero: state-dependent encoding.  */
+		      Result (C_SUCCESS, S_MBTOWC, CASE_3, MS_PASSED);
+		    }
+		  else
+		    {
+		      err_count++;
+		      Result (C_FAILURE, S_MBTOWC, CASE_3,
+			      "should be state-dependent encoding, "
+			      "but a return value shows it is "
+			      "state-independent");
+		    }
+		}
+
+	      if (ret_exp == 0)
+		{		/* state-independent */
+		  if (ret == 0)
+		    {
+		      /* Non-zero: state-dependent encoding.  */
+		      Result (C_SUCCESS, S_MBTOWC, CASE_3, MS_PASSED);
+		    }
+		  else
+		    {
+		      err_count++;
+		      Result (C_FAILURE, S_MBTOWC, CASE_3,
+			      "should be state-independent encoding, "
+			      "but a return value shows it is "
+			      "state-dependent");
+		    }
+		}
+	    }
+	}
+
+	if ((wp == NULL || s_in == NULL || s_in[0] == 0) || ret <= 0)
+	  {
+	    continue;
+	  }
+
+	wc_ex = TST_EXPECT_SEQ (mbtowc).wc;
+
+	if (wc_ex == wc)
+	  {
+	    Result (C_SUCCESS, S_MBTOWC, CASE_4, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_MBTOWC, CASE_4,
+		    "converted wc is different from an expected wc");
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 87 - 0
test/locale-mbwc/tst_strcoll.c

@@ -0,0 +1,87 @@
+/*
+  STRCOLL: int strcoll (const char *s1, const char *s2)
+*/
+
+#define TST_FUNCTION strcoll
+
+#include "tsp_common.c"
+#include "dat_strcoll.c"
+
+int
+tst_strcoll (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  const char *s1, *s2;
+
+  TST_DO_TEST (strcoll)
+  {
+    TST_HEAD_LOCALE (strcoll, S_STRCOLL);
+    TST_DO_REC (strcoll)
+    {
+      TST_GET_ERRET (strcoll);
+      s1 = TST_INPUT (strcoll).s1;
+      s2 = TST_INPUT (strcoll).s2;
+
+      TST_CLEAR_ERRNO;
+      ret = strcoll (s1, s2);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{
+	  fprintf (stdout, "strcoll() [ %s : %d ] ret = %d\n", locale,
+		   rec + 1, ret);
+	  fprintf (stdout, "			    errno = %d\n",
+		   errno_save);
+	  fprintf (stdout, "			    LC_COLLATE = %s\n",
+		   (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE,
+							       NULL) : "");
+	}
+
+      TST_IF_RETURN (S_STRCOLL)
+      {
+	if (ret_exp == +1)
+	  {
+	    if (ret > 0)
+	      {
+		Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED);
+	      }
+	    else
+	      {
+		err_count++;
+		Result (C_FAILURE, S_STRCOLL, CASE_3,
+			"the return value should be greater than 0,"
+			" but is not ...");
+	      }
+	  }
+	else if (ret_exp == -1)
+	  {
+	    if (ret < 0)
+	      {
+		Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED);
+	      }
+	    else
+	      {
+		err_count++;
+		Result (C_FAILURE, S_STRCOLL, CASE_3,
+			"the return value should less than 0, but not ...");
+	      }
+	  }
+	else if (ret_exp != 0)
+	  {
+	    if (debug_flg)
+	      {
+		fprintf (stderr, "*** Warning *** : tst_strcoll : "
+			 "(check the test data); should set ret_flg=1"
+			 " to check a return value");
+	      }
+
+	    warn_count++;
+	    Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data); "
+		    "should set ret_flg=1 to check a return value");
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 74 - 0
test/locale-mbwc/tst_strfmon.c

@@ -0,0 +1,74 @@
+/*
+  STRFMON: size_t strfmon (char *buf, size_t nbyte, const char *fmt, ...)
+*/
+
+#define TST_FUNCTION strfmon
+
+#include "tsp_common.c"
+#include "dat_strfmon.c"
+#include <monetary.h>
+
+int
+tst_strfmon (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char buf[MONSIZE], *mon;
+  size_t nbt;
+  char *fmt;
+  double val;
+
+  TST_DO_TEST (strfmon)
+  {
+    TST_HEAD_LOCALE (strfmon, S_STRFMON);
+    TST_DO_REC (strfmon)
+    {
+      TST_GET_ERRET (strfmon);
+      nbt = TST_INPUT (strfmon).nbytes;
+      fmt = TST_INPUT (strfmon).fmt;
+      val = TST_INPUT (strfmon).val;
+      memset (buf, 0, MONSIZE);
+      if (nbt > MONSIZE)
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_STRFMON, CASE_3, "buffer too small in test");
+	  continue;
+	}
+
+      TST_CLEAR_ERRNO;
+      ret = strfmon (buf, nbt, fmt, val, val, val);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)		/* seems fprintf doesn't update the errno */
+	{
+	  fprintf (stdout, "strfmon() [ %s : %d ]\n", locale, rec + 1);
+	  fprintf (stdout, "	  : err = %d | %s\n", errno_save,
+		   strerror (errno));
+	  fprintf (stdout, "	  : ret = %zd; \t fmt = |%s|\n", ret, fmt);
+	  fprintf (stdout, "	  : buf = |%s|\n\n", buf);
+	}
+
+      TST_IF_RETURN (S_STRFMON)
+      {
+      };
+      if (errno != 0 || ret == -1)
+	{
+	  continue;
+	}
+
+      mon = TST_EXPECT (strfmon).mon;
+
+      if (!strcmp (buf, mon))
+	{
+	  Result (C_SUCCESS, S_STRFMON, CASE_3, MS_PASSED);
+	}
+      else
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_STRFMON, CASE_3, "the formatted string is "
+		  "different from an expected result");
+	}
+    }
+  }
+
+  return err_count;
+}

+ 136 - 0
test/locale-mbwc/tst_strxfrm.c

@@ -0,0 +1,136 @@
+/*
+  STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n)
+*/
+
+#define TST_FUNCTION strxfrm
+
+#include "tsp_common.c"
+#include "dat_strxfrm.c"
+
+
+int
+tst_strxfrm (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  const char *org1, *org2;
+  char frm1[MBSSIZE], frm2[MBSSIZE];
+  size_t n1, n2;
+  int ret_coll, ret_cmp;
+
+  TST_DO_TEST (strxfrm)
+  {
+    TST_HEAD_LOCALE (strxfrm, S_STRXFRM);
+    TST_DO_REC (strxfrm)
+    {
+      TST_GET_ERRET (strxfrm);
+      org1 = TST_INPUT (strxfrm).org1;
+      org2 = TST_INPUT (strxfrm).org2;
+      n1 = TST_INPUT (strxfrm).n1;
+      n2 = TST_INPUT (strxfrm).n2;
+
+      if (n1 < 0 || sizeof (frm1) < n1 || sizeof (frm2) < n2)
+	{
+	  warn_count++;
+	  Result (C_IGNORED, S_STRXFRM, CASE_9,
+		  "input data n1 or n2 is invalid");
+	  continue;
+	}
+
+      /* An errno and a return value are checked
+	 only for 2nd strxfrm() call.
+	 A result of 1st call is used for comparing
+	 those 2 values by using strcmp().
+      */
+
+      /*-- First call --*/
+
+      TST_CLEAR_ERRNO;
+      ret = strxfrm (frm1, org1, n1);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{
+	  fprintf (stdout, "strxfrm() [ %s : %d ] ( 1st call )\n", locale,
+		   rec + 1);
+	  fprintf (stdout, "	  : err = %d | %s\n", errno_save,
+		   strerror (errno));
+	  fprintf (stdout, "	  : ret = %zu\n", ret);
+	  fprintf (stdout, "	  : org = %s\n", org1);
+	}
+
+      if (ret >= n1 || errno != 0)
+	{
+	  warn_count++;
+	  Result (C_INVALID, S_STRXFRM, CASE_8,
+		  "got an error in fist strxfrm() call");
+	  continue;
+	}
+
+      /*-- Second call --*/
+
+      TST_CLEAR_ERRNO;
+      ret = strxfrm (((n2 == 0) ? NULL : frm2), org2, n2);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "	  ..............( 2nd call )\n");
+	  fprintf (stdout, "	  : err = %d | %s\n", errno,
+		   strerror (errno));
+	  fprintf (stdout, "	  : ret = %zu\n", ret);
+	  fprintf (stdout, "	  : org = %s\n", org2);
+	}
+
+      TST_IF_RETURN (S_STRXFRM)
+      {
+      };
+
+      if (n2 == 0 || ret >= n2 || errno != 0)
+	{
+#if 0
+	  warn_count++;
+	  Result (C_IGNORED, S_STRXFRM, CASE_7, "did not get a result");
+#endif
+	  continue;
+	}
+
+      /*-- strcoll & strcmp --*/
+
+      TST_CLEAR_ERRNO;
+      /* Depends on strcoll() ... not good though ... */
+      ret_coll = strcoll (org1, org2);
+
+      if (errno != 0)
+	{
+	  /* bug * bug may get correct results ...	  */
+	  warn_count++;
+	  Result (C_INVALID, S_STRXFRM, CASE_6,
+		  "got an error in strcoll() call");
+	  continue;
+	}
+
+      ret_cmp = strcmp (frm1, frm2);
+
+      if ((ret_coll == 0 && ret_cmp == 0)
+	  || (ret_coll < 0 && ret_cmp < 0) || (ret_coll > 0 && ret_cmp > 0))
+	{
+	  Result (C_SUCCESS, S_STRXFRM, CASE_3,
+		  MS_PASSED "(depends on strcoll & strcmp)");
+	}
+      else
+	{
+	  err_count++;
+	  Result (C_FAILURE, S_STRXFRM, CASE_3,
+		  "results from strcoll & strcmp() do not match");
+	}
+
+      if (debug_flg)
+	{
+	  fprintf (stdout, ".......... strcoll = %d <-> %d = strcmp\n",
+		   ret_coll, ret_cmp);
+	}
+    }
+  }
+
+  return err_count;
+}

+ 137 - 0
test/locale-mbwc/tst_swscanf.c

@@ -0,0 +1,137 @@
+/*
+  SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...);
+*/
+
+#define TST_FUNCTION swscanf
+
+#include "tsp_common.c"
+#include "dat_swscanf.c"
+
+int
+tst_swscanf (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  wchar_t *ws;
+  wchar_t *fmt;
+  int val_int1;
+  unsigned val_int2;
+  float val_flt;
+  char val_c;
+  char val_s[MBSSIZE * 3];
+  wchar_t val_S[WCSSIZE * 3], *exp_S;
+  int i;
+
+  TST_DO_TEST (swscanf)
+  {
+    TST_HEAD_LOCALE (swscanf, S_SWSCANF);
+    TST_DO_REC (swscanf)
+    {
+      TST_GET_ERRET (swscanf);
+      ws = TST_INPUT (swscanf).ws;
+      fmt = TST_INPUT (swscanf).fmt;
+      val_int1 = val_int2 = val_flt = val_c = 0;
+      memset (val_s, 0, sizeof (val_s));
+      memset (val_S, 0, sizeof (val_S));
+
+      TST_CLEAR_ERRNO;
+
+      if (TST_INPUT (swscanf).wch)
+	{
+	  ret = swscanf (ws, fmt, val_S);
+	}
+      else
+	{
+	  ret =
+	    swscanf (ws, fmt, &val_int1, &val_int2, &val_flt, &val_c, val_s);
+	}
+
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{			/* seems fprintf doesn't update errno */
+	  fprintf (stdout, "swscanf() [ %s : %d ] ret = %d\n", locale,
+		   rec + 1, ret);
+	  fprintf (stdout, "			    errno   = %d\n",
+		   errno_save);
+	  fprintf (stdout, "			    collate = %s\n",
+		   (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE,
+							       NULL) : "");
+
+	  if (TST_INPUT (swscanf).wch)
+	    {
+	      fprintf (stdout, "			val_S[ 0 ] = 0x%lx\n",
+		       (unsigned long int) val_S[0]);
+	    }
+	  else
+	    {
+	      fprintf (stdout, "			val_int1   = %d\n",
+		       val_int1);
+	      fprintf (stdout, "			val_int2   = %d\n",
+		       val_int2);
+	      fprintf (stdout, "			val_flt	   = %f\n",
+		       val_flt);
+	      fprintf (stdout, "			val_c	   = %c\n",
+		       val_c);
+	      fprintf (stdout, "			val_s	   = %s\n",
+		       val_s);
+	    }
+	}
+
+      TST_IF_RETURN (S_SWSCANF)
+      {
+      };
+
+      if (errno == 0 && TST_INPUT (swscanf).wch)
+	{
+	  for (exp_S = TST_EXPECT (swscanf).val_S, i = 0; i < WCSSIZE * 3;
+	       i++)
+	    {
+	      if (val_S[i] == L'\0' || exp_S[i] == L'\0')
+		{
+		  if (val_S[i] != exp_S[i] && TST_INPUT (swscanf).wch == 'C')
+		    {
+		      err_count++;
+		      Result (C_FAILURE, S_SWSCANF, CASE_4,
+			      "the converted wide-char string is different"
+			      " from an expected value.");
+		    }
+		  break;
+		}
+
+	      if (val_S[i] != exp_S[i])
+		{
+		  err_count++;
+		  Result (C_FAILURE, S_SWSCANF, CASE_4,
+			  "the converted wide-char string is different from"
+			  " an expected value.");
+		  break;
+		}
+	      else
+		{
+		  Result (C_SUCCESS, S_SWSCANF, CASE_4, MS_PASSED);
+		}
+	    }
+	}
+
+      if (errno == 0 && !TST_INPUT (swscanf).wch)
+	{
+	  if (val_int1 != TST_EXPECT (swscanf).val_int ||
+	      val_int2 != TST_EXPECT (swscanf).val_uns ||
+	      val_flt != TST_EXPECT (swscanf).val_flt ||
+	      val_c != TST_EXPECT (swscanf).val_c ||
+	      strcmp (val_s, TST_EXPECT (swscanf).val_s))
+	    {
+	      err_count++;
+	      Result (C_FAILURE, S_SWSCANF, CASE_3,
+		      "the converted values are different from expected values.");
+	    }
+	  else
+	    {
+	      Result (C_SUCCESS, S_SWSCANF, CASE_3, MS_PASSED);
+	    }
+	}
+    }
+  }
+
+  return err_count;
+}

+ 82 - 0
test/locale-mbwc/tst_towctrans.c

@@ -0,0 +1,82 @@
+/*
+  TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc);
+*/
+
+#define TST_FUNCTION towctrans
+
+#include "tsp_common.c"
+#include "dat_towctrans.c"
+
+
+int
+tst_towctrans (FILE *fp, int debug_flg)
+{
+  TST_DECL_VARS (wint_t);
+  wint_t wc;
+  const char *ts;
+#if SHOJI_IS_RIGHT
+  int dummy=0;
+#endif
+  wctrans_t wto;
+
+  TST_DO_TEST (towctrans)
+    {
+      TST_HEAD_LOCALE (towctrans, S_TOWCTRANS);
+      TST_DO_REC (towctrans)
+	{
+	  TST_GET_ERRET (towctrans);
+	  wc = TST_INPUT (towctrans).wc;
+	  ts = TST_INPUT (towctrans).ts;
+
+#if SHOJI_IS_RIGHT
+	  if ((wto = wctrans (ts)) == (wctrans_t) 0)
+	    {
+#if 0
+	      result (fp, C_IGNORED, S_TOWCTRANS, locale, rec+1, seq_num+1, 3,
+		      "Skip this data because the wctrans object is not invalid.");
+	      warn_count++;
+	      continue;
+#else
+	      wto = &dummy;	/* not good ... */
+#endif
+	      if (debug_flg)
+		{
+		  fprintf (stdout, "towctrans() ------ wctrans() returnd 0.\n");
+		}
+	    }
+#else
+	  wto = wctrans (ts);
+#endif
+
+	  TST_CLEAR_ERRNO;
+	  ret = towctrans (wc, wto);
+	  TST_SAVE_ERRNO;
+
+	  if (debug_flg)
+	    {
+	      fprintf (stdout, "towctrans() [ %s : %d ] ret = 0x%x\n",
+		       locale, rec+1, ret);
+	      fprintf (stdout, "		      errno = %d\n",
+		       errno_save);
+	    }
+
+	  TST_IF_RETURN (S_TOWCTRANS)
+	    {
+	      if (ret != 0)
+		{
+		  result (fp, C_SUCCESS, S_TOWCTRANS, locale, rec+1,
+			  seq_num+1, 3, MS_PASSED);
+		}
+	      else
+		{
+		  err_count++;
+		  result (fp, C_FAILURE, S_TOWCTRANS, locale, rec+1,
+			  seq_num+1, 3,
+			  "the function returned 0, but should be non-zero");
+		}
+	    }
+	}
+    }
+
+  return err_count;
+}

+ 11 - 0
test/locale-mbwc/tst_towlower.c

@@ -0,0 +1,11 @@
+/*
+  TOWLOWER: int towlower (wint_t wc);
+*/
+
+#define TST_FUNCTION towlower
+
+#include "tsp_common.c"
+#include "dat_towlower.c"
+
+
+TST_FUNC_TOW (LOWER, lower);

+ 10 - 0
test/locale-mbwc/tst_towupper.c

@@ -0,0 +1,10 @@
+/*
+  TOWUPPER: int towupper (wint_t wc);
+*/
+
+#define TST_FUNCTION towupper
+
+#include "tsp_common.c"
+#include "dat_towupper.c"
+
+TST_FUNC_TOW (UPPER, upper);

+ 729 - 0
test/locale-mbwc/tst_types.h

@@ -0,0 +1,729 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ *	 FILE:	tst_types.h
+ *
+ *	 Definitions of data types for each test function
+ */
+
+
+#ifndef TST_TYPES_H
+#define TST_TYPES_H
+
+#include <stdio.h>
+#include <wchar.h>
+#include <wctype.h>
+#include "tst_funcs.h"
+#include "tgn_funcdef.h"
+
+#define MBSSIZE		   24
+#define WCSSIZE		   12
+#define MONFMTSIZE	   16
+#define MONSIZE		   64
+#define USE_MBCURMAX	   99	/* well, but ... */
+#define TST_DBL_EPS	   2.22153e-16
+#define WCSTOK_SEQNUM	   3
+#define MBLEN_SEQNUM	   3
+#define MBTOWC_SEQNUM	   3
+#define MBSTOWCS_SEQNUM	   3
+#define WCTOMB_SEQNUM	   3
+#define WCSTOMBS_SEQNUM	   3
+#define MBRLEN_SEQNUM	   3
+#define MBRTOWC_SEQNUM	   3
+#define MBSRTOWCS_SEQNUM   3
+#define WCRTOMB_SEQNUM	   3
+#define WCSRTOMBS_SEQNUM   3
+
+/* Maximum numbers of test in one of the _loc arrays.  */
+#define MAX_LOC_TEST		300
+
+
+/*----------------------------------------------------------------------*/
+/*  FUNCTION								*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  char *func_str;
+  int func_id;
+}
+TST_FID;
+
+typedef struct
+{
+  int func_id;
+  const char *locale;
+}
+TST_HEAD;
+
+typedef struct
+{
+  TST_HEAD *head;
+}
+TST_FUNCS;
+
+
+/*----------------------------------------------------------------------*/
+/*  ISW*: int isw* (wchar_t wc)						*/
+/*----------------------------------------------------------------------*/
+
+TST_ISW_STRUCT (ALNUM, alnum);
+TST_ISW_STRUCT (ALPHA, alpha);
+TST_ISW_STRUCT (CNTRL, cntrl);
+TST_ISW_STRUCT (DIGIT, digit);
+TST_ISW_STRUCT (GRAPH, graph);
+TST_ISW_STRUCT (LOWER, lower);
+TST_ISW_STRUCT (PRINT, print);
+TST_ISW_STRUCT (PUNCT, punct);
+TST_ISW_STRUCT (SPACE, space);
+TST_ISW_STRUCT (UPPER, upper);
+TST_ISW_STRUCT (XDIGIT, xdigit);
+
+typedef struct
+{
+  wint_t wc;
+  const char *ts;
+}
+TIN_ISWCTYPE_REC;
+
+typedef
+TEX_ERRET_REC (int)
+  TEX_ISWCTYPE_REC;
+TMD_RECHEAD (ISWCTYPE);
+
+
+/*----------------------------------------------------------------------*/
+/*  MBLEN: int mblen (const char *s, size_t n)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  char s_flg;
+  char s[MBSSIZE];
+  size_t n;
+}
+TIN_MBLEN_REC;
+
+typedef TEX_ERRET_REC (int) TEX_MBLEN_REC;
+TMD_RECHEAD (MBLEN);
+
+
+/*----------------------------------------------------------------------*/
+/*  MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps)	*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  struct
+  {
+    int s_flg;
+    char s[MBSSIZE];
+    size_t n;
+    int t_flg;
+    int t_init;
+  }
+  seq[WCSTOK_SEQNUM];
+}
+TIN_MBRLEN_REC;
+
+typedef TEX_ERRET_REC_SEQ (size_t, MBRLEN_SEQNUM) TEX_MBRLEN_REC;
+TMD_RECHEAD (MBRLEN);
+
+
+/*----------------------------------------------------------------------*/
+/*  MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n,	*/
+/*			     mbstate_t *ps)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    int s_flg;
+    char s[MBSSIZE];
+    size_t n;
+    int t_flg;
+    int t_init;
+  }
+  seq[MBRTOWC_SEQNUM];
+}
+TIN_MBRTOWC_REC;
+
+typedef struct
+{
+  struct
+  {
+    TMD_ERRET (size_t);
+    wchar_t wc;
+  }
+  seq[MBRTOWC_SEQNUM];
+}
+TEX_MBRTOWC_REC;
+
+TMD_RECHEAD (MBRTOWC);
+
+
+/*----------------------------------------------------------------------*/
+/*  MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, */
+/*				 mbstate_t *ps )			*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    char s[MBSSIZE];
+    size_t n;
+    int t_flg;
+    int t_init;
+  }
+  seq[MBSRTOWCS_SEQNUM];
+}
+TIN_MBSRTOWCS_REC;
+
+typedef struct
+{
+  struct
+  {
+    TMD_ERRET (size_t);
+    wchar_t ws[WCSSIZE];
+  }
+  seq[MBSRTOWCS_SEQNUM];
+}
+TEX_MBSRTOWCS_REC;
+
+TMD_RECHEAD (MBSRTOWCS);
+
+
+/*----------------------------------------------------------------------*/
+/*  MBSTOWCS: size_t mbstowcs (wchar_t *ws, const char *s, size_t n)	*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    int s_flg;
+    const char *s;
+    size_t n;
+  }
+  seq[MBSTOWCS_SEQNUM];
+}
+TIN_MBSTOWCS_REC;
+
+typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC;
+/* MBSRTOWCS_SEQNUM == MBSTOWCS_SEQNUM */
+TMD_RECHEAD (MBSTOWCS);
+
+
+/*----------------------------------------------------------------------*/
+/*  MBTOWC: int mbtowc (wchar_t *wc, const char *s, size_t n)		*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC;
+/* MBTOWC_SEQNUM == MBSTOWCS_SEQNUM */
+
+typedef struct
+{
+  struct
+  {
+    TMD_ERRET (int);
+    wchar_t wc;
+  }
+  seq[MBTOWC_SEQNUM];
+}
+TEX_MBTOWC_REC;
+
+TMD_RECHEAD (MBTOWC);
+
+
+/*----------------------------------------------------------------------*/
+/*  STRCOLL: int strcoll (const char *s1, const char *s2)		*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  char s1[MBSSIZE];
+  char s2[MBSSIZE];
+}
+TIN_STRCOLL_REC;
+
+typedef TEX_ERRET_REC (int) TEX_STRCOLL_REC;
+TMD_RECHEAD (STRCOLL);
+
+
+/*----------------------------------------------------------------------*/
+/*  STRFMON: size_t strfmon (char *buf, size_t nbytes,			*/
+/*			     const char *fmt, ... )			*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  int nbytes;
+  char fmt[MONFMTSIZE];
+  double val;
+}
+TIN_STRFMON_REC;
+
+typedef struct
+{
+  TMD_ERRET (size_t);
+  char mon[MONSIZE];
+}
+TEX_STRFMON_REC;
+
+TMD_RECHEAD (STRFMON);
+
+
+/*----------------------------------------------------------------------*/
+/*  STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n)	*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  char org1[MBSSIZE];
+  char org2[MBSSIZE];
+  size_t n1, n2;
+}
+TIN_STRXFRM_REC;
+
+typedef TEX_ERRET_REC (size_t) TEX_STRXFRM_REC;	/* only for org2[] */
+TMD_RECHEAD (STRXFRM);
+
+
+/*----------------------------------------------------------------------*/
+/*  SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...)	*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t ws[WCSSIZE * 3];
+  wchar_t fmt[WCSSIZE * 3];
+  int wch;
+}
+TIN_SWSCANF_REC;
+
+typedef struct
+{
+  TMD_ERRET (int);
+  int val_int;		/* %d */
+  unsigned val_uns;	/* %u */
+  float val_flt;		/* %f */
+  int val_c;		/* %c */
+  char val_s[MBSSIZE * 2];	/* %s */
+  wchar_t val_S[WCSSIZE * 2];	/* %lc, %ls, %C, %S */
+}
+TEX_SWSCANF_REC;
+
+TMD_RECHEAD (SWSCANF);
+
+
+/*----------------------------------------------------------------------*/
+/*  TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc)		*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC;
+typedef TEX_ERRET_REC (wint_t) TEX_TOWCTRANS_REC;
+TMD_RECHEAD (TOWCTRANS);
+
+
+/*----------------------------------------------------------------------*/
+/*  TOW*ER: wint_t tow*er (wint_t wc)					*/
+/*----------------------------------------------------------------------*/
+
+TST_TOW_STRUCT (LOWER, lower);
+TST_TOW_STRUCT (UPPER, upper);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps)	*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  int s_flg;
+  wchar_t wc;
+  int t_flg;
+  int t_init;
+}
+TIN_WCRTOMB_REC;
+
+typedef struct
+{
+  TMD_ERRET (wchar_t);
+  char s[MBSSIZE];
+}
+TEX_WCRTOMB_REC;
+
+TMD_RECHEAD (WCRTOMB);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2)		*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t ws1[WCSSIZE];
+  wchar_t ws2[WCSSIZE];
+}
+TIN_WCSCAT_REC;
+
+typedef struct
+{
+  TMD_ERRET (wchar_t *);
+  wchar_t ws[WCSSIZE];
+}
+TEX_WCSCAT_REC;
+
+TMD_RECHEAD (WCSCAT);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc);			*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t ws[WCSSIZE];
+  wchar_t wc;
+}
+TIN_WCSCHR_REC;
+
+typedef TEX_ERRET_REC (wchar_t *) TEX_WCSCHR_REC;
+TMD_RECHEAD (WCSCHR);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2)		*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCAT_REC TIN_WCSCMP_REC;
+typedef TEX_ERRET_REC (int) TEX_WCSCMP_REC;
+TMD_RECHEAD (WCSCMP);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2)	*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC;
+typedef struct
+{
+  TMD_ERRET (int);
+  int cmp_flg;
+}
+TEX_WCSCOLL_REC;
+TMD_RECHEAD (WCSCOLL);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2)		*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t ws[WCSSIZE];	/* ws2: original string */
+}
+TIN_WCSCPY_REC;
+
+typedef TEX_WCSCAT_REC TEX_WCSCPY_REC;
+TMD_RECHEAD (WCSCPY);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2)	*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC;
+typedef TEX_ERRET_REC (size_t) TEX_WCSCSPN_REC;
+TMD_RECHEAD (WCSCSPN);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSLEN: size_t wcslen (const wchar_t *ws)				*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCPY_REC TIN_WCSLEN_REC;
+typedef TEX_ERRET_REC (size_t) TEX_WCSLEN_REC;
+TMD_RECHEAD (WCSLEN);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2,	*/
+/*			       size_t n)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t ws1[WCSSIZE];
+  wchar_t ws2[WCSSIZE];
+  size_t n;
+}
+TIN_WCSNCAT_REC;
+
+typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC;
+TMD_RECHEAD (WCSNCAT);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSNCMP: int *wcsncmp (const wchar_t *ws1, const wchar_t *ws2,	*/
+/*			   size_t n)					*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC;
+typedef TEX_ERRET_REC (int) TEX_WCSNCMP_REC;
+TMD_RECHEAD (WCSNCMP);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2,	*/
+/*			       size_t n)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t ws[WCSSIZE];	/* ws2: original string */
+  size_t n;
+}
+TIN_WCSNCPY_REC;
+
+typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC;
+TMD_RECHEAD (WCSNCPY);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2)	*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC;
+
+typedef struct
+{
+  TMD_ERRET (wchar_t *);
+  wchar_t wc;
+}
+TEX_WCSPBRK_REC;
+
+TMD_RECHEAD (WCSPBRK);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, */
+/*				 mbstate_t *ps)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  int s_flg;
+  int w_flg;		/* don't need this */
+  wchar_t ws[WCSSIZE];
+  size_t n;
+  int t_flg;
+  int t_init;
+}
+TIN_WCSRTOMBS_REC;
+
+typedef struct
+{
+  TMD_ERRET (size_t);
+  char s[MBSSIZE];
+}
+TEX_WCSRTOMBS_REC;
+
+TMD_RECHEAD (WCSRTOMBS);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2)	*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC;
+typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC;
+TMD_RECHEAD (WCSSPN);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2)	*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC;
+typedef TEX_ERRET_REC (wchar_t *) TEX_WCSSTR_REC;
+TMD_RECHEAD (WCSSTR);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp)		*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t np[WCSSIZE];
+}
+TIN_WCSTOD_REC;
+
+typedef struct
+{
+  TMD_ERRET (double);
+  double val;
+  wchar_t fwc;
+}
+TEX_WCSTOD_REC;
+
+TMD_RECHEAD (WCSTOD);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm,		*/
+/*			     wchar_t **pt)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  struct
+  {
+    int w_flg;
+    wchar_t ws[WCSSIZE];
+    wchar_t dt[WCSSIZE];	/* delimiter */
+  }
+  seq[WCSTOK_SEQNUM];
+}
+TIN_WCSTOK_REC;
+
+typedef struct
+{
+  struct
+  {
+    TMD_ERRET (wchar_t *);
+    wchar_t ws[WCSSIZE];
+  }
+  seq[WCSTOK_SEQNUM];
+}
+TEX_WCSTOK_REC;
+
+TMD_RECHEAD (WCSTOK);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSTOMBS: size_t wcstombs (char s, const wchar_t *ws, size_t n)	*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  int s_flg;
+  int w_flg;		/* currently we don't need it. */
+  wchar_t ws[WCSSIZE];
+  size_t n;
+}
+TIN_WCSTOMBS_REC;
+
+typedef struct
+{
+  TMD_ERRET (size_t);
+  char s[MBSSIZE];
+}
+TEX_WCSTOMBS_REC;
+
+TMD_RECHEAD (WCSTOMBS);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n)		*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC;
+typedef TEX_ERRET_REC (int) TEX_WCSWIDTH_REC;
+TMD_RECHEAD (WCSWIDTH);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n)*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t org1[WCSSIZE];
+  wchar_t org2[WCSSIZE];
+  int n1, n2;
+}
+TIN_WCSXFRM_REC;
+
+typedef TEX_ERRET_REC (size_t) TEX_WCSXFRM_REC;	/* only for org2[] */
+TMD_RECHEAD (WCSXFRM);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCTOB: int wctob (wint_t wc)					*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wint_t wc;
+}
+TIN_WCTOB_REC;
+
+typedef TEX_ERRET_REC (int) TEX_WCTOB_REC;
+TMD_RECHEAD (WCTOB);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCTOMB: int wctomb (char *s, wchar_t wc)				*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  int s_flg;
+  wchar_t wc;
+}
+TIN_WCTOMB_REC;
+
+typedef struct
+{
+  TMD_ERRET (int);
+  char s[MBSSIZE];
+}
+TEX_WCTOMB_REC;
+
+TMD_RECHEAD (WCTOMB);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCTRANS: wctrans_t wctrans (const char *charclass)			*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  char class[MBSSIZE];
+}
+TIN_WCTRANS_REC;
+
+typedef TEX_ERRET_REC (wctrans_t) TEX_WCTRANS_REC;
+TMD_RECHEAD (WCTRANS);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCTYPE: wctype_t wctype (const char *class)				*/
+/*----------------------------------------------------------------------*/
+
+typedef TIN_WCTRANS_REC TIN_WCTYPE_REC;
+typedef TEX_ERRET_REC (wctype_t) TEX_WCTYPE_REC;
+TMD_RECHEAD (WCTYPE);
+
+
+/*----------------------------------------------------------------------*/
+/*  WCWIDTH: int wcwidth (wchar_t wc)					*/
+/*----------------------------------------------------------------------*/
+
+typedef struct
+{
+  wchar_t wc;
+}
+TIN_WCWIDTH_REC;
+
+typedef TEX_ERRET_REC (int) TEX_WCWIDTH_REC;
+TMD_RECHEAD (WCWIDTH);
+
+#endif /* TST_TYPES_H */

+ 79 - 0
test/locale-mbwc/tst_wcrtomb.c

@@ -0,0 +1,79 @@
+/*
+  WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
+*/
+
+#define TST_FUNCTION wcrtomb
+
+#include "tsp_common.c"
+#include "dat_wcrtomb.c"
+
+
+int
+tst_wcrtomb (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t);
+  wchar_t wc;
+  char s[MBSSIZE], *s_in, *s_ex;
+  char t_flg, t_ini;
+  static mbstate_t t = { 0 };
+  mbstate_t *pt;
+  int err, i;
+
+  TST_DO_TEST (wcrtomb)
+  {
+    TST_HEAD_LOCALE (wcrtomb, S_WCRTOMB);
+    TST_DO_REC (wcrtomb)
+    {
+      TST_GET_ERRET (wcrtomb);
+      s_in = ((TST_INPUT (wcrtomb).s_flg) == 0) ? (char *) NULL : s;
+      wc = TST_INPUT (wcrtomb).wc;
+      t_flg = TST_INPUT (wcrtomb).t_flg;
+      t_ini = TST_INPUT (wcrtomb).t_init;
+      pt = (t_flg == 0) ? NULL : &t;
+
+      if (t_ini != 0)
+	{
+	  memset (&t, 0, sizeof (t));
+	}
+
+      TST_CLEAR_ERRNO;
+      ret = wcrtomb (s_in, wc, pt);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{
+	  fprintf (stdout, "wcrtomb() [ %s : %d ] ret = %lu\n", locale,
+		   rec + 1, (unsigned long int) ret);
+	  fprintf (stdout, "			errno = %d\n", errno_save);
+	}
+
+      TST_IF_RETURN (S_WCRTOMB)
+      {
+      };
+
+      s_ex = TST_EXPECT (wcrtomb).s;
+
+      if (s_in)
+	{
+	  for (i = 0, err = 0; *(s_ex + i) != 0 && i < MBSSIZE; i++)
+	    {
+	      if (s_in[i] != s_ex[i])
+		{
+		  err++;
+		  err_count++;
+		  Result (C_FAILURE, S_WCRTOMB, CASE_4,
+			  "copied string is different from an "
+			  "expected string");
+		  break;
+		}
+	    }
+	  if (!err)
+	    {
+	      Result (C_SUCCESS, S_WCRTOMB, CASE_4, MS_PASSED);
+	    }
+	}
+    }
+  }
+
+  return err_count;
+}

+ 78 - 0
test/locale-mbwc/tst_wcscat.c

@@ -0,0 +1,78 @@
+/*
+  WCSCAT: wchar_t *wcscat (wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcscat
+
+#include "tsp_common.c"
+#include "dat_wcscat.c"
+
+int
+tst_wcscat (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t *ws1, *ws2, *ws_ex;
+  int i, err;
+
+  TST_DO_TEST (wcscat)
+  {
+    TST_HEAD_LOCALE (wcscat, S_WCSCAT);
+    TST_DO_REC (wcscat)
+    {
+      TST_GET_ERRET (wcscat);
+      ws1 = TST_INPUT (wcscat).ws1;	/* external value: size WCSSIZE */
+      ws2 = TST_INPUT (wcscat).ws2;
+
+      TST_CLEAR_ERRNO;
+      ret = wcscat (ws1, ws2);
+      TST_SAVE_ERRNO;
+
+      TST_IF_RETURN (S_WCSCAT)
+      {
+	if (ret == ws1)
+	  {
+	    Result (C_SUCCESS, S_WCSCAT, CASE_3, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_WCSCAT, CASE_3,
+		    "the return address may not be correct");
+	  }
+      }
+
+      /* function specific test cases here */
+
+      if (ret == ws1)
+	{
+	  ws_ex = TST_EXPECT (wcscat).ws;
+	  for (err = 0, i = 0;
+	       (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++)
+	    {
+	      if (debug_flg)
+		{
+		  fprintf (stdout, "tst_wcscat() : ws1[%d] = 0x%lx\n", i,
+			   (unsigned long int) ws1[i]);
+		}
+
+	      if (ws1[i] != ws_ex[i])
+		{
+		  err++;
+		  err_count++;
+		  Result (C_FAILURE, S_WCSCAT, CASE_4,
+			  "concatinated string is different from an "
+			  "expected string");
+		  break;
+		}
+	    }
+
+	  if (!err)
+	    {
+	      Result (C_SUCCESS, S_WCSCAT, CASE_4, MS_PASSED);
+	    }
+	}
+    }
+  }
+
+  return err_count;
+}

+ 70 - 0
test/locale-mbwc/tst_wcschr.c

@@ -0,0 +1,70 @@
+/*
+  WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc);
+*/
+
+#define TST_FUNCTION wcschr
+
+#include "tsp_common.c"
+#include "dat_wcschr.c"
+
+int
+tst_wcschr (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t *ws, wc;
+
+  TST_DO_TEST (wcschr)
+  {
+    TST_HEAD_LOCALE (wcschr, S_WCSCHR);
+    TST_DO_REC (wcschr)
+    {
+      TST_GET_ERRET (wcschr);
+      ws = TST_INPUT (wcschr).ws;	/* external value: size WCSSIZE */
+      wc = TST_INPUT (wcschr).wc;
+      ret = wcschr (ws, wc);
+
+      if (debug_flg)
+	{
+	  if (ret)
+	    {
+	      fprintf (stderr, "wcschr: ret = 0x%lx\n",
+		       (unsigned long int) *ret);
+	    }
+	  else
+	    {
+	      fprintf (stderr, "wcschr: ret = NULL pointer\n");
+	    }
+	}
+
+      TST_IF_RETURN (S_WCSCHR)
+      {
+	if (ret == NULL)
+	  {
+	    if (debug_flg)
+	      {
+		fprintf (stderr, "*** Warning *** tst_wcschr: "
+			 "set ret_flg=1 to check NULL return value\n");
+	      }
+
+	    warn_count++;
+	    Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data) "
+		    "set ret_flg=1 to check NULL return value");
+	    continue;
+	  }
+
+	if (*ret == wc)
+	  {
+	    Result (C_SUCCESS, S_WCSCHR, CASE_3, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_WCSCHR, CASE_3,
+		    "the returned address of the string seems to be wrong");
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 40 - 0
test/locale-mbwc/tst_wcscmp.c

@@ -0,0 +1,40 @@
+/*
+  WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcscmp
+
+#include "tsp_common.c"
+#include "dat_wcscmp.c"
+
+
+int
+tst_wcscmp (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  wchar_t *ws1, *ws2;
+
+  TST_DO_TEST (wcscmp)
+  {
+    TST_HEAD_LOCALE (wcscmp, S_WCSCMP);
+    TST_DO_REC (wcscmp)
+    {
+      TST_GET_ERRET (wcscmp);
+      ws1 = TST_INPUT (wcscmp).ws1;
+      ws2 = TST_INPUT (wcscmp).ws2;
+      ret = wcscmp (ws1, ws2);
+      ret = (ret > 0 ? 1 : ret < 0 ? -1 : 0);
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "tst_wcscmp: ret = %d\n", ret);
+	}
+
+      TST_IF_RETURN (S_WCSCMP)
+      {
+      };
+    }
+  }
+
+  return err_count;
+}

+ 76 - 0
test/locale-mbwc/tst_wcscoll.c

@@ -0,0 +1,76 @@
+/*
+  WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcscoll
+
+#include "tsp_common.c"
+#include "dat_wcscoll.c"
+
+int
+tst_wcscoll (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  wchar_t *ws1, *ws2;
+  int cmp;
+
+  TST_DO_TEST (wcscoll)
+  {
+    TST_HEAD_LOCALE (wcscoll, S_WCSCOLL);
+    TST_DO_REC (wcscoll)
+    {
+      TST_GET_ERRET (wcscoll);
+      ws1 = TST_INPUT (wcscoll).ws1;	/* external value: size WCSSIZE */
+      ws2 = TST_INPUT (wcscoll).ws2;
+
+      TST_CLEAR_ERRNO;
+      ret = wcscoll (ws1, ws2);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "tst_wcscoll: ret = %d\n", ret);
+	}
+
+      cmp = TST_EXPECT (wcscoll).cmp_flg;
+      TST_IF_RETURN (S_WCSCOLL)
+      {
+	if (cmp != 0)
+	  {
+	    if ((cmp == 1 && ret > 0) || (cmp == -1 && ret < 0))
+	      {
+		Result (C_SUCCESS, S_WCSCOLL, CASE_3, MS_PASSED);
+	      }
+	    else
+	      {
+		err_count++;
+		if (cmp == 1)
+		  {
+		    if (ret == 0)
+		      Result (C_FAILURE, S_WCSCOLL, CASE_3,
+			      "the return value should be positive"
+			      " but it's zero.");
+		    else
+		      Result (C_FAILURE, S_WCSCOLL, CASE_3,
+			      "the return value should be positive"
+			      " but it's negative.");
+		  }
+		else
+		  {
+		    if (ret == 0)
+		      Result (C_FAILURE, S_WCSCOLL, CASE_3,
+			      "the return value should be negative"
+			      " but it's zero.");
+		    else
+		      Result (C_FAILURE, S_WCSCOLL, CASE_3,
+			      "the return value should be negative"
+			      " but it's positive.");
+		  }
+	      }
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 85 - 0
test/locale-mbwc/tst_wcscpy.c

@@ -0,0 +1,85 @@
+/*-------------------------------------------------------------------------------------*/
+/* WCSCPY: wchar_t *wcscpy( wchar_t *ws1, const wchar_t *ws2 )			       */
+/*-------------------------------------------------------------------------------------*/
+#define TST_FUNCTION wcscpy
+
+#include "tsp_common.c"
+#include "dat_wcscpy.c"
+
+int
+tst_wcscpy (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t ws1[WCSSIZE], *ws2, *ws_ex;
+  int err, i;
+
+  TST_DO_TEST (wcscpy)
+  {
+    TST_HEAD_LOCALE (wcscpy, S_WCSCPY);
+    TST_DO_REC (wcscpy)
+    {
+      TST_GET_ERRET (wcscpy);
+      ws2 = TST_INPUT (wcscpy).ws;	/* external value: size WCSSIZE */
+      ret = wcscpy (ws1, ws2);
+
+      TST_IF_RETURN (S_WCSCPY)
+      {
+	if (ret == ws1)
+	  {
+	    Result (C_SUCCESS, S_WCSCPY, CASE_3, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_WCSCPY, CASE_3,
+		    "the return address may not be correct");
+	  }
+      }
+
+      if (ret == ws1)
+	{
+	  ws_ex = TST_EXPECT (wcscpy).ws;
+
+	  for (err = 0, i = 0;
+	       (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++)
+	    {
+	      if (debug_flg)
+		{
+		  fprintf (stderr,
+			   "ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n", i,
+			   (unsigned long int) ws1[i], i,
+			   (unsigned long int) ws_ex[i]);
+		}
+
+	      if (ws1[i] != ws_ex[i])
+		{
+		  err++;
+		  err_count++;
+		  Result (C_FAILURE, S_WCSCPY, CASE_4,
+			  "copied string is different from an"
+			  " expected string");
+		  break;
+		}
+	    }
+
+	  if (!err)
+	    {
+	      Result (C_SUCCESS, S_WCSCPY, CASE_4, MS_PASSED);
+	    }
+
+	  if (ws1[i] == 0L)
+	    {
+	      Result (C_SUCCESS, S_WCSCPY, CASE_5, MS_PASSED);
+	    }
+	  else
+	    {
+	      err_count++;
+	      Result (C_FAILURE, S_WCSCPY, CASE_5,
+		      "copied string is not null-terminated");
+	    }
+	}
+    }
+  }
+
+  return err_count;
+}

+ 38 - 0
test/locale-mbwc/tst_wcscspn.c

@@ -0,0 +1,38 @@
+/*
+  WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcscspn
+
+#include "tsp_common.c"
+#include "dat_wcscspn.c"
+
+int
+tst_wcscspn (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  wchar_t *ws1, *ws2;
+
+  TST_DO_TEST (wcscspn)
+  {
+    TST_HEAD_LOCALE (wcscspn, S_WCSCSPN);
+    TST_DO_REC (wcscspn)
+    {
+      TST_GET_ERRET (wcscspn);
+      ws1 = TST_INPUT (wcscspn).ws1;
+      ws2 = TST_INPUT (wcscspn).ws2;	/* external value: size WCSSIZE */
+      ret = wcscspn (ws1, ws2);
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "wcscspn: ret = %zu\n", ret);
+	}
+
+      TST_IF_RETURN (S_WCSCSPN)
+      {
+      };
+    }
+  }
+
+  return err_count;
+}

+ 31 - 0
test/locale-mbwc/tst_wcslen.c

@@ -0,0 +1,31 @@
+/*
+  WCSLEN: size_t wcslen (const wchar_t *ws);
+*/
+
+#define TST_FUNCTION wcslen
+
+#include "tsp_common.c"
+#include "dat_wcslen.c"
+
+int
+tst_wcslen (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  wchar_t *ws;
+
+  TST_DO_TEST (wcslen)
+  {
+    TST_HEAD_LOCALE (wcslen, S_WCSLEN);
+    TST_DO_REC (wcslen)
+    {
+      TST_GET_ERRET (wcslen);
+      ws = TST_INPUT (wcslen).ws;
+      ret = wcslen (ws);
+      TST_IF_RETURN (S_WCSLEN)
+      {
+      };
+    }
+  }
+
+  return err_count;
+}

+ 75 - 0
test/locale-mbwc/tst_wcsncat.c

@@ -0,0 +1,75 @@
+/*
+  WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, size_t n);
+*/
+
+#define TST_FUNCTION wcsncat
+
+#include "tsp_common.c"
+#include "dat_wcsncat.c"
+
+int
+tst_wcsncat (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t *ws1, *ws2, *ws_ex;
+  int n, i, err;
+
+  TST_DO_TEST (wcsncat)
+  {
+    TST_HEAD_LOCALE (wcsncat, S_WCSNCAT);
+    TST_DO_REC (wcsncat)
+    {
+      TST_GET_ERRET (wcsncat);
+      ws1 = TST_INPUT (wcsncat).ws1;	/* external value: size WCSSIZE */
+      ws2 = TST_INPUT (wcsncat).ws2;
+      n = TST_INPUT (wcsncat).n;
+      ret = wcsncat (ws1, ws2, n);
+
+      TST_IF_RETURN (S_WCSNCAT)
+      {
+	if (ret == ws1)
+	  {
+	    Result (C_SUCCESS, S_WCSNCAT, CASE_3, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_WCSNCAT, CASE_3,
+		    "the return address may not be correct");
+	  }
+      }
+
+      if (ret == ws1)
+	{
+	  ws_ex = TST_EXPECT (wcsncat).ws;
+
+	  for (err = 0, i = 0;
+	       (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++)
+	    {
+	      if (debug_flg)
+		{
+		  fprintf (stderr, "ws1[%d] = 0x%lx\n", i,
+			   (unsigned long int) ws1[i]);
+		}
+
+	      if (ws1[i] != ws_ex[i])
+		{
+		  err++;
+		  err_count++;
+		  Result (C_FAILURE, S_WCSNCAT, CASE_4,
+			  "the concatinated string has "
+			  "different value from an expected string");
+		  break;
+		}
+	    }
+
+	  if (!err)
+	    {
+	      Result (C_SUCCESS, S_WCSNCAT, CASE_4, MS_PASSED);
+	    }
+	}
+    }
+  }
+
+  return err_count;
+}

+ 40 - 0
test/locale-mbwc/tst_wcsncmp.c

@@ -0,0 +1,40 @@
+/*-------------------------------------------------------------------------------------*/
+/* WCSNCMP: int wcsncmp( const wchar_t *ws1, const wchar_t *ws2, size_t n )	       */
+/*-------------------------------------------------------------------------------------*/
+
+#define TST_FUNCTION wcsncmp
+
+#include "tsp_common.c"
+#include "dat_wcsncmp.c"
+
+int
+tst_wcsncmp (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (int);
+  wchar_t *ws1, *ws2;
+  size_t n;
+
+  TST_DO_TEST (wcsncmp)
+  {
+    TST_HEAD_LOCALE (wcsncmp, S_WCSNCMP);
+    TST_DO_REC (wcsncmp)
+    {
+      TST_GET_ERRET (wcsncmp);
+      ws1 = TST_INPUT (wcsncmp).ws1;	/* external value: size WCSSIZE */
+      ws2 = TST_INPUT (wcsncmp).ws2;
+      n = TST_INPUT (wcsncmp).n;
+      ret = wcsncmp (ws1, ws2, n);
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "tst_wcsncmp: ret = %d, 0x%x\n", ret, ret);
+	}
+
+      TST_IF_RETURN (S_WCSNCMP)
+      {
+      };
+    }
+  }
+
+  return err_count;
+}

+ 93 - 0
test/locale-mbwc/tst_wcsncpy.c

@@ -0,0 +1,93 @@
+/*
+  WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, size_t n);
+*/
+
+#define TST_FUNCTION wcsncpy
+
+#include "tsp_common.c"
+#include "dat_wcsncpy.c"
+
+#define WCSNUM_NCPY 7
+
+int
+tst_wcsncpy (FILE *fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t ws1[WCSSIZE] =
+    { 0x9999, 0x9999, 0x9999, 0x9999, 0x9999, 0x9999, 0x0000 };
+  wchar_t *ws2, *ws_ex;
+  int err, i;
+  size_t n;
+
+  TST_DO_TEST (wcsncpy)
+  {
+    TST_HEAD_LOCALE (wcsncpy, S_WCSNCPY);
+    TST_DO_REC (wcsncpy)
+    {
+      TST_GET_ERRET (wcsncpy);
+
+      for (n = 0; n < WCSNUM_NCPY - 1; ++n)
+	{
+	  ws1[n] = 0x9999;
+	}
+
+      ws1[n] = 0;
+      ws2 = TST_INPUT (wcsncpy).ws;	/* external value: size WCSSIZE */
+      n = TST_INPUT (wcsncpy).n;
+      ret = wcsncpy (ws1, ws2, n);
+
+      TST_IF_RETURN (S_WCSNCPY)
+      {
+	if (ret == ws1)
+	  {
+	    Result (C_SUCCESS, S_WCSNCPY, CASE_3, MS_PASSED);
+	  }
+	else
+	  {
+	    err_count++;
+	    Result (C_FAILURE, S_WCSNCPY, CASE_3,
+		    "the return address may not be correct");
+	  }
+      }
+
+      if (ret == ws1)
+	{
+	  if (debug_flg)
+	    {
+	      fprintf (stderr, "\nwcsncpy: n = %zu\n\n", n);
+	    }
+
+	  ws_ex = TST_EXPECT (wcsncpy).ws;
+
+	  for (err = 0, i = 0; i < WCSNUM_NCPY && i < WCSSIZE; i++)
+	    {
+	      if (debug_flg)
+		fprintf (stderr,
+			 "wcsncpy: ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n",
+			 i, (unsigned long int) ws1[i], i,
+			 (unsigned long int) ws_ex[i]);
+
+	      if (ws1[i] != ws_ex[i])
+		{
+		  err++;
+		  err_count++;
+		  Result (C_FAILURE, S_WCSNCPY, CASE_4,
+			  "copied string is different from an "
+			  "expected string");
+		  break;
+		}
+	    }
+
+	  if (!err)
+	    {
+	      Result (C_SUCCESS, S_WCSNCPY, CASE_4, MS_PASSED);
+	    }
+
+	  /* A null terminate character is not supposed to be copied
+	     unless (num chars of ws2)<n. */
+	}
+    }
+  }
+
+  return err_count;
+}

+ 80 - 0
test/locale-mbwc/tst_wcspbrk.c

@@ -0,0 +1,80 @@
+/*
+  WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcspbrk
+
+#include "tsp_common.c"
+#include "dat_wcspbrk.c"
+
+int
+tst_wcspbrk (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t *ws1, *ws2;
+  int err;
+  wchar_t wc_ex;
+
+  TST_DO_TEST (wcspbrk)
+  {
+    TST_HEAD_LOCALE (wcspbrk, S_WCSPBRK);
+    TST_DO_REC (wcspbrk)
+    {
+      TST_GET_ERRET (wcspbrk);
+      ws1 = TST_INPUT (wcspbrk).ws1;
+      ws2 = TST_INPUT (wcspbrk).ws2;
+
+      ret = wcspbrk (ws1, ws2);
+
+      if (debug_flg)
+	{
+	  fprintf (stdout, "wcspbrk() [ %s : %d ] ret = %s\n", locale,
+		   rec + 1, (ret == NULL) ? "null" : "not null");
+	  if (ret)
+	    fprintf (stderr,
+		     "			      ret[0] = 0x%lx : 0x%lx = ws2[0]\n",
+		     (unsigned long int) ret[0], (unsigned long int) ws2[0]);
+	}
+
+      TST_IF_RETURN (S_WCSPBRK)
+      {
+	if (ws2[0] == 0)
+	  {
+	    if (ret == ws1)
+	      {
+		Result (C_SUCCESS, S_WCSPBRK, CASE_3, MS_PASSED);
+	      }
+	    else
+	      {
+		err_count++;
+		Result (C_FAILURE, S_WCSPBRK, CASE_3,
+			"return address is not same address as ws1");
+	      }
+
+	    continue;
+	  }
+
+	wc_ex = TST_EXPECT (wcspbrk).wc;
+
+	if (debug_flg)
+	  fprintf (stdout,
+		   "			    *ret = 0x%lx <-> 0x%lx = wc_ex\n",
+		   (unsigned long int) *ret, (unsigned long int) wc_ex);
+
+	if (*ret != wc_ex)
+	  {
+	    err++;
+	    err_count++;
+	    Result (C_FAILURE, S_WCSPBRK, CASE_4, "the pointed wc is "
+		    "different from an expected wc");
+	  }
+	else
+	  {
+	    Result (C_SUCCESS, S_WCSPBRK, CASE_4, MS_PASSED);
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

+ 127 - 0
test/locale-mbwc/tst_wcsrtombs.c

@@ -0,0 +1,127 @@
+/*
+  WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n,
+			       mbstate_t *ps)
+*/
+
+#define TST_FUNCTION wcsrtombs
+
+#include "tsp_common.c"
+#include "dat_wcsrtombs.c"
+
+#define MARK_VAL 0x01
+
+int
+tst_wcsrtombs (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char s_flg, n;
+  const wchar_t *ws, *wp;
+  char s[MBSSIZE], *s_in;
+  char t_flg, t_ini;
+  static mbstate_t t = { 0 };
+  mbstate_t *pt;
+  int err, i;
+  char *s_ex;
+
+  TST_DO_TEST (wcsrtombs)
+  {
+    TST_HEAD_LOCALE (wcsrtombs, S_WCSRTOMBS);
+    TST_DO_REC (wcsrtombs)
+    {
+      TST_GET_ERRET (wcsrtombs);
+      memset (s, MARK_VAL, MBSSIZE);
+
+      s_flg = TST_INPUT (wcsrtombs).s_flg;
+      s_in = (s_flg == 1) ? s : (char *) NULL;
+      wp = ws = TST_INPUT (wcsrtombs).ws;
+      n = TST_INPUT (wcsrtombs).n;
+      t_flg = TST_INPUT (wcsrtombs).t_flg;
+      t_ini = TST_INPUT (wcsrtombs).t_init;
+      pt = (t_flg == 0) ? NULL : &t;
+
+      if (t_ini != 0)
+	{
+	  memset (&t, 0, sizeof (t));
+	}
+
+      TST_CLEAR_ERRNO;
+      ret = wcsrtombs (s_in, &wp, n, pt);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "wcsrtombs: ret	= %zu\n", ret);
+	}
+
+      TST_IF_RETURN (S_WCSRTOMBS)
+      {
+      };
+
+      if (s_in != NULL && ret != (size_t) - 1)
+	{
+	  /* No definition for s, when error occurs.  */
+	  s_ex = TST_EXPECT (wcsrtombs).s;
+
+	  for (err = 0, i = 0; i <= ret && i < MBSSIZE; i++)
+	    {
+	      if (debug_flg)
+		{
+		  fprintf (stderr,
+			   "	: s[%d] = 0x%hx <-> 0x%hx = s_ex[%d]\n", i,
+			   s[i], s_ex[i], i);
+		}
+
+	      if (i == ret && ret == n)	/* no null termination */
+		{
+		  if (s[i] == MARK_VAL)
+		    {
+		      Result (C_SUCCESS, S_WCSRTOMBS, CASE_4, MS_PASSED);
+		    }
+		  else
+		    {
+		      err_count++;
+		      Result (C_FAILURE, S_WCSRTOMBS, CASE_4,
+			      "should not be null terminated "
+			      "(it may be a null char), but it is");
+		    }
+
+		  break;
+		}
+
+	      if (i == ret && ret < n)	/* null termination */
+		{
+		  if (s[i] == 0)
+		    {
+		      Result (C_SUCCESS, S_WCSRTOMBS, CASE_5, MS_PASSED);
+		    }
+		  else
+		    {
+		      err_count++;
+		      Result (C_FAILURE, S_WCSRTOMBS, CASE_5,
+			      "should be null terminated, but it is not");
+		    }
+
+		  break;
+		}
+
+	      if (s[i] != s_ex[i])
+		{
+		  err++;
+		  err_count++;
+		  Result (C_FAILURE, S_WCSRTOMBS, CASE_6,
+			  "converted string is different from an"
+			  " expected string");
+		  break;
+		}
+	    }
+
+	  if (!err)
+	    {
+	      Result (C_SUCCESS, S_WCSRTOMBS, CASE_6, MS_PASSED);
+	    }
+	}
+    }
+  }
+
+  return err_count;
+}

+ 38 - 0
test/locale-mbwc/tst_wcsspn.c

@@ -0,0 +1,38 @@
+/*
+  WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcsspn
+
+#include "tsp_common.c"
+#include "dat_wcsspn.c"
+
+int
+tst_wcsspn (FILE *fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  wchar_t *ws1, *ws2;
+
+  TST_DO_TEST (wcsspn)
+  {
+    TST_HEAD_LOCALE (wcsspn, S_WCSSPN);
+    TST_DO_REC (wcsspn)
+    {
+      TST_GET_ERRET (wcsspn);
+      ws1 = TST_INPUT (wcsspn).ws1;
+      ws2 = TST_INPUT (wcsspn).ws2;	/* external value: size WCSSIZE */
+      ret = wcsspn (ws1, ws2);
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "wcsspn: ret = %zu\n", ret);
+	}
+
+      TST_IF_RETURN (S_WCSSPN)
+      {
+      };
+    }
+  }
+
+  return err_count;
+}

+ 86 - 0
test/locale-mbwc/tst_wcsstr.c

@@ -0,0 +1,86 @@
+/*
+  WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2);
+*/
+
+#define TST_FUNCTION wcsstr
+
+#include "tsp_common.c"
+#include "dat_wcsstr.c"
+
+int
+tst_wcsstr (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (wchar_t *);
+  wchar_t *ws1, *ws2;
+  int err, i;
+
+  TST_DO_TEST (wcsstr)
+  {
+    TST_HEAD_LOCALE (wcsstr, S_WCSSTR);
+    TST_DO_REC (wcsstr)
+    {
+      TST_GET_ERRET (wcsstr);
+      ws1 = TST_INPUT (wcsstr).ws1;
+      ws2 = TST_INPUT (wcsstr).ws2;	/* external value: size WCSSIZE */
+      ret = wcsstr (ws1, ws2);
+
+      if (debug_flg)
+	{
+	  fprintf (stderr, "wcsstr: %d : ret = %s\n", rec + 1,
+		   (ret == NULL) ? "null" : "not null");
+	  if (ret)
+	    {
+	      fprintf (stderr,
+		       "	ret[ 0 ] = 0x%lx <-> 0x%lx = ws2[ 0 ]\n",
+		       (unsigned long int) ret[0], (unsigned long int) ws2[0]);
+	    }
+	}
+
+      TST_IF_RETURN (S_WCSSTR)
+      {
+	if (ws2[0] == 0)
+	  {
+	    if (ret == ws1)
+	      {
+		Result (C_SUCCESS, S_WCSSTR, CASE_3, MS_PASSED);
+	      }
+	    else
+	      {
+		err_count++;
+		Result (C_FAILURE, S_WCSSTR, CASE_3,
+			"return address is not same address as ws1");
+	      }
+
+	    continue;
+	  }
+
+	for (i = 0, err = 0; *(ws2 + i) != 0 && i < WCSSIZE; i++)
+	  {
+	    if (debug_flg)
+	      {
+		fprintf (stderr,
+			 "	: ret[ %d ] = 0x%lx <-> 0x%lx = ws2[ %d ]\n",
+			 i, (unsigned long int) ret[i],
+			 (unsigned long int) ws2[i], i);
+	      }
+
+	    if (ret[i] != ws2[i])
+	      {
+		err++;
+		err_count++;
+		Result (C_FAILURE, S_WCSSTR, CASE_4, "pointed sub-string is "
+			"different from an expected sub-string");
+		break;
+	      }
+	  }
+
+	if (!err)
+	  {
+	    Result (C_SUCCESS, S_WCSSTR, CASE_4, MS_PASSED);
+	  }
+      }
+    }
+  }
+
+  return err_count;
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов