<pre style='margin:0'>
Marcus Calhoun-Lopez (MarcusCalhoun-Lopez) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/2b8cb149bec3a30f7608c0454cde8e816ade5a46">https://github.com/macports/macports-ports/commit/2b8cb149bec3a30f7608c0454cde8e816ade5a46</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 2b8cb149bec gcc12, gcc13: fix build with recent libc++
</span>2b8cb149bec is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 2b8cb149bec3a30f7608c0454cde8e816ade5a46
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Wed Mar 27 20:00:10 2024 -0700

<span style='display:block; white-space:pre;color:#404040;'>    gcc12, gcc13: fix build with recent libc++
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    No revbump since ports build correctly or not at all.
</span>---
 lang/gcc12/Portfile                              |   3 +
 lang/gcc12/files/patch-avoid-over-poisoning.diff | 136 +++++++++++++++++++++++
 lang/gcc13/Portfile                              |   3 +
 lang/gcc13/files/patch-avoid-over-poisoning.diff | 136 +++++++++++++++++++++++
 4 files changed, 278 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc12/Portfile b/lang/gcc12/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index bf0281f66bb..9ecbe8ad8ea 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/gcc12/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc12/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -178,6 +178,9 @@ if { ${os.platform} eq "darwin" } {
</span> #  - https://github.com/gcc-mirror/gcc/commit/b410cf1dc056aab195c5408871ffca932df8a78a
 patchfiles-append   patch-gcc10-disable-macports-cctools-as-changes.diff
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-avoid-over-poisoning.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.env-append \
                     DISABLE_MACPORTS_AS_CLANG_SEARCH=1 \
                     DISABLE_XCODE_AS_CLANG_SEARCH=1
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc12/files/patch-avoid-over-poisoning.diff b/lang/gcc12/files/patch-avoid-over-poisoning.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1f801969bbf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc12/files/patch-avoid-over-poisoning.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,136 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9970b576b7e4ae337af1268395ff221348c4b34a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 7 Mar 2024 14:36:03 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Include safe-ctype.h after C++ standard headers, to avoid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ over-poisoning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When building gcc's C++ sources against recent libc++, the poisoning of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the ctype macros due to including safe-ctype.h before including C++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+standard headers such as <list>, <map>, etc, causes many compilation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+errors, similar to:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/gensupport.cc:23:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/system.h:233:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/vector:321:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_bool.h:20:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_integral.h:32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/locale:202:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__locale:546:5: error: '__abi_tag__' attribute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  only applies to structs, variables, functions, and namespaces
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    546 |     _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |     ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__config:813:37: note: expanded from macro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  '_LIBCPP_INLINE_VISIBILITY'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    813 | #  define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                                     ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__config:792:26: note: expanded from macro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  '_LIBCPP_HIDE_FROM_ABI'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    792 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    __attribute__((__abi_tag__(_LIBCPP_TOSTRING(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  _LIBCPP_VERSIONED_IDENTIFIER))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                          ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/gensupport.cc:23:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/system.h:233:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/vector:321:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_bool.h:20:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_integral.h:32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/locale:202:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__locale:547:37: error: expected ';' at end of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  declaration list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    547 |     char_type toupper(char_type __c) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                                     ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__locale:553:48: error: too many arguments
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  provided to function-like macro invocation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    553 |     const char_type* toupper(char_type* __low, const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    char_type* __high) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                                                ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /home/dim/src/gcc/master/gcc/../include/safe-ctype.h:146:9: note:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  macro 'toupper' defined here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    146 | #define toupper(c) do_not_use_toupper_with_safe_ctype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |         ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is because libc++ uses different transitive includes than
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+libstdc++, and some of those transitive includes pull in various ctype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+declarations (typically via <locale>).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There was already a special case for including <string> before
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+safe-ctype.h, so move the rest of the C++ standard header includes to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the same location, to fix the problem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+gcc/ChangeLog:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   * system.h: Include safe-ctype.h after C++ standard headers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Dimitry Andric <dimitry@andric.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gcc/system.h | 39 ++++++++++++++++++---------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 18 insertions(+), 21 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/gcc/system.h b/gcc/system.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b0edab0288548..ab29fc1977644 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- gcc/system.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ gcc/system.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -194,27 +194,8 @@ extern int fprintf_unlocked (FILE *, const char *, ...);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef fread_unlocked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef fwrite_unlocked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* Include <string> before "safe-ctype.h" to avoid GCC poisoning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   the ctype macros through safe-ctype.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef INCLUDE_STRING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* There are an extraordinary number of issues with <ctype.h>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   The last straw is that it varies with the locale.  Use libiberty's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   replacement instead.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include "safe-ctype.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Include C++ standard headers before "safe-ctype.h" to avoid GCC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   poisoning the ctype macros through safe-ctype.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined (INCLUDE_ALGORITHM) || !defined (HAVE_SWAP_IN_UTILITY)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -229,6 +210,9 @@ extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef INCLUDE_SET
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <set>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef INCLUDE_STRING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef INCLUDE_VECTOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <vector>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -245,6 +229,19 @@ extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <type_traits>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* There are an extraordinary number of issues with <ctype.h>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   The last straw is that it varies with the locale.  Use libiberty's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   replacement instead.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "safe-ctype.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Some of glibc's string inlines cause warnings.  Plus we'd rather
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    rely on (and therefore test) GCC's string builtins.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __NO_STRING_INLINES
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc13/Portfile b/lang/gcc13/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index dd562ef6297..899a34a4b10 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/gcc13/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc13/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -173,6 +173,9 @@ if { ${os.platform} eq "darwin" } {
</span> #  - https://github.com/gcc-mirror/gcc/commit/b410cf1dc056aab195c5408871ffca932df8a78a
 patchfiles-append   patch-gcc10-disable-macports-cctools-as-changes.diff
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-avoid-over-poisoning.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.env-append \
                     DISABLE_MACPORTS_AS_CLANG_SEARCH=1 \
                     DISABLE_XCODE_AS_CLANG_SEARCH=1
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc13/files/patch-avoid-over-poisoning.diff b/lang/gcc13/files/patch-avoid-over-poisoning.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1f801969bbf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc13/files/patch-avoid-over-poisoning.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,136 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9970b576b7e4ae337af1268395ff221348c4b34a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 7 Mar 2024 14:36:03 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Include safe-ctype.h after C++ standard headers, to avoid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ over-poisoning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When building gcc's C++ sources against recent libc++, the poisoning of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the ctype macros due to including safe-ctype.h before including C++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+standard headers such as <list>, <map>, etc, causes many compilation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+errors, similar to:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/gensupport.cc:23:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/system.h:233:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/vector:321:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_bool.h:20:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_integral.h:32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/locale:202:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__locale:546:5: error: '__abi_tag__' attribute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  only applies to structs, variables, functions, and namespaces
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    546 |     _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |     ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__config:813:37: note: expanded from macro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  '_LIBCPP_INLINE_VISIBILITY'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    813 | #  define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                                     ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__config:792:26: note: expanded from macro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  '_LIBCPP_HIDE_FROM_ABI'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    792 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    __attribute__((__abi_tag__(_LIBCPP_TOSTRING(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  _LIBCPP_VERSIONED_IDENTIFIER))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                          ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/gensupport.cc:23:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /home/dim/src/gcc/master/gcc/system.h:233:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/vector:321:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_bool.h:20:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__format/formatter_integral.h:32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  In file included from /usr/include/c++/v1/locale:202:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__locale:547:37: error: expected ';' at end of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  declaration list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    547 |     char_type toupper(char_type __c) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                                     ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /usr/include/c++/v1/__locale:553:48: error: too many arguments
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  provided to function-like macro invocation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    553 |     const char_type* toupper(char_type* __low, const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    char_type* __high) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |                                                ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /home/dim/src/gcc/master/gcc/../include/safe-ctype.h:146:9: note:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  macro 'toupper' defined here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    146 | #define toupper(c) do_not_use_toupper_with_safe_ctype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        |         ^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is because libc++ uses different transitive includes than
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+libstdc++, and some of those transitive includes pull in various ctype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+declarations (typically via <locale>).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There was already a special case for including <string> before
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+safe-ctype.h, so move the rest of the C++ standard header includes to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the same location, to fix the problem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+gcc/ChangeLog:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   * system.h: Include safe-ctype.h after C++ standard headers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Dimitry Andric <dimitry@andric.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gcc/system.h | 39 ++++++++++++++++++---------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 18 insertions(+), 21 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/gcc/system.h b/gcc/system.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b0edab0288548..ab29fc1977644 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- gcc/system.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ gcc/system.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -194,27 +194,8 @@ extern int fprintf_unlocked (FILE *, const char *, ...);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef fread_unlocked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef fwrite_unlocked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* Include <string> before "safe-ctype.h" to avoid GCC poisoning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   the ctype macros through safe-ctype.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef INCLUDE_STRING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* There are an extraordinary number of issues with <ctype.h>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   The last straw is that it varies with the locale.  Use libiberty's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   replacement instead.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include "safe-ctype.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Include C++ standard headers before "safe-ctype.h" to avoid GCC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   poisoning the ctype macros through safe-ctype.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined (INCLUDE_ALGORITHM) || !defined (HAVE_SWAP_IN_UTILITY)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -229,6 +210,9 @@ extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef INCLUDE_SET
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <set>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef INCLUDE_STRING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef INCLUDE_VECTOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <vector>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -245,6 +229,19 @@ extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <type_traits>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* There are an extraordinary number of issues with <ctype.h>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   The last straw is that it varies with the locale.  Use libiberty's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   replacement instead.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "safe-ctype.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern int errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Some of glibc's string inlines cause warnings.  Plus we'd rather
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    rely on (and therefore test) GCC's string builtins.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __NO_STRING_INLINES
</span></pre><pre style='margin:0'>

</pre>