[PATCH 4/6] generated character data for libc/ctype
Corinna Vinschen
vinschen@redhat.com
Tue Mar 13 21:10:00 GMT 2018
On Mar 8 00:21, Thomas Wolff wrote:
> From 58a9cfcb253165d7073a9ed25e143daa2e979c10 Mon Sep 17 00:00:00 2001
> From: Thomas Wolff <towo@towo.net>
> Date: Sun, 25 Feb 2018 17:22:34 +0100
> Subject: [PATCH 4/6] use generated character data
>
> ---
> newlib/libc/ctype/categories.c | 39 +++
> newlib/libc/ctype/categories.h | 7 +
> newlib/libc/ctype/iswalnum.c | 2 +-
> newlib/libc/ctype/iswalnum_l.c | 19 +-
> newlib/libc/ctype/iswalpha.c | 73 ++++++
> newlib/libc/ctype/iswalpha_l.c | 17 +-
> newlib/libc/ctype/iswblank.c | 19 +-
> newlib/libc/ctype/iswblank_l.c | 16 +-
> newlib/libc/ctype/iswcntrl.c | 17 +-
> newlib/libc/ctype/iswcntrl_l.c | 16 +-
> newlib/libc/ctype/iswctype_l.c | 37 ++-
> newlib/libc/ctype/iswdigit.c | 3 +-
> newlib/libc/ctype/iswdigit_l.c | 2 +-
> newlib/libc/ctype/iswgraph.c | 3 +-
> newlib/libc/ctype/iswgraph_l.c | 19 +-
> newlib/libc/ctype/iswlower.c | 4 +-
> newlib/libc/ctype/iswlower_l.c | 16 +-
> newlib/libc/ctype/iswprint.c | 72 ++++++
> newlib/libc/ctype/iswprint_l.c | 17 +-
> newlib/libc/ctype/iswpunct.c | 7 +-
> newlib/libc/ctype/iswpunct_l.c | 22 +-
> newlib/libc/ctype/iswspace.c | 20 +-
> newlib/libc/ctype/iswspace_l.c | 17 +-
> newlib/libc/ctype/iswupper.c | 6 +-
> newlib/libc/ctype/iswupper_l.c | 16 +-
> newlib/libc/ctype/iswxdigit.c | 6 +-
> newlib/libc/ctype/jp2uc.c | 51 +++-
> newlib/libc/ctype/local.h | 19 +-
> newlib/libc/ctype/towctrans.c | 16 +-
> newlib/libc/ctype/towctrans_l.c | 97 +++++++-
> newlib/libc/ctype/towlower.c | 81 +++++++
> newlib/libc/ctype/towlower_l.c | 7 +-
> newlib/libc/ctype/towupper.c | 515 +---------------------------------------
> newlib/libc/ctype/towupper_l.c | 8 +-
> 34 files changed, 650 insertions(+), 639 deletions(-)
> create mode 100644 newlib/libc/ctype/categories.c
> create mode 100644 newlib/libc/ctype/categories.h
> create mode 100644 newlib/libc/ctype/iswalpha.c
> create mode 100644 newlib/libc/ctype/iswprint.c
> create mode 100644 newlib/libc/ctype/towlower.c
Looks like I pushed too soon. After a full rebuild Cygwin didn't work
at all anymore. After some experimenting it turned out that it depends
on the optimization settings. If I build with -O2, all is well. If I
build with just -g and no optimzation, Cygwin doesn't run anymore.
Fortunately strace is a native tool, so I could fetch an strace.
What catched my eye was that *all* paths converted to native NT
paths had a Ctrl-A in place of the drive letter 'C', like this:
\??\^A:\WINDOWS
The culprit was apparently a call to towupper() on the drive letter,
required for case sensitivity. This in turn led to the towctrans_l
function.
After some head scratching (without functioning debugger...) I realized
that there are cases which neglect to return a value due to `return c'.
Why gcc let this slip through beats me thoroughly.
I pushed a patch.
Corinna
--
Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20180313/d7b1d6d3/attachment.sig>
More information about the Newlib
mailing list