diff options
author | Joerg Wunsch <joerg@FreeBSD.org> | 2023-09-23 20:43:27 +0000 |
---|---|---|
committer | Joerg Wunsch <joerg@FreeBSD.org> | 2023-09-23 20:46:17 +0000 |
commit | 6275155b90de11398a1d105b053732313e7c1e7a (patch) | |
tree | 2f2160f3990d3dda173e68d53c040dea4f0477c7 | |
parent | 5c7c91ffbfc73c9945cd67334be202711ec47441 (diff) | |
download | ports-6275155b90de11398a1d105b053732313e7c1e7a.tar.gz ports-6275155b90de11398a1d105b053732313e7c1e7a.zip |
devel/avr-gcc: Fix build with libc++ 17
gcc/system.h includes safe-ctype.h which redefines ctype macros such
as toupper, tolower, etc to "poison" them.
However, it should only include the safe-ctype.h header *after* any
C++ headers, such as <list>, <map>, <string>, etc, otherwise these
might transitively include internal ctype headers (such as with libc++
17), causing compilation errors.
PR: 274038
Reported by: dim
-rw-r--r-- | devel/avr-gcc/Makefile | 2 | ||||
-rw-r--r-- | devel/avr-gcc/files/patch-gcc_system.h | 42 |
2 files changed, 43 insertions, 1 deletions
diff --git a/devel/avr-gcc/Makefile b/devel/avr-gcc/Makefile index 61fe35a14226..bb11c44a37bd 100644 --- a/devel/avr-gcc/Makefile +++ b/devel/avr-gcc/Makefile @@ -1,6 +1,6 @@ PORTNAME= gcc PORTVERSION= 11.2.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= devel MASTER_SITES= GCC PKGNAMEPREFIX= avr- diff --git a/devel/avr-gcc/files/patch-gcc_system.h b/devel/avr-gcc/files/patch-gcc_system.h new file mode 100644 index 000000000000..4cb52e33f571 --- /dev/null +++ b/devel/avr-gcc/files/patch-gcc_system.h @@ -0,0 +1,42 @@ +--- gcc/system.h.orig 2021-07-28 06:55:07 UTC ++++ gcc/system.h +@@ -203,19 +203,6 @@ extern int fprintf_unlocked (FILE *, const char *, ... + #endif + #endif + +-/* There are an extraordinary number of issues with <ctype.h>. +- The last straw is that it varies with the locale. Use libiberty's +- replacement instead. */ +-#include "safe-ctype.h" +- +-#include <sys/types.h> +- +-#include <errno.h> +- +-#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO +-extern int errno; +-#endif +- + #ifdef __cplusplus + #if defined (INCLUDE_ALGORITHM) || !defined (HAVE_SWAP_IN_UTILITY) + # include <algorithm> +@@ -242,6 +229,19 @@ extern int errno; + # include <new> + # include <utility> + # include <type_traits> ++#endif ++ ++/* There are an extraordinary number of issues with <ctype.h>. ++ The last straw is that it varies with the locale. Use libiberty's ++ replacement instead. */ ++#include "safe-ctype.h" ++ ++#include <sys/types.h> ++ ++#include <errno.h> ++ ++#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO ++extern int errno; + #endif + + /* Some of glibc's string inlines cause warnings. Plus we'd rather |