diff options
author | Andreas Krebbel <Andreas.Krebbel@de.ibm.com> | 2010-02-11 07:22:58 -0800 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2010-02-11 07:22:58 -0800 |
commit | a3dc465852c38ffb4f329ca8b5b477a3c314c1ef (patch) | |
tree | 23bd3e6089264aeafddf995774206a9797b0a87d /sysdeps/s390/s390-64/utf16-utf32-z9.c | |
parent | 247fdf2e2b798378d8aeaac1ee6f4ba0a49f31f3 (diff) | |
download | glibc-a3dc465852c38ffb4f329ca8b5b477a3c314c1ef.tar.gz glibc-a3dc465852c38ffb4f329ca8b5b477a3c314c1ef.tar.xz glibc-a3dc465852c38ffb4f329ca8b5b477a3c314c1ef.zip |
S/390: Disable two UTF conversion instructions
Diffstat (limited to 'sysdeps/s390/s390-64/utf16-utf32-z9.c')
-rw-r--r-- | sysdeps/s390/s390-64/utf16-utf32-z9.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c index 868dea68ca..14daf2118f 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)) \ |