This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.11-200-ga3dc465
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 11 Feb 2010 15:23:19 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.11-200-ga3dc465
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via a3dc465852c38ffb4f329ca8b5b477a3c314c1ef (commit)
from 247fdf2e2b798378d8aeaac1ee6f4ba0a49f31f3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a3dc465852c38ffb4f329ca8b5b477a3c314c1ef
commit a3dc465852c38ffb4f329ca8b5b477a3c314c1ef
Author: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
Date: Thu Feb 11 07:22:58 2010 -0800
S/390: Disable two UTF conversion instructions
diff --git a/ChangeLog b/ChangeLog
index be8ba29..b13a74c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-02-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * sysdeps/s390/s390-64/utf8-utf16-z9.c: Disable hardware
+ instructions cu21 and cu24. Add well-formedness checking
+ parameter and adjust the software implementation.
+ * sysdeps/s390/s390-64/utf16-utf32-z9.c: Likewise.
+
2010-02-10 Ulrich Drepper <drepper@redhat.com>
[BZ #11271]
diff --git a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c
index 868dea6..14daf21 100644
--- a/sysdeps/s390/s390-64/utf16-utf32-z9.c
+++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c
@@ -203,7 +203,10 @@ gconv_end (struct __gconv_step *data)
swapping). */
#define BODY \
{ \
- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ /* The hardware instruction currently fails to report an error for \
+ isolated low surrogates so we have to disable the instruction \
+ until this gets resolved. */ \
+ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \
{ \
HARDWARE_CONVERT ("cu24 %0, %1, 1"); \
if (inptr != inend) \
@@ -229,6 +232,12 @@ gconv_end (struct __gconv_step *data)
} \
else \
{ \
+ /* An isolated low-surrogate was found. This has to be \
+ considered ill-formed. */ \
+ if (__builtin_expect (u1 >= 0xdc00, 0)) \
+ { \
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
+ } \
/* It's a surrogate character. At least the first word says \
it is. */ \
if (__builtin_expect (inptr + 4 > inend, 0)) \
diff --git a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c
index 531d3eb..5f73f3c 100644
--- a/sysdeps/s390/s390-64/utf8-utf16-z9.c
+++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c
@@ -345,9 +345,12 @@ gconv_end (struct __gconv_step *data)
Operation. */
#define BODY \
{ \
- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ /* The hardware instruction currently fails to report an error for \
+ isolated low surrogates so we have to disable the instruction \
+ until this gets resolved. */ \
+ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \
{ \
- HARDWARE_CONVERT ("cu21 %0, %1"); \
+ HARDWARE_CONVERT ("cu21 %0, %1, 1"); \
if (inptr != inend) \
{ \
/* Check if the third byte is \
@@ -388,7 +391,7 @@ gconv_end (struct __gconv_step *data)
\
outptr += 2; \
} \
- else if (c >= 0x0800 && c <= 0xd7ff) \
+ else if ((c >= 0x0800 && c <= 0xd7ff) || c > 0xdfff) \
{ \
/* Three byte UTF-8 char. */ \
\
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 7 +++++++
sysdeps/s390/s390-64/utf16-utf32-z9.c | 11 ++++++++++-
sysdeps/s390/s390-64/utf8-utf16-z9.c | 9 ++++++---
3 files changed, 23 insertions(+), 4 deletions(-)
hooks/post-receive
--
GNU C Library master sources