public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Tamar Christina <tnfchris@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org
Subject: [gcc r12-5396] libstdc++: Fix ctype changed after newlib update.
Date: Fri, 19 Nov 2021 08:48:50 +0000 (GMT)	[thread overview]
Message-ID: <20211119084850.6F998385800F@sourceware.org> (raw)

https://gcc.gnu.org/g:0e510ab53414430e93c6f5b64841e2f40031cda7

commit r12-5396-g0e510ab53414430e93c6f5b64841e2f40031cda7
Author: Tamar Christina <tamar.christina@arm.com>
Date:   Fri Nov 19 08:48:11 2021 +0000

    libstdc++: Fix ctype changed after newlib update.
    
    Newlib changed ctype.h recently[1] by moving the short labels from ctype.h intro
    the private namespace in ctype_.h.  This broke embedded builds due to them no
    longer being found.  Instead they now expose the long names to match glibc.
    
    This patch now uses the short or long names depending on is the short ones are
    defined or not.
    
    [1] https://github.com/bminor/newlib/commit/3ba1bd0d9dbc015c14a0aaafcef042f706d1249a
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/103305
            * config/os/newlib/ctype_base.h (upper, lower, alpha, digit, xdigit,
            space, print, graph, cntrl, punct, alnum, blank): Use short or long
            names depending on if short ones are defined.

Diff:
---
 libstdc++-v3/config/os/newlib/ctype_base.h | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/config/os/newlib/ctype_base.h b/libstdc++-v3/config/os/newlib/ctype_base.h
index 33654d7794a..3a7477afdcc 100644
--- a/libstdc++-v3/config/os/newlib/ctype_base.h
+++ b/libstdc++-v3/config/os/newlib/ctype_base.h
@@ -41,6 +41,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     // NB: Offsets into ctype<char>::_M_table force a particular size
     // on the mask type. Because of this, we don't use an enum.
     typedef char 		mask;
+#if defined _U && defined _L && defined _N && defined _S
     static const mask upper    	= _U;
     static const mask lower 	= _L;
     static const mask alpha 	= _U | _L;
@@ -52,8 +53,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     static const mask cntrl 	= _C;
     static const mask punct 	= _P;
     static const mask alnum 	= _U | _L | _N;
-#if __cplusplus >= 201103L
+# if __cplusplus >= 201103L
     static const mask blank 	= space;
+# endif
+#else
+    static const mask upper    = _ISupper;
+    static const mask lower    = _ISlower;
+    static const mask alpha    = _ISupper | _ISlower;
+    static const mask digit    = _ISdigit;
+    static const mask xdigit   = _ISxdigit | _ISdigit;
+    static const mask space    = _ISspace;
+    static const mask print    = _ISpunct | _ISupper | _ISlower | _ISdigit | _ISblank;
+    static const mask graph    = _ISpunct | _ISupper | _ISlower | _ISdigit;
+    static const mask cntrl    = _IScntrl;
+    static const mask punct    = _ISpunct;
+    static const mask alnum    = _ISupper | _ISlower | _ISdigit;
+# if __cplusplus >= 201103L
+    static const mask blank    =  _ISspace | _ISblank;
+# endif
 #endif
   };


                 reply	other threads:[~2021-11-19  8:48 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211119084850.6F998385800F@sourceware.org \
    --to=tnfchris@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    --cc=libstdc++-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).