This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/6] generated character data for libc/ctype


Am 13.03.2018 um 22:10 schrieb Corinna Vinschen:
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

Thanks a lot for hot-fixing this. I'll meditate how this could slip
through...
And I'll also check why this wasn't discovered during my extensive testing.
Thomas


---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]