From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1984) id 6F998385800F; Fri, 19 Nov 2021 08:48:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6F998385800F MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Tamar Christina To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r12-5396] libstdc++: Fix ctype changed after newlib update. X-Act-Checkin: gcc X-Git-Author: Tamar Christina X-Git-Refname: refs/heads/master X-Git-Oldrev: fb15abdc9b61a0b7fa24a37f85d19dc449cfd5bf X-Git-Newrev: 0e510ab53414430e93c6f5b64841e2f40031cda7 Message-Id: <20211119084850.6F998385800F@sourceware.org> Date: Fri, 19 Nov 2021 08:48:50 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2021 08:48:50 -0000 https://gcc.gnu.org/g:0e510ab53414430e93c6f5b64841e2f40031cda7 commit r12-5396-g0e510ab53414430e93c6f5b64841e2f40031cda7 Author: Tamar Christina 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::_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 };