Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 919515 Details for
Bug 1121419
systemd-logind.service entered failed state - has no holdoff time - i686 - only broken by specific glibc build - 2.19.90-29.fc22.i686 - resolved by local build
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
glibc broke logind - no holdoff time
glibc-broke-logind-no-holdoff-time.diff (text/plain), 151.24 KB, created by
poma
on 2014-07-21 02:42:06 UTC
(
hide
)
Description:
glibc broke logind - no holdoff time
Filename:
MIME Type:
Creator:
poma
Created:
2014-07-21 02:42:06 UTC
Size:
151.24 KB
patch
obsolete
>diff -ur glibc-2.19-776-gf4c4021/ChangeLog glibc-2.19-815-gf2fef65/ChangeLog >--- glibc-2.19-776-gf4c4021/ChangeLog 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/ChangeLog 2014-07-14 16:58:27.000000000 +0200 >@@ -1,3 +1,316 @@ >+2014-07-14 H.J. Lu <hongjiu.lu@intel.com> >+ >+ * config.h.in (HAVE_AVX2_SUPPORT): New #undef. >+ * sysdeps/i386/configure.ac: Set HAVE_AVX2_SUPPORT and >+ config-cflags-avx2. >+ * sysdeps/x86_64/configure.ac: Likewise. >+ * sysdeps/i386/configure: Regenerated. >+ * sysdeps/x86_64/configure: Likewise. >+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add >+ memset-avx2 only if config-cflags-avx2 is yes. >+ * sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): >+ Tests for memset_chk and memset only if HAVE_AVX2_SUPPORT is >+ defined. >+ * sysdeps/x86_64/multiarch/memset.S: Define multiple versions >+ only if HAVE_AVX2_SUPPORT is defined. >+ * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. >+ >+2014-07-14 Alan Modra <amodra@gmail.com> >+ >+ [BZ #17153] >+ * elf/elf.h (DT_PPC64_NUM): Correct value. >+ * NEWS: Add to fixed bug list. >+ >+2014-07-13 Jim Meyering <meyering@fb.com> >+ >+ [BZ 17150] >+ regex: don't deref NULL upon heap allocation failure >+ * posix/regcomp.c: (parse_dup_op): Handle duplicate_tree >+ failure in one more place. >+ To trigger the segfault, configure grep -with-included-regex, >+ build it, and run these commands: >+ ( ulimit -v 300000; echo a|src/grep -E a+++++++++++++++++++++ ) >+ >+2014-07-13 Andreas Schwab <schwab@linux-m68k.org> >+ >+ * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Update. >+ >+2014-07-11 Richard Henderson <rth@redhat.com> >+ >+ * sysdeps/aarch64/libm-test-ulps: Update. >+ >+2014-07-10 Florian Weimer <fweimer@redhat.com> >+ >+ [BZ #17135] >+ * nptl/pthreadP.h (__nptl_setxid_error): Declare function. >+ * nptl/allocatestack.c (__nptl_setxid_error): New function. >+ (__nptl_setxid): Initialize error member. Call >+ __nptl_setxid_error. >+ * nptl/nptl-init.c (sighandler_setxid): Call __nptl_setxid_error. >+ * nptl/descr.h (struct xid_command): Add error member. >+ * nptl/tst-setuid3.c: New file. >+ * nptl/Makefile (tests): Add it. >+ >+2014-07-10 Adhemerval Zanella <azanella@linux.vnet.ibm.com> >+ >+ * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_base_trylock): >+ New define. >+ (__lll_trylock): Use __lll_base_trylock. >+ (__lll_cond_trylock): Likewise. >+ >+2014-07-10 Roland McGrath <roland@hack.frob.com> >+ >+ * nptl/pthread_create.c (start_thread): Use atomic_or and >+ lll_futex_wake directly rather than lll_robust_dead. >+ * sysdeps/unix/sysv/linux/aarch64/lowlevellock.h >+ (lll_robust_dead): Macro removed. >+ * sysdeps/unix/sysv/linux/aarch64/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/arm/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/m68k/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/mips/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/tile/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. >+ >+ * nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock): >+ Use atomic_compare_and_exchange_val_acq directly rather than >+ lll_robust_trylock. >+ * sysdeps/unix/sysv/linux/aarch64/lowlevellock.h >+ (__lll_robust_trylock, lll_robust_trylock): Removed. >+ * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/arm/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/m68k/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/mips/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/tile/lowlevellock.h: Likewise. >+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. >+ >+2014-07-02 Florian Weimer <fweimer@redhat.com> >+ >+ * manual/locale.texi (Locale Names): New section documenting >+ locale name syntax. Adjust menu and node chaining accordingly. >+ (Choosing Locale): Reference Locale Names, Locale Categories. >+ Mention setting LC_ALL=C. Reflect that name syntax is now >+ documented. >+ (Locale Categories): New section title. Reference Locale Names. >+ LC_ALL is an environment variable, but not a category. >+ (Setting the Locale): Remove "locale -a" invocation and LOCPATH >+ description, now in Locale Name. Reference that section. Locale >+ name syntax is now documented. >+ >+2014-07-02 Florian Weimer <fweimer@redhat.com> >+ >+ [BZ #17137] >+ * locale/findlocale.c (name_present, valid_locale_name): New >+ functions. >+ (_nl_find_locale): Use the loc_name variable to store name >+ candidates. Call name_present and valid_locale_name to check and >+ validate locale names. Return an error if the locale is invalid. >+ >+2014-07-02 Florian Weimer <fweimer@redhat.com> >+ >+ * locale/setlocale.c (setlocale): Use strdup for allocating >+ composite name copy. >+ >+2014-07-10 Siddhesh Poyarekar <siddhesh@redhat.com> >+ >+ Sync up with gnulib. >+ * misc/error.c: Use !_LIBC instead of HAVE_CONFIG_H. >+ [!_LIBC && ENABLE_NLS]: Include gettext.h. >+ [_LIBC]: Define USE_UNLOCKED_IO, _GL_ATTRIBUTE_FORMAT_PRINTF >+ and _GL_ARG_NONNULL. >+ [USE_UNLOCKED_IO]: Include unlocked-io.h. >+ [!_LIBC]: Include code for Windows and Cygwin. >+ [!_LIBC && !HAVE_DECL_STRERROR_R && !STRERROR_R_CHAR_P]: >+ Include prototype for int strerror_r. >+ [!_LIBC] (is_open): New function. >+ (flush_stdout): New function. >+ (print_errno_message): Use it. >+ (error): Likewise. >+ (error_at_line): Likewise. >+ (error_tail) Add function attribute macros. Use >+ __builtin_expect. >+ >+ * time/strptime_l.c [_LIBC]: Define HAVE_LOCALTIME_R. >+ >+ * time/strftime_l.c [_LIBC]: Define HAVE_STRFTIME. >+ >+ * io/ftw.c: Include sys/param.h unconditionally. >+ >+ * locale/programs/simple-hash.c [!HAVE_OBSTACK]: Remove code. >+ >+ [BZ #17125] >+ * sysdeps/unix/sysv/linux/check_pf.c (cache): Don't use >+ libc_freeres_ptr. >+ (freecache): New function to free CACHE on exit. >+ >+ * sunrpc/xdr.c (xdr_string): Add comment about SIZE >+ initialization. >+ >+2014-07-09 David S. Miller <davem@davemloft.net> >+ >+ * sysdeps/sparc/fpu/libm-test-ulps: Update. >+ >+ * sysdeps/sparc/nptl/internaltypes.h: Delete. >+ * sysdeps/sparc/nptl/sparc-nptl.h: New file. >+ * sysdeps/sparc/nptl/pthread_barrier_destroy.c: Include it. >+ * sysdeps/sparc/nptl/pthread_barrier_init.c: Likewise. >+ * sysdeps/sparc/nptl/pthread_barrier_wait.c: Likewise. >+ * sysdeps/sparc/nptl/sem_init.c: Likewise. >+ * sysdeps/sparc/nptl/sem_post.c: Likewise. >+ * sysdeps/sparc/nptl/sem_timedwait.c: Likewise. >+ * sysdeps/sparc/nptl/sem_wait.c: Likewise. >+ * sysdeps/sparc/sparc32/nptl/pthread_barrier_wait.c: Likewise. >+ * sysdeps/sparc/sparc32/nptl/sem_post.c: Likewise. >+ * sysdeps/sparc/sparc32/nptl/sem_timedwait.c: Likewise. >+ * sysdeps/sparc/sparc32/nptl/sem_wait.c: Likewise. >+ >+2014-07-09 Andreas Schwab <schwab@suse.de> >+ >+ * sysdeps/powerpc/test-gettimebase.c (do_test): Add newline to >+ output. >+ * sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c >+ (do_test): Likewise. >+ >+ * sysdeps/i386/fpu/libm-test-ulps: Update ULPs. >+ >+2014-07-09 Will Newton <will.newton@linaro.org> >+ >+ * sysdeps/aarch64/tlsdesc.c (_dl_unmap): Test SHARED with #ifdef. >+ * sysdeps/arm/tlsdesc.c (_dl_unmap): Likewise. >+ * sysdeps/i386/tlsdesc.c (_dl_unmap): Likewise. >+ * sysdeps/x86_64/tlsdesc.c (_dl_unmap): Likewise. >+ * sysdeps/hppa/start.S (_start): Likewise. >+ >+2014-07-09 Siddhesh Poyarekar <siddhesh@redhat.com> >+ >+ * sunrpc/xdr.c (xdr_string): Initialize SIZE to 0. >+ >+ * sysdeps/generic/unwind-pe.h: Only check if __cplusplus is >+ defined. >+ >+2014-07-08 Siddhesh Poyarekar <siddhesh@redhat.com> >+ >+ * resolv/res_query.c (__libc_res_nsearch): Dereference resplen2 >+ after checking that it is non-NULL. >+ >+ * sysdeps/i386/dl-machine.h: Define ELF_MACHINE_NO_REL. >+ >+2014-07-08 Adhemerval Zanella <azanella@linux.vnet.ibm.com> >+ >+ * sysdeps/powerpc/memmove.c: Remove file. >+ * sysdeps/powerpc/powerpc32/power4/memcopy.h >+ [MEMCPY_OK_FOR_FWD_MEMMOVE]: Define it to 1. >+ * sysdeps/powerpc/powerpc32/power4/multiarch/memmove-power7.c >+ [MEMCPY_OK_FOR_FWD_MEMMOVE]: Remove define. >+ * sysdeps/powerpc/powerpc32/power4/multiarch/memmove-ppc.c: >+ [MEMCPY_OK_FOR_FWD_MEMMOVE]: Likewise. >+ * sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c: Include default >+ string memmove instead of removed powerpc one. >+ >+ * sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S: >+ [weak_alias]: Fix compiler warning due trailing data. >+ * sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S: >+ [weak_alias]: Likewise. >+ * sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c: Fix compile >+ warnigs due missing definition of __strcpy_power7 and __strlen_power7. >+ >+ * sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c >+ (__libc_ifunc_impl_list): Add memmove functions. >+ >+2014-07-08 Siddhesh Poyarekar <siddhesh@redhat.com> >+ >+ * localedata/tests-mbwc/dat_iswalnum.c [SHOJI_IS_RIGHT]: >+ Remove code. >+ * localedata/tests-mbwc/dat_iswalpha.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_iswctype.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_iswgraph.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_iswprint.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_iswpunct.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_mbrlen.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_mbstowcs.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_mbtowc.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_strcoll.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_swscanf.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_towctrans.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_wcscoll.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_wcswidth.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_wctob.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/dat_wcwidth.c [SHOJI_IS_RIGHT]: >+ Likewise >+ * localedata/tests-mbwc/tst_towctrans.c [SHOJI_IS_RIGHT]: >+ Likewise >+ >+2014-07-07 Adhemerval Zanella <azanella@linux.vnet.ibm.com> >+ >+ * sysdeps/powerpc/powerpc64/power7/memcpy.S: Align VSX copies to 16B >+ to avoid alignment traps in non-cacheable memory. >+ * sysdeps/powerpc/powerpc32/power7/memcpy.S: Likewise. >+ >+ * sysdeps/powerpc/powerpc32/power4/multiarch/Makefile: Add memmove >+ multiarch objects. >+ * sysdeps/powerpc/powerpc32/power4/multiarch/memmove-power7.c: New >+ file: multiarch power7 memmove. >+ * sysdeps/powerpc/powerpc32/power4/multiarch/memmove-ppc.c: New file: >+ multiarch default memmove. >+ * sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c: New file: >+ multiarch memove for powerpc32/power4. >+ >+ * string/bcopy.c: Use full path to include memmove.c. >+ * sysdeps/powerpc/powerpc64/multiarch/Makefile: Add memmove and bcopy >+ multiarch objects. >+ * sysdeps/powerpc/powerpc64/multiarch/bcopy-ppc64.c: New file: default >+ bcopy for powerpc64. >+ * sysdeps/powerpc/powerpc64/multiarch/bcopy.c: New file: multiarch >+ bcopy for powerpc64. >+ * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c: Add bcopy >+ and memmove implementations. >+ * sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S: New file: >+ optimized multiarch memmove for POWER7/powerpc64. >+ * sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c: New file: >+ default multiarch memmove for powerpc64. >+ * sysdeps/powerpc/powerpc64/multiarch/memmove.c: New file: memmove >+ multiarch for powerpc64. >+ * sysdeps/powerpc/powerpc64/power7/bcopy.c: New file: optimized bcopy >+ for POWER7/powerpc64. >+ * sysdeps/powerpc/powerpc64/power7/memmove.S: New file: optimized >+ memmove for POWER7/powerpc64. >+ >+ * sysdeps/powerpc/memmove.c (memmove): Cleanup impplementation to use >+ glibc default one. >+ >+ * sysdeps/powerpc/bits/link.h [_CALL_ELF]: Guard check for >+ __ELF_NATIVE_CLASS equal to 64. >+ > 2014-07-07 Roland McGrath <roland@hack.frob.com> > > * sysdeps/nptl/lowlevellock.h: File removed. >diff -ur glibc-2.19-776-gf4c4021/config.h.in glibc-2.19-815-gf2fef65/config.h.in >--- glibc-2.19-776-gf4c4021/config.h.in 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/config.h.in 2014-07-14 16:58:27.000000000 +0200 >@@ -103,6 +103,9 @@ > /* Define if gcc supports FMA4. */ > #undef HAVE_FMA4_SUPPORT > >+/* Define if gcc supports AVX2. */ >+#undef HAVE_AVX2_SUPPORT >+ > /* Define if the compiler\'s exception support is based on libunwind. */ > #undef HAVE_CC_WITH_LIBUNWIND > >diff -ur glibc-2.19-776-gf4c4021/elf/elf.h glibc-2.19-815-gf2fef65/elf/elf.h >--- glibc-2.19-776-gf4c4021/elf/elf.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/elf/elf.h 2014-07-14 16:58:27.000000000 +0200 >@@ -2283,7 +2283,7 @@ > #define DT_PPC64_OPD (DT_LOPROC + 1) > #define DT_PPC64_OPDSZ (DT_LOPROC + 2) > #define DT_PPC64_OPT (DT_LOPROC + 3) >-#define DT_PPC64_NUM 3 >+#define DT_PPC64_NUM 4 > > /* PowerPC64 specific values for the DT_PPC64_OPT Dyn entry. */ > #define PPC64_OPT_TLS 1 >diff -ur glibc-2.19-776-gf4c4021/io/ftw.c glibc-2.19-815-gf2fef65/io/ftw.c >--- glibc-2.19-776-gf4c4021/io/ftw.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/io/ftw.c 2014-07-14 16:58:27.000000000 +0200 >@@ -66,9 +66,7 @@ > #include <string.h> > #include <unistd.h> > #include <not-cancel.h> >-#if HAVE_SYS_PARAM_H || defined _LIBC >-# include <sys/param.h> >-#endif >+#include <sys/param.h> > #ifdef _LIBC > # include <include/sys/stat.h> > #else >diff -ur glibc-2.19-776-gf4c4021/locale/findlocale.c glibc-2.19-815-gf2fef65/locale/findlocale.c >--- glibc-2.19-776-gf4c4021/locale/findlocale.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/locale/findlocale.c 2014-07-14 16:58:27.000000000 +0200 >@@ -17,6 +17,7 @@ > <http://www.gnu.org/licenses/>. */ > > #include <assert.h> >+#include <errno.h> > #include <locale.h> > #include <stdlib.h> > #include <string.h> >@@ -57,6 +58,45 @@ > > const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR; > >+/* Checks if the name is actually present, that is, not NULL and not >+ empty. */ >+static inline int >+name_present (const char *name) >+{ >+ return name != NULL && name[0] != '\0'; >+} >+ >+/* Checks that the locale name neither extremely long, nor contains a >+ ".." path component (to prevent directory traversal). */ >+static inline int >+valid_locale_name (const char *name) >+{ >+ /* Not set. */ >+ size_t namelen = strlen (name); >+ /* Name too long. The limit is arbitrary and prevents stack overflow >+ issues later. */ >+ if (__glibc_unlikely (namelen > 255)) >+ return 0; >+ /* Directory traversal attempt. */ >+ static const char slashdot[4] = {'/', '.', '.', '/'}; >+ if (__glibc_unlikely (memmem (name, namelen, >+ slashdot, sizeof (slashdot)) != NULL)) >+ return 0; >+ if (namelen == 2 && __glibc_unlikely (name[0] == '.' && name [1] == '.')) >+ return 0; >+ if (namelen >= 3 >+ && __glibc_unlikely (((name[0] == '.' >+ && name[1] == '.' >+ && name[2] == '/') >+ || (name[namelen - 3] == '/' >+ && name[namelen - 2] == '.' >+ && name[namelen - 1] == '.')))) >+ return 0; >+ /* If there is a slash in the name, it must start with one. */ >+ if (__glibc_unlikely (memchr (name, '/', namelen) != NULL) && name[0] != '/') >+ return 0; >+ return 1; >+} > > struct __locale_data * > internal_function >@@ -65,7 +105,7 @@ > { > int mask; > /* Name of the locale for this category. */ >- char *loc_name; >+ char *loc_name = (char *) *name; > const char *language; > const char *modifier; > const char *territory; >@@ -73,31 +113,39 @@ > const char *normalized_codeset; > struct loaded_l10nfile *locale_file; > >- if ((*name)[0] == '\0') >+ if (loc_name[0] == '\0') > { > /* The user decides which locale to use by setting environment > variables. */ >- *name = getenv ("LC_ALL"); >- if (*name == NULL || (*name)[0] == '\0') >- *name = getenv (_nl_category_names.str >+ loc_name = getenv ("LC_ALL"); >+ if (!name_present (loc_name)) >+ loc_name = getenv (_nl_category_names.str > + _nl_category_name_idxs[category]); >- if (*name == NULL || (*name)[0] == '\0') >- *name = getenv ("LANG"); >+ if (!name_present (loc_name)) >+ loc_name = getenv ("LANG"); >+ if (!name_present (loc_name)) >+ loc_name = (char *) _nl_C_name; > } > >- if (*name == NULL || (*name)[0] == '\0' >- || (__builtin_expect (__libc_enable_secure, 0) >- && strchr (*name, '/') != NULL)) >- *name = (char *) _nl_C_name; >+ /* We used to fall back to the C locale if the name contains a slash >+ character '/', but we now check for directory traversal in >+ valid_locale_name, so this is no longer necessary. */ > >- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0 >- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0) >+ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0 >+ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0) > { > /* We need not load anything. The needed data is contained in > the library itself. */ > *name = (char *) _nl_C_name; > return _nl_C[category]; > } >+ else if (!valid_locale_name (loc_name)) >+ { >+ __set_errno (EINVAL); >+ return NULL; >+ } >+ >+ *name = loc_name; > > /* We really have to load some data. First we try the archive, > but only if there was no LOCPATH environment variable specified. */ >diff -ur glibc-2.19-776-gf4c4021/locale/programs/simple-hash.c glibc-2.19-815-gf2fef65/locale/programs/simple-hash.c >--- glibc-2.19-776-gf4c4021/locale/programs/simple-hash.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/locale/programs/simple-hash.c 2014-07-14 16:58:27.000000000 +0200 >@@ -27,11 +27,7 @@ > #include <stdint.h> > #include <sys/types.h> > >-#if HAVE_OBSTACK >-# include <obstack.h> >-#else >-# include "obstack.h" >-#endif >+#include <obstack.h> > > #ifdef HAVE_VALUES_H > # include <values.h> >diff -ur glibc-2.19-776-gf4c4021/locale/setlocale.c glibc-2.19-815-gf2fef65/locale/setlocale.c >--- glibc-2.19-776-gf4c4021/locale/setlocale.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/locale/setlocale.c 2014-07-14 16:58:27.000000000 +0200 >@@ -272,6 +272,8 @@ > of entries of the form `CATEGORY=VALUE'. */ > const char *newnames[__LC_LAST]; > struct __locale_data *newdata[__LC_LAST]; >+ /* Copy of the locale argument, for in-place splitting. */ >+ char *locale_copy = NULL; > > /* Set all name pointers to the argument name. */ > for (category = 0; category < __LC_LAST; ++category) >@@ -281,7 +283,13 @@ > if (__glibc_unlikely (strchr (locale, ';') != NULL)) > { > /* This is a composite name. Make a copy and split it up. */ >- char *np = strdupa (locale); >+ locale_copy = strdup (locale); >+ if (__glibc_unlikely (locale_copy == NULL)) >+ { >+ __libc_rwlock_unlock (__libc_setlocale_lock); >+ return NULL; >+ } >+ char *np = locale_copy; > char *cp; > int cnt; > >@@ -299,6 +307,7 @@ > { > error_return: > __libc_rwlock_unlock (__libc_setlocale_lock); >+ free (locale_copy); > > /* Bogus category name. */ > ERROR_RETURN; >@@ -391,8 +400,9 @@ > /* Critical section left. */ > __libc_rwlock_unlock (__libc_setlocale_lock); > >- /* Free the resources (the locale path variable). */ >+ /* Free the resources. */ > free (locale_path); >+ free (locale_copy); > > return composite; > } >diff -ur glibc-2.19-776-gf4c4021/localedata/ChangeLog glibc-2.19-815-gf2fef65/localedata/ChangeLog >--- glibc-2.19-776-gf4c4021/localedata/ChangeLog 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/ChangeLog 2014-07-14 16:58:27.000000000 +0200 >@@ -1,3 +1,8 @@ >+2014-07-02 Florian Weimer <fweimer@redhat.com> >+ >+ * tst-setlocale3.c: New file. >+ * Makefile (tests): Add tst-setlocale3. >+ > 2014-06-20 Stefan Liebler <stli@linux.vnet.ibm.com> > > * Makefile (LOCALES): Add en_GB.UTF-8. >diff -ur glibc-2.19-776-gf4c4021/localedata/Makefile glibc-2.19-815-gf2fef65/localedata/Makefile >--- glibc-2.19-776-gf4c4021/localedata/Makefile 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/Makefile 2014-07-14 16:58:27.000000000 +0200 >@@ -74,7 +74,8 @@ > tests = $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \ > tst-leaks tst-mbswcs1 tst-mbswcs2 tst-mbswcs3 tst-mbswcs4 tst-mbswcs5 \ > tst-mbswcs6 tst-xlocale1 tst-xlocale2 bug-usesetlocale \ >- tst-strfmon1 tst-sscanf bug-setlocale1 tst-setlocale2 tst-wctype >+ tst-strfmon1 tst-sscanf bug-setlocale1 tst-setlocale2 tst-setlocale3 \ >+ tst-wctype > tests-static = bug-setlocale1-static > tests += $(tests-static) > ifeq (yes,$(build-shared)) >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswalnum.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswalnum.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswalnum.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswalnum.c 2014-07-14 16:58:27.000000000 +0200 >@@ -103,54 +103,23 @@ > { > { { 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 */ >@@ -161,7 +130,6 @@ > { { 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 */ >@@ -172,19 +140,11 @@ > { { 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 */ > } > }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswalpha.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswalpha.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswalpha.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswalpha.c 2014-07-14 16:58:27.000000000 +0200 >@@ -72,54 +72,23 @@ > { > { { 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 */ >@@ -130,14 +99,9 @@ > { { 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. */ >@@ -145,19 +109,11 @@ > { { 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 */ > } > }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswctype.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswctype.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswctype.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswctype.c 2014-07-14 16:58:27.000000000 +0200 >@@ -81,11 +81,7 @@ > { { 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 */ >@@ -101,11 +97,7 @@ > { { 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 */ >@@ -120,11 +112,7 @@ > { { 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 */ >@@ -389,42 +377,22 @@ > { > { Tiswctype, TST_LOC_eucJP }, > { >-#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 */ >@@ -433,83 +401,42 @@ > { { 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 @ */ >@@ -525,82 +452,43 @@ > { { 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. */ >@@ -643,13 +531,8 @@ > { { 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 } > } >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswgraph.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswgraph.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswgraph.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswgraph.c 2014-07-14 16:58:27.000000000 +0200 >@@ -16,11 +16,7 @@ > { > { { 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 */ >@@ -75,73 +71,35 @@ > { TST_ISW_REC( eucJP, graph ) > { > { { 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 @ */ >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswprint.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswprint.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswprint.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswprint.c 2014-07-14 16:58:27.000000000 +0200 >@@ -16,11 +16,7 @@ > { > { { 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 */ >@@ -78,73 +74,35 @@ > { TST_ISW_REC (eucJP, print) > { > { { 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 @ */ >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswpunct.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswpunct.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_iswpunct.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_iswpunct.c 2014-07-14 16:58:27.000000000 +0200 >@@ -16,11 +16,7 @@ > { > { { 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 */ >@@ -75,46 +71,24 @@ > { TST_ISW_REC (eucJP, punct) > { > { { 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 */ >@@ -125,11 +99,7 @@ > { { 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 @ */ >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_mbrlen.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_mbrlen.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_mbrlen.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_mbrlen.c 2014-07-14 16:58:27.000000000 +0200 >@@ -123,13 +123,9 @@ > { > { > { 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, }, > } > } >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_mbstowcs.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_mbstowcs.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_mbstowcs.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_mbstowcs.c 2014-07-14 16:58:27.000000000 +0200 >@@ -107,19 +107,9 @@ > { /*----------------- #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 > } > }, > { >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_mbtowc.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_mbtowc.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_mbtowc.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_mbtowc.c 2014-07-14 16:58:27.000000000 +0200 >@@ -248,12 +248,8 @@ > }, > { > { >-#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 }, > } >@@ -270,11 +266,7 @@ > { > { > { 0, 1, +1, 0x007F }, >-#ifdef SHOJI_IS_RIGHT >- { EILSEQ, 1, -1, 0x0000 }, >-#else > { 0, 1, -1, 0x0000 }, >-#endif > { 0, 1, +1, 0x0081 }, > } > } >@@ -290,12 +282,8 @@ > { > { > { 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 }, > } > } >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_strcoll.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_strcoll.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_strcoll.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_strcoll.c 2014-07-14 16:58:27.000000000 +0200 >@@ -72,22 +72,14 @@ > { > /* <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, }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_swscanf.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_swscanf.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_swscanf.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_swscanf.c 2014-07-14 16:58:27.000000000 +0200 >@@ -61,13 +61,8 @@ > }, > 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 > }, > }, > /*---------------------------------------------------*/ >@@ -155,22 +150,6 @@ > 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. */ > } >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_towctrans.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_towctrans.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_towctrans.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_towctrans.c 2014-07-14 16:58:27.000000000 +0200 >@@ -38,11 +38,7 @@ > { > { 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 } }, >@@ -52,11 +48,7 @@ > { > { 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 } }, >@@ -66,11 +58,7 @@ > { > { 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 } }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wcscoll.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wcscoll.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wcscoll.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wcscoll.c 2014-07-14 16:58:27.000000000 +0200 >@@ -104,18 +104,6 @@ > { 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 */ >@@ -125,7 +113,6 @@ > { 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, }, >@@ -134,16 +121,6 @@ > { 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 */ >@@ -153,7 +130,6 @@ > { 0x0041,0x0092,0x0049,0x0000 }, }, /* #10 */ > /*expect*/ { 0,0,0, 0, }, > }, >-#endif > { .is_last = 1 } > } > }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wcswidth.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wcswidth.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wcswidth.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wcswidth.c 2014-07-14 16:58:27.000000000 +0200 >@@ -56,11 +56,7 @@ > /*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 }, >@@ -89,21 +85,12 @@ > { /*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 }, > }, >@@ -137,21 +124,12 @@ > { /*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 }, > }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wctob.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wctob.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wctob.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wctob.c 2014-07-14 16:58:27.000000000 +0200 >@@ -25,14 +25,9 @@ > { { 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. */ > } >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wcwidth.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wcwidth.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/dat_wcwidth.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/dat_wcwidth.c 2014-07-14 16:58:27.000000000 +0200 >@@ -28,16 +28,9 @@ > { /*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 } > } > }, >@@ -83,17 +76,10 @@ > { /*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, }, >diff -ur glibc-2.19-776-gf4c4021/localedata/tests-mbwc/tst_towctrans.c glibc-2.19-815-gf2fef65/localedata/tests-mbwc/tst_towctrans.c >--- glibc-2.19-776-gf4c4021/localedata/tests-mbwc/tst_towctrans.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/localedata/tests-mbwc/tst_towctrans.c 2014-07-14 16:58:27.000000000 +0200 >@@ -14,9 +14,6 @@ > 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) >@@ -28,25 +25,7 @@ > 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); >Only in glibc-2.19-815-gf2fef65/localedata: tst-setlocale3.c >diff -ur glibc-2.19-776-gf4c4021/manual/locale.texi glibc-2.19-815-gf2fef65/manual/locale.texi >--- glibc-2.19-776-gf4c4021/manual/locale.texi 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/manual/locale.texi 2014-07-14 16:58:27.000000000 +0200 >@@ -29,6 +29,7 @@ > * Setting the Locale:: How a program specifies the locale > with library functions. > * Standard Locales:: Locale names available on all systems. >+* Locale Names:: Format of system-specific locale names. > * Locale Information:: How to access the information for the locale. > * Formatting Numbers:: A dedicated function to format numbers. > * Yes-or-No Questions:: Check a Response against the locale. >@@ -99,14 +100,16 @@ > most of Spain. > > The set of locales supported depends on the operating system you are >-using, and so do their names. We can't make any promises about what >-locales will exist, except for one standard locale called @samp{C} or >-@samp{POSIX}. Later we will describe how to construct locales. >-@comment (@pxref{Building Locale Files}). >+using, and so do their names, except that the standard locale called >+@samp{C} or @samp{POSIX} always exist. @xref{Locale Names}. >+ >+In order to force the system to always use the default locale, the >+user can set the @code{LC_ALL} environment variable to @samp{C}. > > @cindex combining locales >-A user also has the option of specifying different locales for different >-purposes---in effect, choosing a mixture of multiple locales. >+A user also has the option of specifying different locales for >+different purposes---in effect, choosing a mixture of multiple >+locales. @xref{Locale Categories}. > > For example, the user might specify the locale @samp{espana-castellano} > for most purposes, but specify the locale @samp{usa-english} for >@@ -120,7 +123,7 @@ > for a particular subset of those purposes. > > @node Locale Categories, Setting the Locale, Choosing Locale, Locales >-@section Categories of Activities that Locales Affect >+@section Locale Categories > @cindex categories for locales > @cindex locale categories > >@@ -128,7 +131,11 @@ > that a user or a program can choose the locale for each category > independently. Here is a table of categories; each name is both an > environment variable that a user can set, and a macro name that you can >-use as an argument to @code{setlocale}. >+use as the first argument to @code{setlocale}. >+ >+The contents of the environment variable (or the string in the second >+argument to @code{setlocale}) has to be a valid locale name. >+@xref{Locale Names}. > > @vtable @code > @comment locale.h >@@ -172,7 +179,7 @@ > @comment locale.h > @comment ISO > @item LC_ALL >-This is not an environment variable; it is only a macro that you can use >+This is not a category; it is only a macro that you can use > with @code{setlocale} to set a single locale for all purposes. Setting > this environment variable overwrites all selections by the other > @code{LC_*} variables or @code{LANG}. >@@ -355,13 +362,7 @@ > @c strndup @ascuheap @acsmem > @c strcasecmp_l ok (C locale) > The function @code{setlocale} sets the current locale for category >-@var{category} to @var{locale}. A list of all the locales the system >-provides can be created by running >- >-@pindex locale >-@smallexample >- locale -a >-@end smallexample >+@var{category} to @var{locale}. > > If @var{category} is @code{LC_ALL}, this specifies the locale for all > purposes. The other possible values of @var{category} specify an >@@ -386,10 +387,9 @@ > > When you read the current locale for category @code{LC_ALL}, the value > encodes the entire combination of selected locales for all categories. >-In this case, the value is not just a single locale name. In fact, we >-don't make any promises about what it looks like. But if you specify >-the same ``locale name'' with @code{LC_ALL} in a subsequent call to >-@code{setlocale}, it restores the same combination of locale selections. >+If you specify the same ``locale name'' with @code{LC_ALL} in a >+subsequent call to @code{setlocale}, it restores the same combination >+of locale selections. > > To be sure you can use the returned string encoding the currently selected > locale at a later time, you must make a copy of the string. It is not >@@ -405,20 +405,15 @@ > If a nonempty string is given for @var{locale}, then the locale of that > name is used if possible. > >+The effective locale name (either the second argument to >+@code{setlocale}, or if the argument is an empty string, the name >+obtained from the process environment) must be valid locale name. >+@xref{Locale Names}. >+ > If you specify an invalid locale name, @code{setlocale} returns a null > pointer and leaves the current locale unchanged. > @end deftypefun > >-The path used for finding locale data can be set using the >-@code{LOCPATH} environment variable. The default path for finding >-locale data is system specific. It is computed from the value given >-as the prefix while configuring the C library. This value normally is >-@file{/usr} or @file{/}. For the former the complete path is: >- >-@smallexample >-/usr/lib/locale >-@end smallexample >- > Here is an example showing how you might use @code{setlocale} to > temporarily switch to a new locale. > >@@ -458,7 +453,7 @@ > portability, assume that any symbol beginning with @samp{LC_} might be > defined in @file{locale.h}. > >-@node Standard Locales, Locale Information, Setting the Locale, Locales >+@node Standard Locales, Locale Names, Setting the Locale, Locales > @section Standard Locales > > The only locale names you can count on finding on all operating systems >@@ -492,7 +487,94 @@ > locale explicitly by name. Remember, different machines might have > different sets of locales installed. > >-@node Locale Information, Formatting Numbers, Standard Locales, Locales >+@node Locale Names, Locale Information, Standard Locales, Locales >+@section Locale Names >+ >+The following command prints a list of locales supported by the >+system: >+ >+@pindex locale >+@smallexample >+ locale -a >+@end smallexample >+ >+@strong{Portability Note:} With the notable exception of the standard >+locale names @samp{C} and @samp{POSIX}, locale names are >+system-specific. >+ >+Most locale names follow XPG syntax and consist of up to four parts: >+ >+@smallexample >+@var{language}[_@var{territory}[.@var{codeset}]][@@@var{modifier}] >+@end smallexample >+ >+Beside the first part, all of them are allowed to be missing. If the >+full specified locale is not found, less specific ones are looked for. >+The various parts will be stripped off, in the following order: >+ >+@enumerate >+@item >+codeset >+@item >+normalized codeset >+@item >+territory >+@item >+modifier >+@end enumerate >+ >+For example, the locale name @samp{de_AT.iso885915@@euro} denotes a >+German-language locale for use in Austria, using the ISO-8859-15 >+(Latin-9) character set, and with the Euro as the currency symbol. >+ >+In addition to locale names which follow XPG syntax, systems may >+provide aliases such as @samp{german}. Both categories of names must >+not contain the slash character @samp{/}. >+ >+If the locale name starts with a slash @samp{/}, it is treated as a >+path relative to the configured locale directories; see @code{LOCPATH} >+below. The specified path must not contain a component @samp{..}, or >+the name is invalid, and @code{setlocale} will fail. >+ >+@strong{Portability Note:} POSIX suggests that if a locale name starts >+with a slash @samp{/}, it is resolved as an absolute path. However, >+@theglibc{} treats it as a relative path under the directories listed >+in @code{LOCPATH} (or the default locale directory if @code{LOCPATH} >+is unset). >+ >+Locale names which are longer than an implementation-defined limit are >+invalid and cause @code{setlocale} to fail. >+ >+As a special case, locale names used with @code{LC_ALL} can combine >+several locales, reflecting different locale settings for different >+categories. For example, you might want to use a U.S. locale with ISO >+A4 paper format, so you set @code{LANG} to @samp{en_US.UTF-8}, and >+@code{LC_PAPER} to @samp{de_DE.UTF-8}. In this case, the >+@code{LC_ALL}-style combined locale name is >+ >+@smallexample >+LC_CTYPE=en_US.UTF-8;LC_TIME=en_US.UTF-8;LC_PAPER=de_DE.UTF-8;@dots{} >+@end smallexample >+ >+followed by other category settings not shown here. >+ >+@vindex LOCPATH >+The path used for finding locale data can be set using the >+@code{LOCPATH} environment variable. This variable lists the >+directories in which to search for locale definitions, separated by a >+colon @samp{:}. >+ >+The default path for finding locale data is system specific. A typical >+value for the @code{LOCPATH} default is: >+ >+@smallexample >+/usr/share/locale >+@end smallexample >+ >+The value of @code{LOCPATH} is ignored by privileged programs for >+security reasons, and only the default directory is used. >+ >+@node Locale Information, Formatting Numbers, Locale Names, Locales > @section Accessing Locale Information > > There are several ways to access locale information. The simplest >diff -ur glibc-2.19-776-gf4c4021/misc/error.c glibc-2.19-815-gf2fef65/misc/error.c >--- glibc-2.19-776-gf4c4021/misc/error.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/misc/error.c 2014-07-14 16:58:27.000000000 +0200 >@@ -18,24 +18,36 @@ > > /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */ > >-#ifdef HAVE_CONFIG_H >+#if !_LIBC > # include <config.h> > #endif > >+#include "error.h" >+ > #include <stdarg.h> > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > >+#if !_LIBC && ENABLE_NLS >+# include "gettext.h" >+# define _(msgid) gettext (msgid) >+#endif >+ > #ifdef _LIBC > # include <libintl.h> > # include <stdbool.h> > # include <stdint.h> > # include <wchar.h> > # define mbsrtowcs __mbsrtowcs >+# define USE_UNLOCKED_IO 0 >+# define _GL_ATTRIBUTE_FORMAT_PRINTF(a, b) >+# define _GL_ARG_NONNULL(a) > #endif > >-#include "error.h" >+#if USE_UNLOCKED_IO >+# include "unlocked-io.h" >+#endif > > #ifndef _ > # define _(String) String >@@ -46,7 +58,7 @@ > function without parameters instead. */ > void (*error_print_progname) (void); > >-/* This variable is incremented each time `error' is called. */ >+/* This variable is incremented each time 'error' is called. */ > unsigned int error_message_count; > > #ifdef _LIBC >@@ -57,7 +69,7 @@ > # include <limits.h> > # include <libio/libioP.h> > >-/* In GNU libc we want do not want to use the common name `error' directly. >+/* In GNU libc we want do not want to use the common name 'error' directly. > Instead make it a weak alias. */ > extern void __error (int status, int errnum, const char *message, ...) > __attribute__ ((__format__ (__printf__, 3, 4))); >@@ -77,11 +89,29 @@ > > #else /* not _LIBC */ > >-# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P >+# include <fcntl.h> >+# include <unistd.h> >+ >+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ >+/* Get declarations of the native Windows API functions. */ >+# define WIN32_LEAN_AND_MEAN >+# include <windows.h> >+/* Get _get_osfhandle. */ >+# include "msvc-nothrow.h" >+# endif >+ >+/* The gnulib override of fcntl is not needed in this file. */ >+# undef fcntl >+ >+# if !HAVE_DECL_STRERROR_R > # ifndef HAVE_DECL_STRERROR_R > "this configure-time declaration test was not run" > # endif >+# if STRERROR_R_CHAR_P > char *strerror_r (); >+# else >+int strerror_r (); >+# endif > # endif > > /* The calling program should define program_name and set it to the >@@ -93,6 +123,51 @@ > # endif /* HAVE_STRERROR_R || defined strerror_r */ > #endif /* not _LIBC */ > >+#if !_LIBC >+/* Return non-zero if FD is open. */ >+static int >+is_open (int fd) >+{ >+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ >+ /* On native Windows: The initial state of unassigned standard file >+ descriptors is that they are open but point to an INVALID_HANDLE_VALUE. >+ There is no fcntl, and the gnulib replacement fcntl does not support >+ F_GETFL. */ >+ return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; >+# else >+# ifndef F_GETFL >+# error Please port fcntl to your platform >+# endif >+ return 0 <= fcntl (fd, F_GETFL); >+# endif >+} >+#endif >+ >+static void >+flush_stdout (void) >+{ >+#if !_LIBC >+ int stdout_fd; >+ >+# if GNULIB_FREOPEN_SAFER >+ /* Use of gnulib's freopen-safer module normally ensures that >+ fileno (stdout) == 1 >+ whenever stdout is open. */ >+ stdout_fd = STDOUT_FILENO; >+# else >+ /* POSIX states that fileno (stdout) after fclose is unspecified. But in >+ practice it is not a problem, because stdout is statically allocated and >+ the fd of a FILE stream is stored as a field in its allocated memory. */ >+ stdout_fd = fileno (stdout); >+# endif >+ /* POSIX states that fflush (stdout) after fclose is unspecified; it >+ is safe in glibc, but not on all other platforms. fflush (NULL) >+ is always defined, but too draconian. */ >+ if (0 <= stdout_fd && is_open (stdout_fd)) >+#endif >+ fflush (stdout); >+} >+ > static void > print_errno_message (int errnum) > { >@@ -100,7 +175,7 @@ > > #if defined HAVE_STRERROR_R || _LIBC > char errbuf[1024]; >-# if STRERROR_R_CHAR_P || _LIBC >+# if _LIBC || STRERROR_R_CHAR_P > s = __strerror_r (errnum, errbuf, sizeof errbuf); > # else > if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) >@@ -124,7 +199,7 @@ > #endif > } > >-static void >+static void _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3)) > error_tail (int status, int errnum, const char *message, va_list args) > { > #if _LIBC >@@ -165,7 +240,7 @@ > if (res != len) > break; > >- if (__glibc_unlikely (len >= SIZE_MAX / sizeof (wchar_t) / 2)) >+ if (__builtin_expect (len >= SIZE_MAX / sizeof (wchar_t) / 2, 0)) > { > /* This really should not happen if everything is fine. */ > res = (size_t) -1; >@@ -227,7 +302,7 @@ > 0); > #endif > >- fflush (stdout); >+ flush_stdout (); > #ifdef _LIBC > _IO_flockfile (stderr); > #endif >@@ -273,6 +348,7 @@ > || (old_file_name != NULL > && file_name != NULL > && strcmp (old_file_name, file_name) == 0))) >+ > /* Simply return and print nothing. */ > return; > >@@ -288,7 +364,7 @@ > 0); > #endif > >- fflush (stdout); >+ flush_stdout (); > #ifdef _LIBC > _IO_flockfile (stderr); > #endif >diff -ur glibc-2.19-776-gf4c4021/NEWS glibc-2.19-815-gf2fef65/NEWS >--- glibc-2.19-776-gf4c4021/NEWS 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/NEWS 2014-07-14 16:58:27.000000000 +0200 >@@ -21,7 +21,8 @@ > 16882, 16885, 16888, 16890, 16912, 16915, 16916, 16917, 16918, 16922, > 16927, 16928, 16932, 16943, 16958, 16965, 16966, 16967, 16977, 16978, > 16984, 16990, 16996, 17009, 17022, 17031, 17042, 17048, 17050, 17058, >- 17061, 17062, 17069, 17075, 17079, 17084, 17086, 17092, 17097. >+ 17061, 17062, 17069, 17075, 17079, 17084, 17086, 17092, 17097, 17125, >+ 17135, 17137, 17153. > > * Optimized strchr implementation for AArch64. Contributed by ARM Ltd. > >@@ -70,6 +71,15 @@ > On configurations that support it (all Linux configurations), it's now > used regardless of the --enable-add-ons switch to configure. It is no > longer possible to build such configurations without pthreads support. >+ >+* Locale names, including those obtained from environment variables (LANG >+ and the LC_* variables), are more tightly checked for proper syntax. >+ setlocale will now fail (with EINVAL) for locale names that are overly >+ long, contain slashes without starting with a slash, or contain ".." path >+ components. (CVE-2014-0475) Previously, some valid locale names were >+ silently replaced with the "C" locale when running in AT_SECURE mode >+ (e.g., in a SUID program). This is no longer necessary because of the >+ additional checks. > > Version 2.19 > >diff -ur glibc-2.19-776-gf4c4021/nptl/allocatestack.c glibc-2.19-815-gf2fef65/nptl/allocatestack.c >--- glibc-2.19-776-gf4c4021/nptl/allocatestack.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/allocatestack.c 2014-07-14 16:58:27.000000000 +0200 >@@ -1059,6 +1059,25 @@ > return 0; > } > >+/* Check for consistency across set*id system call results. The abort >+ should not happen as long as all privileges changes happen through >+ the glibc wrappers. ERROR must be 0 (no error) or an errno >+ code. */ >+void >+attribute_hidden >+__nptl_setxid_error (struct xid_command *cmdp, int error) >+{ >+ do >+ { >+ int olderror = cmdp->error; >+ if (olderror == error) >+ break; >+ if (olderror != -1) >+ /* Mismatch between current and previous results. */ >+ abort (); >+ } >+ while (atomic_compare_and_exchange_bool_acq (&cmdp->error, error, -1)); >+} > > int > attribute_hidden >@@ -1070,6 +1089,7 @@ > > __xidcmd = cmdp; > cmdp->cntr = 0; >+ cmdp->error = -1; > > struct pthread *self = THREAD_SELF; > >@@ -1153,11 +1173,14 @@ > INTERNAL_SYSCALL_DECL (err); > result = INTERNAL_SYSCALL_NCS (cmdp->syscall_no, err, 3, > cmdp->id[0], cmdp->id[1], cmdp->id[2]); >- if (INTERNAL_SYSCALL_ERROR_P (result, err)) >+ int error = 0; >+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err))) > { >- __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); >+ error = INTERNAL_SYSCALL_ERRNO (result, err); >+ __set_errno (error); > result = -1; > } >+ __nptl_setxid_error (cmdp, error); > > lll_unlock (stack_cache_lock, LLL_PRIVATE); > return result; >diff -ur glibc-2.19-776-gf4c4021/nptl/descr.h glibc-2.19-815-gf2fef65/nptl/descr.h >--- glibc-2.19-776-gf4c4021/nptl/descr.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/descr.h 2014-07-14 16:58:27.000000000 +0200 >@@ -100,6 +100,7 @@ > int syscall_no; > long int id[3]; > volatile int cntr; >+ volatile int error; /* -1: no call yet, 0: success seen, >0: error seen. */ > }; > > >diff -ur glibc-2.19-776-gf4c4021/nptl/Makefile glibc-2.19-815-gf2fef65/nptl/Makefile >--- glibc-2.19-776-gf4c4021/nptl/Makefile 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/Makefile 2014-07-14 16:58:27.000000000 +0200 >@@ -271,6 +271,7 @@ > tst-abstime \ > tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \ > tst-getpid1 tst-getpid2 tst-getpid3 \ >+ tst-setuid3 \ > tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99) > xtests = tst-setuid1 tst-setuid1-static tst-setuid2 \ > tst-mutexpp1 tst-mutexpp6 tst-mutexpp10 >diff -ur glibc-2.19-776-gf4c4021/nptl/nptl-init.c glibc-2.19-815-gf2fef65/nptl/nptl-init.c >--- glibc-2.19-776-gf4c4021/nptl/nptl-init.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/nptl-init.c 2014-07-14 16:58:27.000000000 +0200 >@@ -248,10 +248,10 @@ > INTERNAL_SYSCALL_DECL (err); > result = INTERNAL_SYSCALL_NCS (__xidcmd->syscall_no, err, 3, __xidcmd->id[0], > __xidcmd->id[1], __xidcmd->id[2]); >+ int error = 0; > if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err))) >- /* Safety check. This should never happen if the setxid system >- calls are only ever called through their glibc wrappers. */ >- abort (); >+ error = INTERNAL_SYSCALL_ERRNO (result, err); >+ __nptl_setxid_error (__xidcmd, error); > > /* Reset the SETXID flag. */ > struct pthread *self = THREAD_SELF; >diff -ur glibc-2.19-776-gf4c4021/nptl/pthread_create.c glibc-2.19-815-gf2fef65/nptl/pthread_create.c >--- glibc-2.19-776-gf4c4021/nptl/pthread_create.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/pthread_create.c 2014-07-14 16:58:27.000000000 +0200 >@@ -390,7 +390,8 @@ > # endif > this->__list.__next = NULL; > >- lll_robust_dead (this->__lock, /* XYZ */ LLL_SHARED); >+ atomic_or (&this->__lock, FUTEX_OWNER_DIED); >+ lll_futex_wake (this->__lock, 1, /* XYZ */ LLL_SHARED); > } > while (robust != (void *) &pd->robust_head); > } >diff -ur glibc-2.19-776-gf4c4021/nptl/pthread_mutex_trylock.c glibc-2.19-815-gf2fef65/nptl/pthread_mutex_trylock.c >--- glibc-2.19-776-gf4c4021/nptl/pthread_mutex_trylock.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/pthread_mutex_trylock.c 2014-07-14 16:58:27.000000000 +0200 >@@ -72,7 +72,7 @@ > elision: > if (lll_trylock_elision (mutex->__data.__lock, > mutex->__data.__elision) != 0) >- break; >+ break; > /* Don't record the ownership. */ > return 0; > >@@ -159,7 +159,8 @@ > } > } > >- oldval = lll_robust_trylock (mutex->__data.__lock, id); >+ oldval = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock, >+ id, 0); > if (oldval != 0 && (oldval & FUTEX_OWNER_DIED) == 0) > { > THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL); >diff -ur glibc-2.19-776-gf4c4021/nptl/pthreadP.h glibc-2.19-815-gf2fef65/nptl/pthreadP.h >--- glibc-2.19-776-gf4c4021/nptl/pthreadP.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/nptl/pthreadP.h 2014-07-14 16:58:27.000000000 +0200 >@@ -578,6 +578,8 @@ > > extern void __nptl_deallocate_tsd (void) attribute_hidden; > >+extern void __nptl_setxid_error (struct xid_command *cmdp, int error) >+ attribute_hidden; > extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; > #ifndef SHARED > extern void __nptl_set_robust (struct pthread *self); >Only in glibc-2.19-815-gf2fef65/nptl: tst-setuid3.c >diff -ur glibc-2.19-776-gf4c4021/posix/regcomp.c glibc-2.19-815-gf2fef65/posix/regcomp.c >--- glibc-2.19-776-gf4c4021/posix/regcomp.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/posix/regcomp.c 2014-07-14 16:58:27.000000000 +0200 >@@ -2582,6 +2582,8 @@ > > /* Duplicate ELEM before it is marked optional. */ > elem = duplicate_tree (elem, dfa); >+ if (BE (elem == NULL, 0)) >+ goto parse_dup_op_espace; > old_tree = tree; > } > else >diff -ur glibc-2.19-776-gf4c4021/resolv/res_query.c glibc-2.19-815-gf2fef65/resolv/res_query.c >--- glibc-2.19-776-gf4c4021/resolv/res_query.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/resolv/res_query.c 2014-07-14 16:58:27.000000000 +0200 >@@ -384,7 +384,7 @@ > answerp2_malloced); > if (ret > 0 || trailing_dot > /* If the second response is valid then we use that. */ >- || (ret == 0 && answerp2 != NULL && resplen2 > 0)) >+ || (ret == 0 && resplen2 != NULL && *resplen2 > 0)) > return (ret); > saved_herrno = h_errno; > tried_as_is++; >@@ -424,8 +424,8 @@ > answer, anslen, answerp, > answerp2, nanswerp2, > resplen2, answerp2_malloced); >- if (ret > 0 || (ret == 0 && answerp2 != NULL >- && resplen2 > 0)) >+ if (ret > 0 || (ret == 0 && resplen2 != NULL >+ && *resplen2 > 0)) > return (ret); > > if (answerp && *answerp != answer) { >@@ -494,7 +494,8 @@ > answer, anslen, answerp, > answerp2, nanswerp2, resplen2, > answerp2_malloced); >- if (ret > 0) >+ if (ret > 0 || (ret == 0 && resplen2 != NULL >+ && *resplen2 > 0)) > return (ret); > } > >diff -ur glibc-2.19-776-gf4c4021/string/bcopy.c glibc-2.19-815-gf2fef65/string/bcopy.c >--- glibc-2.19-776-gf4c4021/string/bcopy.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/string/bcopy.c 2014-07-14 16:58:27.000000000 +0200 >@@ -25,4 +25,4 @@ > #define a2 dest > #define a2const > >-#include <memmove.c> >+#include <string/memmove.c> >diff -ur glibc-2.19-776-gf4c4021/sunrpc/xdr.c glibc-2.19-815-gf2fef65/sunrpc/xdr.c >--- glibc-2.19-776-gf4c4021/sunrpc/xdr.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sunrpc/xdr.c 2014-07-14 16:58:27.000000000 +0200 >@@ -739,7 +739,9 @@ > u_int maxsize; > { > char *sp = *cpp; /* sp is the actual string pointer */ >- u_int size; >+ /* Initialize to silence the compiler. It is not really needed because SIZE >+ never actually gets used without being initialized. */ >+ u_int size = 0; > u_int nodesize; > > /* >diff -ur glibc-2.19-776-gf4c4021/sysdeps/aarch64/libm-test-ulps glibc-2.19-815-gf2fef65/sysdeps/aarch64/libm-test-ulps >--- glibc-2.19-776-gf4c4021/sysdeps/aarch64/libm-test-ulps 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/aarch64/libm-test-ulps 2014-07-14 16:58:27.000000000 +0200 >@@ -950,6 +950,54 @@ > ildouble: 1 > ldouble: 1 > >+Function: Real part of "cpow_downward": >+double: 4 >+float: 8 >+idouble: 4 >+ifloat: 8 >+ildouble: 6 >+ldouble: 6 >+ >+Function: Imaginary part of "cpow_downward": >+double: 2 >+float: 2 >+idouble: 2 >+ifloat: 2 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Real part of "cpow_towardzero": >+double: 4 >+float: 8 >+idouble: 4 >+ifloat: 8 >+ildouble: 6 >+ldouble: 6 >+ >+Function: Imaginary part of "cpow_towardzero": >+double: 2 >+float: 2 >+idouble: 2 >+ifloat: 2 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Real part of "cpow_upward": >+double: 4 >+float: 1 >+idouble: 4 >+ifloat: 1 >+ildouble: 3 >+ldouble: 3 >+ >+Function: Imaginary part of "cpow_upward": >+double: 1 >+float: 2 >+idouble: 1 >+ifloat: 2 >+ildouble: 2 >+ldouble: 2 >+ > Function: Real part of "csin": > double: 1 > float: 1 >@@ -1197,8 +1245,8 @@ > float: 3 > idouble: 2 > ifloat: 3 >-ildouble: 3 >-ldouble: 3 >+ildouble: 5 >+ldouble: 5 > > Function: Real part of "ctanh": > double: 2 >@@ -1253,8 +1301,8 @@ > float: 3 > idouble: 2 > ifloat: 3 >-ildouble: 3 >-ldouble: 3 >+ildouble: 5 >+ldouble: 5 > > Function: Imaginary part of "ctanh_upward": > double: 2 >@@ -1326,13 +1374,17 @@ > > Function: "exp10_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > > Function: "exp10_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1620,6 +1672,30 @@ > ildouble: 1 > ldouble: 1 > >+Function: "log2_downward": >+double: 2 >+float: 2 >+idouble: 2 >+ifloat: 2 >+ildouble: 1 >+ldouble: 1 >+ >+Function: "log2_towardzero": >+double: 1 >+float: 1 >+idouble: 1 >+ifloat: 1 >+ildouble: 1 >+ldouble: 1 >+ >+Function: "log2_upward": >+double: 2 >+float: 2 >+idouble: 2 >+ifloat: 2 >+ildouble: 1 >+ldouble: 1 >+ > Function: "log_downward": > float: 1 > ifloat: 1 >@@ -1646,13 +1722,17 @@ > > Function: "pow10_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > > Function: "pow10_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1665,8 +1745,12 @@ > ldouble: 2 > > Function: "pow_downward": >+double: 1 > float: 1 >+idouble: 1 > ifloat: 1 >+ildouble: 1 >+ldouble: 1 > > Function: "pow_tonearest": > float: 1 >@@ -1675,14 +1759,20 @@ > ldouble: 1 > > Function: "pow_towardzero": >+double: 1 > float: 1 >+idouble: 1 > ifloat: 1 >+ildouble: 1 >+ldouble: 1 > > Function: "pow_upward": >+double: 1 > float: 1 >+idouble: 1 > ifloat: 1 >-ildouble: 1 >-ldouble: 1 >+ildouble: 2 >+ldouble: 2 > > Function: "sin": > float: 1 >@@ -1896,4 +1986,28 @@ > ildouble: 5 > ldouble: 5 > >+Function: "yn_downward": >+double: 3 >+float: 2 >+idouble: 3 >+ifloat: 2 >+ildouble: 5 >+ldouble: 5 >+ >+Function: "yn_towardzero": >+double: 3 >+float: 3 >+idouble: 3 >+ifloat: 3 >+ildouble: 5 >+ldouble: 5 >+ >+Function: "yn_upward": >+double: 4 >+float: 3 >+idouble: 4 >+ifloat: 3 >+ildouble: 5 >+ldouble: 5 >+ > # end of automatic generation >diff -ur glibc-2.19-776-gf4c4021/sysdeps/aarch64/tlsdesc.c glibc-2.19-815-gf2fef65/sysdeps/aarch64/tlsdesc.c >--- glibc-2.19-776-gf4c4021/sysdeps/aarch64/tlsdesc.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/aarch64/tlsdesc.c 2014-07-14 16:58:27.000000000 +0200 >@@ -147,7 +147,7 @@ > { > _dl_unmap_segments (map); > >-#if SHARED >+#ifdef SHARED > if (map->l_mach.tlsdesc_table) > htab_delete (map->l_mach.tlsdesc_table); > #endif >diff -ur glibc-2.19-776-gf4c4021/sysdeps/arm/tlsdesc.c glibc-2.19-815-gf2fef65/sysdeps/arm/tlsdesc.c >--- glibc-2.19-776-gf4c4021/sysdeps/arm/tlsdesc.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/arm/tlsdesc.c 2014-07-14 16:58:27.000000000 +0200 >@@ -149,7 +149,7 @@ > { > _dl_unmap_segments (map); > >-#if SHARED >+#ifdef SHARED > /* _dl_unmap is only called for dlopen()ed libraries, for which > calling free() is safe, or before we've completed the initial > relocation, in which case calling free() is probably pointless, >diff -ur glibc-2.19-776-gf4c4021/sysdeps/generic/unwind-pe.h glibc-2.19-815-gf2fef65/sysdeps/generic/unwind-pe.h >--- glibc-2.19-776-gf4c4021/sysdeps/generic/unwind-pe.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/generic/unwind-pe.h 2014-07-14 16:58:27.000000000 +0200 >@@ -22,7 +22,7 @@ > than duplicating code, however. */ > > /* If using C++, references to abort have to be qualified with std::. */ >-#if __cplusplus >+#ifdef __cplusplus > #define __gxx_abort std::abort > #else > #define __gxx_abort abort >diff -ur glibc-2.19-776-gf4c4021/sysdeps/hppa/start.S glibc-2.19-815-gf2fef65/sysdeps/hppa/start.S >--- glibc-2.19-776-gf4c4021/sysdeps/hppa/start.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/hppa/start.S 2014-07-14 16:58:27.000000000 +0200 >@@ -93,7 +93,7 @@ > stw %r23, -56(%sp) > /* Need to setup 1, 4, 5, and 7th arguments */ > >-#if SHARED >+#ifdef SHARED > /* load main (1st argument) */ > addil LT'.Lpmain, %r19 > ldw RT'.Lpmain(%r1), %r26 >diff -ur glibc-2.19-776-gf4c4021/sysdeps/i386/configure glibc-2.19-815-gf2fef65/sysdeps/i386/configure >--- glibc-2.19-776-gf4c4021/sysdeps/i386/configure 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/i386/configure 2014-07-14 16:58:27.000000000 +0200 >@@ -240,6 +240,32 @@ > config_vars="$config_vars > config-cflags-novzeroupper = $libc_cv_cc_novzeroupper" > >+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX2 support" >&5 >+$as_echo_n "checking for AVX2 support... " >&6; } >+if ${libc_cv_cc_avx2+:} false; then : >+ $as_echo_n "(cached) " >&6 >+else >+ if { ac_try='${CC-cc} -mavx2 -xc /dev/null -S -o /dev/null' >+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 >+ (eval $ac_try) 2>&5 >+ ac_status=$? >+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; }; }; then : >+ libc_cv_cc_avx2=yes >+else >+ libc_cv_cc_avx2=no >+fi >+ >+fi >+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx2" >&5 >+$as_echo "$libc_cv_cc_avx2" >&6; } >+if test $libc_cv_cc_avx2 = yes; then >+ $as_echo "#define HAVE_AVX2_SUPPORT 1" >>confdefs.h >+ >+fi >+config_vars="$config_vars >+config-cflags-avx2 = $libc_cv_cc_avx2" >+ > $as_echo "#define USE_REGPARMS 1" >>confdefs.h > > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/i386/configure.ac glibc-2.19-815-gf2fef65/sysdeps/i386/configure.ac >--- glibc-2.19-776-gf4c4021/sysdeps/i386/configure.ac 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/i386/configure.ac 2014-07-14 16:58:27.000000000 +0200 >@@ -88,6 +88,15 @@ > ]) > LIBC_CONFIG_VAR([config-cflags-novzeroupper], [$libc_cv_cc_novzeroupper]) > >+dnl Check if -mavx2 works. >+AC_CACHE_CHECK(for AVX2 support, libc_cv_cc_avx2, [dnl >+LIBC_TRY_CC_OPTION([-mavx2], [libc_cv_cc_avx2=yes], [libc_cv_cc_avx2=no]) >+]) >+if test $libc_cv_cc_avx2 = yes; then >+ AC_DEFINE(HAVE_AVX2_SUPPORT) >+fi >+LIBC_CONFIG_VAR([config-cflags-avx2], [$libc_cv_cc_avx2]) >+ > AC_DEFINE(USE_REGPARMS) > > dnl It is always possible to access static and hidden symbols in an >diff -ur glibc-2.19-776-gf4c4021/sysdeps/i386/dl-machine.h glibc-2.19-815-gf2fef65/sysdeps/i386/dl-machine.h >--- glibc-2.19-776-gf4c4021/sysdeps/i386/dl-machine.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/i386/dl-machine.h 2014-07-14 16:58:27.000000000 +0200 >@@ -292,6 +292,7 @@ > /* The i386 never uses Elf32_Rela relocations for the dynamic linker. > Prelinked libraries may use Elf32_Rela though. */ > #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP >+#define ELF_MACHINE_NO_REL 0 > > #ifdef RESOLVE_MAP > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/i386/fpu/libm-test-ulps glibc-2.19-815-gf2fef65/sysdeps/i386/fpu/libm-test-ulps >--- glibc-2.19-776-gf4c4021/sysdeps/i386/fpu/libm-test-ulps 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/i386/fpu/libm-test-ulps 2014-07-14 16:58:27.000000000 +0200 >@@ -846,12 +846,16 @@ > ldouble: 1 > > Function: "cos": >+float: 1 >+ifloat: 1 > ildouble: 1 > ldouble: 1 > > Function: "cos_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -861,13 +865,17 @@ > > Function: "cos_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 1 > ldouble: 1 > > Function: "cos_upward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1193,17 +1201,17 @@ > > Function: Real part of "ctan_towardzero": > double: 3 >-float: 1 >+float: 2 > idouble: 3 >-ifloat: 1 >+ifloat: 2 > ildouble: 5 > ldouble: 5 > > Function: Imaginary part of "ctan_towardzero": > double: 2 >-float: 1 >+float: 3 > idouble: 2 >-ifloat: 1 >+ifloat: 3 > ildouble: 4 > ldouble: 4 > >@@ -1273,17 +1281,17 @@ > > Function: Real part of "ctanh_towardzero": > double: 2 >-float: 1 >+float: 3 > idouble: 2 >-ifloat: 1 >+ifloat: 3 > ildouble: 4 > ldouble: 4 > > Function: Imaginary part of "ctanh_towardzero": > double: 2 >-float: 1 >+float: 2 > idouble: 2 >-ifloat: 1 >+ifloat: 2 > ildouble: 3 > ldouble: 3 > >@@ -1726,12 +1734,16 @@ > ldouble: 2 > > Function: "sin": >+float: 1 >+ifloat: 1 > ildouble: 1 > ldouble: 1 > > Function: "sin_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1741,35 +1753,47 @@ > > Function: "sin_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 1 > ldouble: 1 > > Function: "sin_upward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > > Function: "sincos": >+float: 1 >+ifloat: 1 > ildouble: 1 > ldouble: 1 > > Function: "sincos_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > > Function: "sincos_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 1 > ldouble: 1 > > Function: "sincos_upward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/i386/tlsdesc.c glibc-2.19-815-gf2fef65/sysdeps/i386/tlsdesc.c >--- glibc-2.19-776-gf4c4021/sysdeps/i386/tlsdesc.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/i386/tlsdesc.c 2014-07-14 16:58:27.000000000 +0200 >@@ -261,7 +261,7 @@ > { > _dl_unmap_segments (map); > >-#if SHARED >+#ifdef SHARED > if (map->l_mach.tlsdesc_table) > htab_delete (map->l_mach.tlsdesc_table); > #endif >diff -ur glibc-2.19-776-gf4c4021/sysdeps/m68k/m680x0/fpu/libm-test-ulps glibc-2.19-815-gf2fef65/sysdeps/m68k/m680x0/fpu/libm-test-ulps >--- glibc-2.19-776-gf4c4021/sysdeps/m68k/m680x0/fpu/libm-test-ulps 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/m68k/m680x0/fpu/libm-test-ulps 2014-07-14 16:58:27.000000000 +0200 >@@ -763,6 +763,54 @@ > ildouble: 1 > ldouble: 1 > >+Function: Real part of "cpow_downward": >+double: 5 >+float: 8 >+idouble: 5 >+ifloat: 8 >+ildouble: 7 >+ldouble: 7 >+ >+Function: Imaginary part of "cpow_downward": >+double: 1 >+float: 1 >+idouble: 1 >+ifloat: 1 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Real part of "cpow_towardzero": >+double: 5 >+float: 8 >+idouble: 5 >+ifloat: 8 >+ildouble: 7 >+ldouble: 7 >+ >+Function: Imaginary part of "cpow_towardzero": >+double: 1 >+float: 1 >+idouble: 1 >+ifloat: 1 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Real part of "cpow_upward": >+double: 4 >+float: 1 >+idouble: 4 >+ifloat: 1 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Imaginary part of "cpow_upward": >+double: 1 >+float: 1 >+idouble: 1 >+ifloat: 1 >+ildouble: 2 >+ldouble: 2 >+ > Function: Real part of "csin": > ildouble: 1 > ldouble: 1 >@@ -1041,9 +1089,9 @@ > > Function: Real part of "ctanh_upward": > double: 1 >-float: 1 >+float: 2 > idouble: 1 >-ifloat: 1 >+ifloat: 2 > ildouble: 7 > ldouble: 7 > >@@ -1238,16 +1286,16 @@ > float: 7 > idouble: 1 > ifloat: 7 >-ildouble: 7 >-ldouble: 7 >+ildouble: 9 >+ldouble: 9 > > Function: "pow_downward": > double: 1 >-float: 1 >+float: 7 > idouble: 1 >-ifloat: 1 >-ildouble: 1 >-ldouble: 1 >+ifloat: 7 >+ildouble: 9 >+ldouble: 9 > > Function: "pow_tonearest": > double: 1 >@@ -1259,19 +1307,19 @@ > > Function: "pow_towardzero": > double: 1 >-float: 1 >+float: 4 > idouble: 1 >-ifloat: 1 >-ildouble: 1 >-ldouble: 1 >+ifloat: 4 >+ildouble: 4 >+ldouble: 4 > > Function: "pow_upward": > double: 1 >-float: 1 >+float: 2 > idouble: 1 >-ifloat: 1 >-ildouble: 1 >-ldouble: 1 >+ifloat: 2 >+ildouble: 8 >+ldouble: 8 > > Function: "sin": > double: 1 >@@ -1353,6 +1401,30 @@ > double: 1 > float: 3 > idouble: 1 >+ifloat: 3 >+ildouble: 4 >+ldouble: 4 >+ >+Function: "yn_downward": >+double: 1 >+float: 3 >+idouble: 1 >+ifloat: 3 >+ildouble: 6 >+ldouble: 6 >+ >+Function: "yn_towardzero": >+double: 1 >+float: 3 >+idouble: 1 >+ifloat: 3 >+ildouble: 5 >+ldouble: 5 >+ >+Function: "yn_upward": >+double: 1 >+float: 3 >+idouble: 1 > ifloat: 3 > ildouble: 4 > ldouble: 4 >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/bits/link.h glibc-2.19-815-gf2fef65/sysdeps/powerpc/bits/link.h >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/bits/link.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/bits/link.h 2014-07-14 16:58:27.000000000 +0200 >@@ -63,7 +63,8 @@ > > __END_DECLS > >-#elif _CALL_ELF != 2 >+#elif __ELF_NATIVE_CLASS == 64 >+# if _CALL_ELF != 2 > > /* Registers for entry into PLT on PPC64. */ > typedef struct La_ppc64_regs >@@ -107,7 +108,7 @@ > > __END_DECLS > >-#else >+# else > > /* Registers for entry into PLT on PPC64 in the ELFv2 ABI. */ > typedef struct La_ppc64v2_regs >@@ -151,4 +152,5 @@ > > __END_DECLS > >+# endif > #endif >Only in glibc-2.19-776-gf4c4021/sysdeps/powerpc: memmove.c >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/memcopy.h glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/memcopy.h >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/memcopy.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/memcopy.h 2014-07-14 16:58:27.000000000 +0200 >@@ -110,3 +110,7 @@ > ((byte *) dst_ep)[0] = __x; \ > } \ > } while (0) >+ >+/* The powerpc memcpy implementation is safe to use for memmove. */ >+#undef MEMCPY_OK_FOR_FWD_MEMMOVE >+#define MEMCPY_OK_FOR_FWD_MEMMOVE 1 >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c 2014-07-14 16:58:27.000000000 +0200 >@@ -59,6 +59,12 @@ > __memcpy_cell) > IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc)) > >+ /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c. */ >+ IFUNC_IMPL (i, name, memmove, >+ IFUNC_IMPL_ADD (array, i, memmove, hwcap & PPC_FEATURE_HAS_VSX, >+ __memmove_power7) >+ IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ppc)) >+ > /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memset.c. */ > IFUNC_IMPL (i, name, memset, > IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX, >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile 2014-07-14 16:58:27.000000000 +0200 >@@ -11,7 +11,7 @@ > strchr-power7 strchr-ppc32 wcschr-power7 wcschr-power6 \ > wcschr-ppc32 wcsrchr-power7 wcsrchr-power6 wcsrchr-ppc32 \ > wcscpy-power7 wcscpy-power6 wcscpy-ppc32 wordcopy-power7 \ >- wordcopy-power6 wordcopy-ppc32 >+ wordcopy-power6 wordcopy-ppc32 memmove-power7 memmove-ppc > > CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops > CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch: memmove.c >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch: memmove-power7.c >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch: memmove-ppc.c >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S 2014-07-14 16:58:27.000000000 +0200 >@@ -30,7 +30,7 @@ > cfi_endproc; \ > ASM_SIZE_DIRECTIVE(__strcasecmp_l_power7) > >-#undef weak_alias(name, alias) >+#undef weak_alias > #define weak_alias(name, alias) > > #undef libc_hidden_builtin_def >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S 2014-07-14 16:58:27.000000000 +0200 >@@ -30,7 +30,7 @@ > cfi_endproc; \ > ASM_SIZE_DIRECTIVE(__strcasecmp_power7) > >-#undef weak_alias(name, alias) >+#undef weak_alias > #define weak_alias(name, alias) > > #undef libc_hidden_builtin_def >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power7/memcpy.S glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power7/memcpy.S >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc32/power7/memcpy.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc32/power7/memcpy.S 2014-07-14 16:58:27.000000000 +0200 >@@ -38,8 +38,8 @@ > ble cr1, L(copy_LT_32) /* If move < 32 bytes use short move > code. */ > >- andi. 11,3,7 /* Check alignment of DST. */ >- clrlwi 10,4,29 /* Check alignment of SRC. */ >+ andi. 11,3,15 /* Check alignment of DST. */ >+ clrlwi 10,4,28 /* Check alignment of SRC. */ > cmplw cr6,10,11 /* SRC and DST alignments match? */ > mr 12,4 > mr 31,5 >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch: bcopy.c >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch: bcopy-ppc64.c >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c 2014-07-14 16:58:27.000000000 +0200 >@@ -61,6 +61,12 @@ > __memcpy_power4) > IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc)) > >+ /* Support sysdeps/powerpc/powerpc64/multiarch/memmove.c. */ >+ IFUNC_IMPL (i, name, memmove, >+ IFUNC_IMPL_ADD (array, i, memmove, hwcap & PPC_FEATURE_HAS_VSX, >+ __memmove_power7) >+ IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ppc)) >+ > /* Support sysdeps/powerpc/powerpc64/multiarch/memset.c. */ > IFUNC_IMPL (i, name, memset, > IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX, >@@ -136,6 +142,12 @@ > __bzero_power4) > IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ppc)) > >+ /* Support sysdeps/powerpc/powerpc64/multiarch/bcopy.c. */ >+ IFUNC_IMPL (i, name, bcopy, >+ IFUNC_IMPL_ADD (array, i, bcopy, hwcap & PPC_FEATURE_HAS_VSX, >+ __bcopy_power7) >+ IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ppc)) >+ > /* Support sysdeps/powerpc/powerpc64/multiarch/mempcpy.c. */ > IFUNC_IMPL (i, name, mempcpy, > IFUNC_IMPL_ADD (array, i, mempcpy, >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch/Makefile >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/multiarch/Makefile 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch/Makefile 2014-07-14 16:58:27.000000000 +0200 >@@ -18,7 +18,8 @@ > strspn-power7 strspn-ppc64 strcspn-power7 strcspn-ppc64 \ > strpbrk-power7 strpbrk-ppc64 strncpy-power7 strncpy-ppc64 \ > stpncpy-power7 stpncpy-ppc64 strcmp-power7 strcmp-ppc64 \ >- strcat-power7 strcat-ppc64 >+ strcat-power7 strcat-ppc64 memmove-power7 memmove-ppc64 \ >+ bcopy-ppc64 > > CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops > CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch: memmove.c >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch: memmove-power7.S >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch: memmove-ppc64.c >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c 2014-07-14 16:58:27.000000000 +0200 >@@ -22,7 +22,9 @@ > #undef libc_hidden_def > #define libc_hidden_def(name) > >+extern typeof (strcpy) __strcpy_power7; >+extern typeof (strlen) __strlen_power7; >+ > #define strcpy __strcpy_power7 > #define strlen __strlen_power7 >- > #include <sysdeps/powerpc/strcat.c> >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/power7: bcopy.c >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/power7/memcpy.S glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/power7/memcpy.S >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/powerpc64/power7/memcpy.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/power7/memcpy.S 2014-07-14 16:58:27.000000000 +0200 >@@ -36,16 +36,11 @@ > ble cr1, L(copy_LT_32) /* If move < 32 bytes use short move > code. */ > >-#ifdef __LITTLE_ENDIAN__ >-/* In little-endian mode, power7 takes an alignment trap on any lxvd2x >- or stxvd2x crossing a 32-byte boundary, so ensure the aligned_copy >- loop is only used for quadword aligned copies. */ >+/* Align copies using VSX instructions to quadword. It is to avoid alignment >+ traps when memcpy is used on non-cacheable memory (for instance, memory >+ mapped I/O). */ > andi. 10,3,15 > clrldi 11,4,60 >-#else >- andi. 10,3,7 /* Check alignment of DST. */ >- clrldi 11,4,61 /* Check alignment of SRC. */ >-#endif > cmpld cr6,10,11 /* SRC and DST alignments match? */ > > mr dst,3 >@@ -53,13 +48,9 @@ > beq L(aligned_copy) > > mtocrf 0x01,0 >-#ifdef __LITTLE_ENDIAN__ > clrldi 0,0,60 >-#else >- clrldi 0,0,61 >-#endif > >-/* Get the DST and SRC aligned to 8 bytes (16 for little-endian). */ >+/* Get the DST and SRC aligned to 16 bytes. */ > 1: > bf 31,2f > lbz 6,0(src) >@@ -79,14 +70,12 @@ > stw 6,0(dst) > addi dst,dst,4 > 8: >-#ifdef __LITTLE_ENDIAN__ > bf 28,16f > ld 6,0(src) > addi src,src,8 > std 6,0(dst) > addi dst,dst,8 > 16: >-#endif > subf cnt,0,cnt > > /* Main aligned copy loop. Copies 128 bytes at a time. */ >@@ -298,9 +287,6 @@ > .align 4 > L(copy_GE_32_unaligned): > clrldi 0,0,60 /* Number of bytes until the 1st dst quadword. */ >-#ifndef __LITTLE_ENDIAN__ >- andi. 10,3,15 /* Check alignment of DST (against quadwords). */ >-#endif > srdi 9,cnt,4 /* Number of full quadwords remaining. */ > > beq L(copy_GE_32_unaligned_cont) >Only in glibc-2.19-815-gf2fef65/sysdeps/powerpc/powerpc64/power7: memmove.S >diff -ur glibc-2.19-776-gf4c4021/sysdeps/powerpc/test-gettimebase.c glibc-2.19-815-gf2fef65/sysdeps/powerpc/test-gettimebase.c >--- glibc-2.19-776-gf4c4021/sysdeps/powerpc/test-gettimebase.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/powerpc/test-gettimebase.c 2014-07-14 16:58:27.000000000 +0200 >@@ -39,7 +39,7 @@ > if (t1 != t2 && t1 != t3 && t2 != t3) > return 0; > >- printf ("Fail: timebase reads should always be different."); >+ printf ("Fail: timebase reads should always be different.\n"); > return 1; > } > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/fpu/libm-test-ulps glibc-2.19-815-gf2fef65/sysdeps/sparc/fpu/libm-test-ulps >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/fpu/libm-test-ulps 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/fpu/libm-test-ulps 2014-07-14 16:58:27.000000000 +0200 >@@ -970,6 +970,54 @@ > ildouble: 1 > ldouble: 1 > >+Function: Real part of "cpow_downward": >+double: 4 >+float: 8 >+idouble: 4 >+ifloat: 8 >+ildouble: 6 >+ldouble: 6 >+ >+Function: Imaginary part of "cpow_downward": >+double: 2 >+float: 2 >+idouble: 2 >+ifloat: 2 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Real part of "cpow_towardzero": >+double: 4 >+float: 8 >+idouble: 4 >+ifloat: 8 >+ildouble: 6 >+ldouble: 6 >+ >+Function: Imaginary part of "cpow_towardzero": >+double: 2 >+float: 2 >+idouble: 2 >+ifloat: 2 >+ildouble: 2 >+ldouble: 2 >+ >+Function: Real part of "cpow_upward": >+double: 4 >+float: 1 >+idouble: 4 >+ifloat: 1 >+ildouble: 3 >+ldouble: 3 >+ >+Function: Imaginary part of "cpow_upward": >+double: 1 >+float: 2 >+idouble: 1 >+ifloat: 2 >+ildouble: 2 >+ldouble: 2 >+ > Function: Real part of "csin": > double: 1 > float: 1 >@@ -1233,8 +1281,8 @@ > float: 3 > idouble: 2 > ifloat: 3 >-ildouble: 3 >-ldouble: 3 >+ildouble: 5 >+ldouble: 5 > > Function: Real part of "ctanh": > double: 2 >@@ -1305,8 +1353,8 @@ > float: 3 > idouble: 2 > ifloat: 3 >-ildouble: 3 >-ldouble: 3 >+ildouble: 5 >+ldouble: 5 > > Function: Imaginary part of "ctanh_upward": > double: 2 >@@ -1380,7 +1428,9 @@ > > Function: "exp10_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1392,7 +1442,9 @@ > > Function: "exp10_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1742,13 +1794,17 @@ > > Function: "pow10_downward": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > > Function: "pow10_towardzero": > double: 1 >+float: 1 > idouble: 1 >+ifloat: 1 > ildouble: 2 > ldouble: 2 > >@@ -1761,8 +1817,12 @@ > ldouble: 2 > > Function: "pow_downward": >+double: 1 > float: 1 >+idouble: 1 > ifloat: 1 >+ildouble: 1 >+ldouble: 1 > > Function: "pow_tonearest": > float: 1 >@@ -1771,14 +1831,20 @@ > ldouble: 1 > > Function: "pow_towardzero": >+double: 1 > float: 1 >+idouble: 1 > ifloat: 1 >+ildouble: 1 >+ldouble: 1 > > Function: "pow_upward": >+double: 1 > float: 1 >+idouble: 1 > ifloat: 1 >-ildouble: 1 >-ldouble: 1 >+ildouble: 2 >+ldouble: 2 > > Function: "sin": > float: 1 >@@ -2006,4 +2072,28 @@ > ildouble: 5 > ldouble: 5 > >+Function: "yn_downward": >+double: 3 >+float: 2 >+idouble: 3 >+ifloat: 2 >+ildouble: 5 >+ldouble: 5 >+ >+Function: "yn_towardzero": >+double: 3 >+float: 3 >+idouble: 3 >+ifloat: 3 >+ildouble: 5 >+ldouble: 5 >+ >+Function: "yn_upward": >+double: 4 >+float: 4 >+idouble: 4 >+ifloat: 4 >+ildouble: 5 >+ldouble: 5 >+ > # end of automatic generation >Only in glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl: internaltypes.h >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/pthread_barrier_destroy.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/pthread_barrier_destroy.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/pthread_barrier_destroy.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/pthread_barrier_destroy.c 2014-07-14 16:58:27.000000000 +0200 >@@ -19,6 +19,7 @@ > #include <errno.h> > #include "pthreadP.h" > #include <lowlevellock.h> >+#include <sparc-nptl.h> > > int > pthread_barrier_destroy (barrier) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/pthread_barrier_init.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/pthread_barrier_init.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/pthread_barrier_init.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/pthread_barrier_init.c 2014-07-14 16:58:27.000000000 +0200 >@@ -19,6 +19,7 @@ > #include <errno.h> > #include "pthreadP.h" > #include <lowlevellock.h> >+#include <sparc-nptl.h> > > int > pthread_barrier_init (barrier, attr, count) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/pthread_barrier_wait.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/pthread_barrier_wait.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/pthread_barrier_wait.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/pthread_barrier_wait.c 2014-07-14 16:58:27.000000000 +0200 >@@ -20,6 +20,7 @@ > #include <sysdep.h> > #include <lowlevellock.h> > #include <pthreadP.h> >+#include <sparc-nptl.h> > > /* Wait on barrier. */ > int >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_init.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_init.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_init.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_init.c 2014-07-14 16:58:27.000000000 +0200 >@@ -23,7 +23,7 @@ > #include <shlib-compat.h> > #include "semaphoreP.h" > #include <kernel-features.h> >- >+#include <sparc-nptl.h> > > int > __new_sem_init (sem, pshared, value) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_post.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_post.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_post.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_post.c 2014-07-14 16:58:27.000000000 +0200 >@@ -24,6 +24,7 @@ > #include <semaphore.h> > > #include <shlib-compat.h> >+#include <sparc-nptl.h> > > int > __new_sem_post (sem_t *sem) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_timedwait.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_timedwait.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_timedwait.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_timedwait.c 2014-07-14 16:58:27.000000000 +0200 >@@ -25,7 +25,7 @@ > > #include <pthreadP.h> > #include <shlib-compat.h> >- >+#include <sparc-nptl.h> > > extern void __sem_wait_cleanup (void *arg) attribute_hidden; > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_wait.c glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_wait.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/nptl/sem_wait.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl/sem_wait.c 2014-07-14 16:58:27.000000000 +0200 >@@ -25,7 +25,7 @@ > > #include <pthreadP.h> > #include <shlib-compat.h> >- >+#include <sparc-nptl.h> > > void > attribute_hidden >Only in glibc-2.19-815-gf2fef65/sysdeps/sparc/nptl: sparc-nptl.h >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/pthread_barrier_wait.c glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/pthread_barrier_wait.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/pthread_barrier_wait.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/pthread_barrier_wait.c 2014-07-14 16:58:27.000000000 +0200 >@@ -20,6 +20,7 @@ > #include <sysdep.h> > #include <lowlevellock.h> > #include <pthreadP.h> >+#include <sparc-nptl.h> > > /* Wait on barrier. */ > int >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/sem_post.c glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/sem_post.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/sem_post.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/sem_post.c 2014-07-14 16:58:27.000000000 +0200 >@@ -24,6 +24,7 @@ > #include <semaphore.h> > > #include <shlib-compat.h> >+#include <sparc-nptl.h> > > int > __new_sem_post (sem_t *sem) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/sem_timedwait.c glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/sem_timedwait.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/sem_timedwait.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/sem_timedwait.c 2014-07-14 16:58:27.000000000 +0200 >@@ -25,7 +25,7 @@ > > #include <pthreadP.h> > #include <shlib-compat.h> >- >+#include <sparc-nptl.h> > > extern void __sem_wait_cleanup (void *arg) attribute_hidden; > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/sem_wait.c glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/sem_wait.c >--- glibc-2.19-776-gf4c4021/sysdeps/sparc/sparc32/sem_wait.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/sparc/sparc32/sem_wait.c 2014-07-14 16:58:27.000000000 +0200 >@@ -25,7 +25,7 @@ > > #include <pthreadP.h> > #include <shlib-compat.h> >- >+#include <sparc-nptl.h> > > void > attribute_hidden >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/aarch64/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/aarch64/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/aarch64/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/aarch64/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -111,15 +111,6 @@ > __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -180,11 +171,6 @@ > #define lll_cond_trylock(lock) \ > atomic_compare_and_exchange_val_acq(&(lock), 2, 0) > >-#define __lll_robust_trylock(futex, id) \ >- (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0) >-#define lll_robust_trylock(lock, id) \ >- __lll_robust_trylock (&(lock), id) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/alpha/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/alpha/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -113,15 +113,6 @@ > INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -187,14 +178,6 @@ > #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock)) > > >-static inline int __attribute__((always_inline)) >-__lll_robust_trylock(int *futex, int id) >-{ >- return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; >-} >-#define lll_robust_trylock(lock, id) \ >- __lll_robust_trylock (&(lock), id) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/arm/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/arm/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/arm/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/arm/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -110,15 +110,6 @@ > __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -176,11 +167,6 @@ > #define lll_cond_trylock(lock) \ > atomic_compare_and_exchange_val_acq(&(lock), 2, 0) > >-#define __lll_robust_trylock(futex, id) \ >- (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0) >-#define lll_robust_trylock(lock, id) \ >- __lll_robust_trylock (&(lock), id) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/check_pf.c glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/check_pf.c >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/check_pf.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/check_pf.c 2014-07-14 16:58:27.000000000 +0200 >@@ -61,7 +61,7 @@ > .in6ailen = 0 > }; > >-libc_freeres_ptr (static struct cached_data *cache); >+static struct cached_data *cache; > __libc_lock_define_initialized (static, lock); > > >@@ -401,6 +401,12 @@ > *seen_ipv6 = true; > } > >+/* Free the cache if it has been allocated. */ >+libc_freeres_fn (freecache) >+{ >+ if (cache) >+ __free_in6ai (cache->in6ai); >+} > > void > __free_in6ai (struct in6addrinfo *ai) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -144,15 +144,6 @@ > __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \ > ({ \ >@@ -195,15 +186,6 @@ > > static inline int > __attribute__ ((always_inline)) >-__lll_robust_trylock (int *futex, int id) >-{ >- return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; >-} >-#define lll_robust_trylock(futex, id) \ >- __lll_robust_trylock (&(futex), id) >- >-static inline int >-__attribute__ ((always_inline)) > __lll_cond_trylock (int *futex) > { > return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/i386/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/i386/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/i386/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/i386/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -188,15 +188,6 @@ > : "memory"); \ > ret; }) > >-#define lll_robust_trylock(futex, id) \ >- ({ int ret; \ >- __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1" \ >- : "=a" (ret), "=m" (futex) \ >- : "r" (id), "m" (futex), \ >- "0" (LLL_LOCK_INITIALIZER) \ >- : "memory"); \ >- ret; }) >- > > #define lll_cond_trylock(futex) \ > ({ int ret; \ >@@ -386,21 +377,6 @@ > }) > > >-#define lll_robust_dead(futex, private) \ >- (void) \ >- ({ int __ignore; \ >- register int _nr asm ("edx") = 1; \ >- __asm __volatile (LOCK_INSTR "orl %5, (%2)\n\t" \ >- LLL_EBX_LOAD \ >- LLL_ENTER_KERNEL \ >- LLL_EBX_LOAD \ >- : "=a" (__ignore) \ >- : "0" (SYS_futex), LLL_EBX_REG (&(futex)), \ >- "c" (__lll_private_flag (FUTEX_WAKE, private)), \ >- "d" (_nr), "i" (FUTEX_OWNER_DIED), \ >- "i" (offsetof (tcbhead_t, sysinfo))); \ >- }) >- > #define lll_islocked(futex) \ > (futex != LLL_LOCK_INITIALIZER) > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -110,16 +110,6 @@ > _r10 == -1 ? -_retval : _retval; \ > }) > >-#define lll_robust_dead(futexv, private) \ >-do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- DO_INLINE_SYSCALL(futex, 3, (long) __futexp, \ >- __lll_private_flag (FUTEX_WAKE, private), 1); \ >- } \ >-while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -169,12 +159,6 @@ > #define lll_trylock(futex) __lll_trylock (&(futex)) > > >-#define __lll_robust_trylock(futex, id) \ >- (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0) >-#define lll_robust_trylock(futex, id) \ >- __lll_robust_trylock (&(futex), id) >- >- > #define __lll_cond_trylock(futex) \ > (atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0) > #define lll_cond_trylock(futex) __lll_cond_trylock (&(futex)) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/m68k/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/m68k/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/m68k/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/m68k/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -112,15 +112,6 @@ > __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -177,9 +168,6 @@ > #define lll_cond_trylock(lock) \ > atomic_compare_and_exchange_val_acq (&(lock), 2, 0) > >-#define lll_robust_trylock(lock, id) \ >- atomic_compare_and_exchange_val_acq (&(lock), id, 0) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/microblaze/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/microblaze/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/microblaze/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/microblaze/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -112,15 +112,6 @@ > __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -180,11 +171,6 @@ > #define lll_cond_trylock(lock) \ > atomic_compare_and_exchange_val_acq(&(lock), 2, 0) > >-#define __lll_robust_trylock(futex, id) \ >- (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0) >-#define lll_robust_trylock(lock, id) \ >- __lll_robust_trylock (&(lock), id) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/mips/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/mips/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/mips/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/mips/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -110,15 +110,6 @@ > INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -187,14 +178,6 @@ > #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock)) > > >-static inline int __attribute__((always_inline)) >-__lll_robust_trylock(int *futex, int id) >-{ >- return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; >-} >-#define lll_robust_trylock(lock, id) \ >- __lll_robust_trylock (&(lock), id) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -114,18 +114,6 @@ > INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret; \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- INTERNAL_SYSCALL_DECL (__err); \ >- int *__futexp = &(futexv); \ >- \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- INTERNAL_SYSCALL (futex, __err, 4, __futexp, \ >- __lll_private_flag (FUTEX_WAKE, private), 1, 0); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -203,7 +191,7 @@ > #endif > > /* Set *futex to ID if it is 0, atomically. Returns the old value */ >-#define __lll_robust_trylock(futex, id) \ >+#define __lll_base_trylock(futex, id) \ > ({ int __val; \ > __asm __volatile ("1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \ > " cmpwi 0,%0,0\n" \ >@@ -217,15 +205,13 @@ > __val; \ > }) > >-#define lll_robust_trylock(lock, id) __lll_robust_trylock (&(lock), id) >- > /* Set *futex to 1 if it is 0, atomically. Returns the old value */ >-#define __lll_trylock(futex) __lll_robust_trylock (futex, 1) >+#define __lll_trylock(futex) __lll_base_trylock (futex, 1) > > #define lll_trylock(lock) __lll_trylock (&(lock)) > > /* Set *futex to 2 if it is 0, atomically. Returns the old value */ >-#define __lll_cond_trylock(futex) __lll_robust_trylock (futex, 2) >+#define __lll_cond_trylock(futex) __lll_base_trylock (futex, 2) > > #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock)) > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c 2014-07-14 16:58:27.000000000 +0200 >@@ -41,7 +41,7 @@ > printf ("Time Base frequency = %"PRIu64" Hz\n", f); > > if (f == 0) { >- printf ("Fail: The time base frequency can't be zero."); >+ printf ("Fail: The time base frequency can't be zero.\n"); > return 1; > } > >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/s390/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/s390/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/s390/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/s390/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -107,16 +107,6 @@ > (nr), 0); \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ >@@ -210,21 +200,6 @@ > #define lll_cond_trylock(futex) __lll_cond_trylock (&(futex)) > > >-static inline int >-__attribute__ ((always_inline)) >-__lll_robust_trylock (int *futex, int id) >-{ >- unsigned int old; >- >- __asm __volatile ("cs %0,%3,%1" >- : "=d" (old), "=Q" (*futex) >- : "0" (0), "d" (id), "m" (*futex) : "cc", "memory" ); >- return old != 0; >-} >-#define lll_robust_trylock(futex, id) \ >- __lll_robust_trylock (&(futex), id) >- >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/sh/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/sh/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -118,28 +118,6 @@ > : "r0", "r1", "r2", "t", "memory"); \ > __result; }) > >-#define lll_robust_trylock(futex, id) \ >- ({ unsigned char __result; \ >- __asm __volatile ("\ >- .align 2\n\ >- mova 1f,r0\n\ >- nop\n\ >- mov r15,r1\n\ >- mov #-8,r15\n\ >- 0: mov.l @%1,r2\n\ >- cmp/eq r2,%3\n\ >- bf 1f\n\ >- mov.l %2,@%1\n\ >- 1: mov r1,r15\n\ >- mov #-1,%0\n\ >- negc %0,%0"\ >- : "=r" (__result) \ >- : "r" (&(futex)), \ >- "r" (id), \ >- "r" (LLL_LOCK_INITIALIZER) \ >- : "r0", "r1", "r2", "t", "memory"); \ >- __result; }) >- > #define lll_cond_trylock(futex) \ > ({ unsigned char __result; \ > __asm __volatile ("\ >@@ -323,21 +301,6 @@ > if (__result) \ > __lll_unlock_wake (__futex, private); }) > >-#define lll_robust_dead(futex, private) \ >- (void) ({ int __ignore, *__futex = &(futex); \ >- __asm __volatile ("\ >- .align 2\n\ >- mova 1f,r0\n\ >- mov r15,r1\n\ >- mov #-6,r15\n\ >- 0: mov.l @%1,%0\n\ >- or %2,%0\n\ >- mov.l %0,@%1\n\ >- 1: mov r1,r15"\ >- : "=&r" (__ignore) : "r" (__futex), "r" (FUTEX_OWNER_DIED) \ >- : "r0", "r1", "memory"); \ >- lll_futex_wake (__futex, 1, private); }) >- > # ifdef NEED_SYSCALL_INST_PAD > # define SYSCALL_WITH_INST_PAD "\ > trapa #0x14; or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0" >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/sparc/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/sparc/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -132,15 +132,6 @@ > INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #ifdef __sparc32_atomic_do_lock > /* Avoid FUTEX_WAKE_OP if supporting pre-v9 CPUs. */ >@@ -203,15 +194,6 @@ > } > #define lll_cond_trylock(futex) __lll_cond_trylock (&(futex)) > >-static inline int >-__attribute__ ((always_inline)) >-__lll_robust_trylock (int *futex, int id) >-{ >- return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; >-} >-#define lll_robust_trylock(futex, id) \ >- __lll_robust_trylock (&(futex), id) >- > > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/tile/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/tile/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/tile/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/tile/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -109,15 +109,6 @@ > (nr), 0); \ > }) > >-#define lll_robust_dead(futexv, private) \ >- do \ >- { \ >- int *__futexp = &(futexv); \ >- atomic_or (__futexp, FUTEX_OWNER_DIED); \ >- lll_futex_wake (__futexp, 1, private); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \ > ({ \ >@@ -186,14 +177,6 @@ > #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock)) > > >-static inline int __attribute__ ((always_inline)) >-__lll_robust_trylock (int *futex, int id) >-{ >- return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; >-} >-#define lll_robust_trylock(lock, id) \ >- __lll_robust_trylock (&(lock), id) >- > extern void __lll_lock_wait_private (int *futex) attribute_hidden; > extern void __lll_lock_wait (int *futex, int private) attribute_hidden; > extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden; >diff -ur glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h >--- glibc-2.19-776-gf4c4021/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h 2014-07-14 16:58:27.000000000 +0200 >@@ -165,14 +165,6 @@ > : "memory"); \ > ret; }) > >-#define lll_robust_trylock(futex, id) \ >- ({ int ret; \ >- __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1" \ >- : "=a" (ret), "=m" (futex) \ >- : "r" (id), "m" (futex), "0" (LLL_LOCK_INITIALIZER) \ >- : "memory"); \ >- ret; }) >- > #define lll_cond_trylock(futex) \ > ({ int ret; \ > __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1" \ >@@ -386,20 +378,6 @@ > } \ > while (0) > >-#define lll_robust_dead(futex, private) \ >- do \ >- { \ >- int ignore; \ >- __asm __volatile (LOCK_INSTR "orl %3, (%2)\n\t" \ >- "syscall" \ >- : "=m" (futex), "=a" (ignore) \ >- : "D" (&(futex)), "i" (FUTEX_OWNER_DIED), \ >- "S" (__lll_private_flag (FUTEX_WAKE, private)), \ >- "1" (__NR_futex), "d" (1) \ >- : "cx", "r11", "cc", "memory"); \ >- } \ >- while (0) >- > /* Returns non-zero if error happened, zero if success. */ > #define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val, private) \ > ({ int __res; \ >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/configure glibc-2.19-815-gf2fef65/sysdeps/x86_64/configure >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/configure 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/configure 2014-07-14 16:58:27.000000000 +0200 >@@ -249,6 +249,32 @@ > > fi > >+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX2 support" >&5 >+$as_echo_n "checking for AVX2 support... " >&6; } >+if ${libc_cv_cc_avx2+:} false; then : >+ $as_echo_n "(cached) " >&6 >+else >+ if { ac_try='${CC-cc} -mavx2 -xc /dev/null -S -o /dev/null' >+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 >+ (eval $ac_try) 2>&5 >+ ac_status=$? >+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; }; }; then : >+ libc_cv_cc_avx2=yes >+else >+ libc_cv_cc_avx2=no >+fi >+ >+fi >+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx2" >&5 >+$as_echo "$libc_cv_cc_avx2" >&6; } >+if test $libc_cv_cc_avx2 = yes; then >+ $as_echo "#define HAVE_AVX2_SUPPORT 1" >>confdefs.h >+ >+fi >+config_vars="$config_vars >+config-cflags-avx2 = $libc_cv_cc_avx2" >+ > $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h > > # work around problem with autoconf and empty lines at the end of files >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/configure.ac glibc-2.19-815-gf2fef65/sysdeps/x86_64/configure.ac >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/configure.ac 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/configure.ac 2014-07-14 16:58:27.000000000 +0200 >@@ -90,6 +90,15 @@ > AC_DEFINE(HAVE_MPX_SUPPORT) > fi > >+dnl Check if -mavx2 works. >+AC_CACHE_CHECK(for AVX2 support, libc_cv_cc_avx2, [dnl >+LIBC_TRY_CC_OPTION([-mavx2], [libc_cv_cc_avx2=yes], [libc_cv_cc_avx2=no]) >+]) >+if test $libc_cv_cc_avx2 = yes; then >+ AC_DEFINE(HAVE_AVX2_SUPPORT) >+fi >+LIBC_CONFIG_VAR([config-cflags-avx2], [$libc_cv_cc_avx2]) >+ > dnl It is always possible to access static and hidden symbols in an > dnl position independent way. > AC_DEFINE(PI_STATIC_AND_HIDDEN) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/ifunc-impl-list.c glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/ifunc-impl-list.c >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/ifunc-impl-list.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/ifunc-impl-list.c 2014-07-14 16:58:27.000000000 +0200 >@@ -61,6 +61,7 @@ > __memmove_ssse3) > IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_sse2)) > >+#ifdef HAVE_AVX2_SUPPORT > /* Support sysdeps/x86_64/multiarch/memset_chk.S. */ > IFUNC_IMPL (i, name, __memset_chk, > IFUNC_IMPL_ADD (array, i, __memset_chk, 1, __memset_chk_sse2) >@@ -71,6 +72,7 @@ > IFUNC_IMPL (i, name, memset, > IFUNC_IMPL_ADD (array, i, memset, 1, __memset_sse2) > IFUNC_IMPL_ADD (array, i, memset, HAS_AVX2, __memset_avx2)) >+#endif > > /* Support sysdeps/x86_64/multiarch/stpncpy.S. */ > IFUNC_IMPL (i, name, stpncpy, >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/Makefile glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/Makefile >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/Makefile 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/Makefile 2014-07-14 16:58:27.000000000 +0200 >@@ -17,8 +17,7 @@ > strcpy-sse2-unaligned strncpy-sse2-unaligned \ > stpcpy-sse2-unaligned stpncpy-sse2-unaligned \ > strcat-sse2-unaligned strncat-sse2-unaligned \ >- strchr-sse2-no-bsf memcmp-ssse3 strstr-sse2-unaligned \ >- memset-avx2 >+ strchr-sse2-no-bsf memcmp-ssse3 strstr-sse2-unaligned > > ifeq (yes,$(config-cflags-sse4)) > sysdep_routines += strcspn-c strpbrk-c strspn-c varshift >@@ -27,6 +26,10 @@ > CFLAGS-strpbrk-c.c += -msse4 > CFLAGS-strspn-c.c += -msse4 > endif >+ >+ifeq (yes,$(config-cflags-avx2)) >+sysdep_routines += memset-avx2 >+endif > endif > > ifeq ($(subdir),wcsmbs) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/memset_chk.S glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/memset_chk.S >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/memset_chk.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/memset_chk.S 2014-07-14 16:58:27.000000000 +0200 >@@ -22,7 +22,7 @@ > > /* Define multiple versions only for the definition in lib. */ > #ifndef NOT_IN_libc >-# ifdef SHARED >+# if defined SHARED && defined HAVE_AVX2_SUPPORT > ENTRY(__memset_chk) > .type __memset_chk, @gnu_indirect_function > cmpl $0, __cpu_features+KIND_OFFSET(%rip) >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/memset.S glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/memset.S >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/multiarch/memset.S 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/multiarch/memset.S 2014-07-14 16:58:27.000000000 +0200 >@@ -17,12 +17,13 @@ > License along with the GNU C Library; if not, see > <http://www.gnu.org/licenses/>. */ > >+#ifdef HAVE_AVX2_SUPPORT > #include <sysdep.h> > #include <shlib-compat.h> > #include <init-arch.h> > > /* Define multiple versions only for the definition in lib. */ >-#ifndef NOT_IN_libc >+# ifndef NOT_IN_libc > ENTRY(memset) > .type memset, @gnu_indirect_function > cmpl $0, __cpu_features+KIND_OFFSET(%rip) >@@ -34,26 +35,27 @@ > leaq __memset_avx2(%rip), %rax > 2: ret > END(memset) >-#endif >+# endif > >-#if !defined NOT_IN_libc >-# undef memset >-# define memset __memset_sse2 >+# if !defined NOT_IN_libc >+# undef memset >+# define memset __memset_sse2 > >-# undef __memset_chk >-# define __memset_chk __memset_chk_sse2 >+# undef __memset_chk >+# define __memset_chk __memset_chk_sse2 > >-# ifdef SHARED >+# ifdef SHARED > # undef libc_hidden_builtin_def > /* It doesn't make sense to send libc-internal memset calls through a PLT. > The speedup we get from using GPR instruction is likely eaten away > by the indirect call in the PLT. */ > # define libc_hidden_builtin_def(name) \ > .globl __GI_memset; __GI_memset = __memset_sse2 >-# endif >+# endif > >-# undef strong_alias >-# define strong_alias(original, alias) >+# undef strong_alias >+# define strong_alias(original, alias) >+# endif > #endif > > #include "../memset.S" >diff -ur glibc-2.19-776-gf4c4021/sysdeps/x86_64/tlsdesc.c glibc-2.19-815-gf2fef65/sysdeps/x86_64/tlsdesc.c >--- glibc-2.19-776-gf4c4021/sysdeps/x86_64/tlsdesc.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/sysdeps/x86_64/tlsdesc.c 2014-07-14 16:58:27.000000000 +0200 >@@ -139,7 +139,7 @@ > { > _dl_unmap_segments (map); > >-#if SHARED >+#ifdef SHARED > /* _dl_unmap is only called for dlopen()ed libraries, for which > calling free() is safe, or before we've completed the initial > relocation, in which case calling free() is probably pointless, >diff -ur glibc-2.19-776-gf4c4021/time/strftime_l.c glibc-2.19-815-gf2fef65/time/strftime_l.c >--- glibc-2.19-776-gf4c4021/time/strftime_l.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/time/strftime_l.c 2014-07-14 16:58:27.000000000 +0200 >@@ -29,6 +29,7 @@ > # define HAVE_TM_ZONE 1 > # define HAVE_TZNAME 1 > # define HAVE_TZSET 1 >+# define HAVE_STRFTIME 0 > # define MULTIBYTE_IS_FORMAT_SAFE 1 > # define STDC_HEADERS 1 > # include "../locale/localeinfo.h" >diff -ur glibc-2.19-776-gf4c4021/time/strptime_l.c glibc-2.19-815-gf2fef65/time/strptime_l.c >--- glibc-2.19-776-gf4c4021/time/strptime_l.c 2014-07-07 18:29:34.000000000 +0200 >+++ glibc-2.19-815-gf2fef65/time/strptime_l.c 2014-07-14 16:58:27.000000000 +0200 >@@ -28,6 +28,7 @@ > #include <stdbool.h> > > #ifdef _LIBC >+# define HAVE_LOCALTIME_R 0 > # include "../locale/localeinfo.h" > #endif >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1121419
: 919515