From 8e55ab0607c01fc8a443bdac41c2d947db8830fb Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Tue, 9 May 2023 20:14:51 +1200 Subject: gcc: Add 12.3.0 Add gcc 12.3.0 and regenerate patches against the new version. https://gcc.gnu.org/pipermail/gcc-announce/2023/000176.html https://gcc.gnu.org/gcc-12/changes.html Signed-off-by: Chris Packham --- .../0000-libtool-leave-framework-alone.patch | 18 -- ...001-gcc-plugin-POSIX-include-sys-select-h.patch | 14 -- .../gcc/12.2.0/0002-arm-softfloat-libgcc.patch | 31 --- ...0003-libgcc-disable-split-stack-nothreads.patch | 17 -- ...Remove-use-of-include_next-from-c-headers.patch | 262 --------------------- ...default-libc-to-be-specified-to-configure.patch | 134 ----------- ...nd-getenv-function-to-allow-default-value.patch | 95 -------- ...and-picolibc-as-default-C-library-choices.patch | 37 --- .../gcc/12.2.0/0008-Support-picolibc-targets.patch | 33 --- ...-gcc-Allow-g-to-work-differently-from-gcc.patch | 60 ----- packages/gcc/12.2.0/chksum | 8 - ...d-custom-spec-file-fragments-for-using-pi.patch | 138 ----------- packages/gcc/12.2.0/version.desc | 0 .../0000-libtool-leave-framework-alone.patch | 18 ++ ...001-gcc-plugin-POSIX-include-sys-select-h.patch | 14 ++ .../gcc/12.3.0/0002-arm-softfloat-libgcc.patch | 31 +++ ...0003-libgcc-disable-split-stack-nothreads.patch | 17 ++ ...Remove-use-of-include_next-from-c-headers.patch | 262 +++++++++++++++++++++ ...default-libc-to-be-specified-to-configure.patch | 134 +++++++++++ ...nd-getenv-function-to-allow-default-value.patch | 95 ++++++++ ...and-picolibc-as-default-C-library-choices.patch | 37 +++ .../gcc/12.3.0/0008-Support-picolibc-targets.patch | 33 +++ ...-gcc-Allow-g-to-work-differently-from-gcc.patch | 60 +++++ packages/gcc/12.3.0/chksum | 8 + ...d-custom-spec-file-fragments-for-using-pi.patch | 138 +++++++++++ packages/gcc/12.3.0/version.desc | 0 26 files changed, 847 insertions(+), 847 deletions(-) delete mode 100644 packages/gcc/12.2.0/0000-libtool-leave-framework-alone.patch delete mode 100644 packages/gcc/12.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch delete mode 100644 packages/gcc/12.2.0/0002-arm-softfloat-libgcc.patch delete mode 100644 packages/gcc/12.2.0/0003-libgcc-disable-split-stack-nothreads.patch delete mode 100644 packages/gcc/12.2.0/0004-Remove-use-of-include_next-from-c-headers.patch delete mode 100644 packages/gcc/12.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch delete mode 100644 packages/gcc/12.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch delete mode 100644 packages/gcc/12.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch delete mode 100644 packages/gcc/12.2.0/0008-Support-picolibc-targets.patch delete mode 100644 packages/gcc/12.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch delete mode 100644 packages/gcc/12.2.0/chksum delete mode 100644 packages/gcc/12.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch delete mode 100644 packages/gcc/12.2.0/version.desc create mode 100644 packages/gcc/12.3.0/0000-libtool-leave-framework-alone.patch create mode 100644 packages/gcc/12.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch create mode 100644 packages/gcc/12.3.0/0002-arm-softfloat-libgcc.patch create mode 100644 packages/gcc/12.3.0/0003-libgcc-disable-split-stack-nothreads.patch create mode 100644 packages/gcc/12.3.0/0004-Remove-use-of-include_next-from-c-headers.patch create mode 100644 packages/gcc/12.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch create mode 100644 packages/gcc/12.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch create mode 100644 packages/gcc/12.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch create mode 100644 packages/gcc/12.3.0/0008-Support-picolibc-targets.patch create mode 100644 packages/gcc/12.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch create mode 100644 packages/gcc/12.3.0/chksum create mode 100644 packages/gcc/12.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch create mode 100644 packages/gcc/12.3.0/version.desc (limited to 'packages/gcc') diff --git a/packages/gcc/12.2.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/12.2.0/0000-libtool-leave-framework-alone.patch deleted file mode 100644 index 1a86e415..00000000 --- a/packages/gcc/12.2.0/0000-libtool-leave-framework-alone.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- - libtool-ldflags | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/libtool-ldflags -+++ b/libtool-ldflags -@@ -36,6 +36,11 @@ - for arg - do - case $arg in -+ -framework) -+ # libtool handles this option. It should not be prefixed with -+ # -Xcompiler, as that would split it from the argument that -+ # follows. -+ ;; - -f*|--*|-static-lib*|-shared-lib*|-B*) - # Libtool does not ascribe any special meaning options - # that begin with -f or with a double-dash. So, it will diff --git a/packages/gcc/12.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/12.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch deleted file mode 100644 index 5f9a07a2..00000000 --- a/packages/gcc/12.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- - libcc1/connection.cc | 1 + - 1 file changed, 1 insertion(+) - ---- a/libcc1/connection.cc -+++ b/libcc1/connection.cc -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - #include "marshall.hh" diff --git a/packages/gcc/12.2.0/0002-arm-softfloat-libgcc.patch b/packages/gcc/12.2.0/0002-arm-softfloat-libgcc.patch deleted file mode 100644 index d9800365..00000000 --- a/packages/gcc/12.2.0/0002-arm-softfloat-libgcc.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- - gcc/config/arm/linux-elf.h | 2 +- - libgcc/config/arm/t-linux | 7 ++++++- - 2 files changed, 7 insertions(+), 2 deletions(-) - ---- a/gcc/config/arm/linux-elf.h -+++ b/gcc/config/arm/linux-elf.h -@@ -58,7 +58,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" - ---- a/libgcc/config/arm/t-linux -+++ b/libgcc/config/arm/t-linux -@@ -1,6 +1,11 @@ - LIB1ASMSRC = arm/lib1funcs.S - LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ -- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 -+ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ -+ _arm_addsubdf3 _arm_addsubsf3 \ -+ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ -+ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ -+ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ -+ _arm_fixsfsi _arm_fixunssfsi - - # Just for these, we omit the frame pointer since it makes such a big - # difference. diff --git a/packages/gcc/12.2.0/0003-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/12.2.0/0003-libgcc-disable-split-stack-nothreads.patch deleted file mode 100644 index df91a9ff..00000000 --- a/packages/gcc/12.2.0/0003-libgcc-disable-split-stack-nothreads.patch +++ /dev/null @@ -1,17 +0,0 @@ -disable split-stack for non-thread builds - -Signed-off-by: Waldemar Brodkorb - ---- - libgcc/config/t-stack | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/libgcc/config/t-stack -+++ b/libgcc/config/t-stack -@@ -1,4 +1,6 @@ - # Makefile fragment to provide generic support for -fsplit-stack. - # This should be used in config.host for any host which supports - # -fsplit-stack. -+ifeq ($(enable_threads),yes) - LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c -+endif diff --git a/packages/gcc/12.2.0/0004-Remove-use-of-include_next-from-c-headers.patch b/packages/gcc/12.2.0/0004-Remove-use-of-include_next-from-c-headers.patch deleted file mode 100644 index 920e64da..00000000 --- a/packages/gcc/12.2.0/0004-Remove-use-of-include_next-from-c-headers.patch +++ /dev/null @@ -1,262 +0,0 @@ -From 9db1164d68ee1da7434af48db4f828d7df51b055 Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Sun, 24 Jan 2021 14:20:33 -0800 -Subject: [PATCH] Remove use of include_next from c++ headers - -Using include_next bypasses the default header search path and lets -files later in the include path take priority over earlier files. - -This makes replacing libc impossible as the default libc headers will -occur after the libstdc++ headers, and so be picked up in place of -headers inserted at the begining of the search path or appended to the -end of the search path. - -Using include_next is a hack to work-around broken combinations of -libraries, and is not necessary in a well constructed toolchain. - -Signed-off-by: Keith Packard ---- - libstdc++-v3/include/bits/std_abs.h | 4 ++-- - libstdc++-v3/include/c/cassert | 2 +- - libstdc++-v3/include/c/cctype | 2 +- - libstdc++-v3/include/c/cerrno | 2 +- - libstdc++-v3/include/c/cfloat | 2 +- - libstdc++-v3/include/c/climits | 2 +- - libstdc++-v3/include/c/clocale | 2 +- - libstdc++-v3/include/c/cmath | 2 +- - libstdc++-v3/include/c/csetjmp | 2 +- - libstdc++-v3/include/c/csignal | 2 +- - libstdc++-v3/include/c/cstdarg | 2 +- - libstdc++-v3/include/c/cstddef | 2 +- - libstdc++-v3/include/c/cstdio | 2 +- - libstdc++-v3/include/c/cstdlib | 2 +- - libstdc++-v3/include/c/cstring | 2 +- - libstdc++-v3/include/c/ctime | 2 +- - libstdc++-v3/include/c/cuchar | 2 +- - libstdc++-v3/include/c/cwchar | 2 +- - libstdc++-v3/include/c/cwctype | 2 +- - libstdc++-v3/include/c_global/cmath | 2 +- - libstdc++-v3/include/c_global/cstdlib | 2 +- - 21 files changed, 22 insertions(+), 22 deletions(-) - ---- a/libstdc++-v3/include/bits/std_abs.h -+++ b/libstdc++-v3/include/bits/std_abs.h -@@ -35,9 +35,9 @@ - #include - - #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS --#include_next -+#include - #ifdef __CORRECT_ISO_CPP_MATH_H_PROTO --# include_next -+# include - #endif - #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS - ---- a/libstdc++-v3/include/c/cassert -+++ b/libstdc++-v3/include/c/cassert -@@ -31,4 +31,4 @@ - #pragma GCC system_header - - #include --#include_next -+#include ---- a/libstdc++-v3/include/c/cctype -+++ b/libstdc++-v3/include/c/cctype -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cerrno -+++ b/libstdc++-v3/include/c/cerrno -@@ -41,7 +41,7 @@ - #pragma GCC system_header - - #include --#include_next -+#include - - // Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 - #ifndef errno ---- a/libstdc++-v3/include/c/cfloat -+++ b/libstdc++-v3/include/c/cfloat -@@ -32,6 +32,6 @@ - #pragma GCC system_header - - #include --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/climits -+++ b/libstdc++-v3/include/c/climits -@@ -32,6 +32,6 @@ - #pragma GCC system_header - - #include --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/clocale -+++ b/libstdc++-v3/include/c/clocale -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cmath -+++ b/libstdc++-v3/include/c/cmath -@@ -33,7 +33,7 @@ - - #include - --#include_next -+#include - - // Get rid of those macros defined in in lieu of real functions. - #undef abs ---- a/libstdc++-v3/include/c/csetjmp -+++ b/libstdc++-v3/include/c/csetjmp -@@ -31,7 +31,7 @@ - - #pragma GCC system_header - --#include_next -+#include - - // Get rid of those macros defined in in lieu of real functions. - #undef longjmp ---- a/libstdc++-v3/include/c/csignal -+++ b/libstdc++-v3/include/c/csignal -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cstdarg -+++ b/libstdc++-v3/include/c/cstdarg -@@ -32,6 +32,6 @@ - #pragma GCC system_header - - #undef __need___va_list --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cstddef -+++ b/libstdc++-v3/include/c/cstddef -@@ -35,6 +35,6 @@ - #define __need_ptrdiff_t - #define __need_NULL - #define __need_offsetof --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cstdio -+++ b/libstdc++-v3/include/c/cstdio -@@ -31,7 +31,7 @@ - - #pragma GCC system_header - --#include_next -+#include - - // Get rid of those macros defined in in lieu of real functions. - #undef clearerr ---- a/libstdc++-v3/include/c/cstdlib -+++ b/libstdc++-v3/include/c/cstdlib -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cstring -+++ b/libstdc++-v3/include/c/cstring -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/ctime -+++ b/libstdc++-v3/include/c/ctime -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next -+#include - - #endif ---- a/libstdc++-v3/include/c/cuchar -+++ b/libstdc++-v3/include/c/cuchar -@@ -39,7 +39,7 @@ - #include - - #if _GLIBCXX_USE_C11_UCHAR_CXX11 --# include_next -+# include - #endif - - #endif // C++11 ---- a/libstdc++-v3/include/c/cwchar -+++ b/libstdc++-v3/include/c/cwchar -@@ -36,7 +36,7 @@ - #include - - #if _GLIBCXX_HAVE_WCHAR_H --#include_next -+#include - #endif - - // Need to do a bit of trickery here with mbstate_t as char_traits ---- a/libstdc++-v3/include/c/cwctype -+++ b/libstdc++-v3/include/c/cwctype -@@ -34,7 +34,7 @@ - #include - - #if _GLIBCXX_HAVE_WCTYPE_H --#include_next -+#include - #endif - - #endif ---- a/libstdc++-v3/include/c_global/cmath -+++ b/libstdc++-v3/include/c_global/cmath -@@ -42,7 +42,7 @@ - #include - #include - #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS --#include_next -+#include - #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS - #include - ---- a/libstdc++-v3/include/c_global/cstdlib -+++ b/libstdc++-v3/include/c_global/cstdlib -@@ -72,7 +72,7 @@ - // Need to ensure this finds the C library's not a libstdc++ - // wrapper that might already be installed later in the include search path. - #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS --#include_next -+#include - #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS - #include - diff --git a/packages/gcc/12.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch b/packages/gcc/12.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch deleted file mode 100644 index 113a982a..00000000 --- a/packages/gcc/12.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch +++ /dev/null @@ -1,134 +0,0 @@ -From e55524baedbf2dc94b5159373c2b71049bdde1a8 Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Fri, 2 Sep 2022 23:07:05 -0700 -Subject: [PATCH 5/9] Allow default libc to be specified to configure - -The default C library is normally computed based on the target -triplet. However, for embedded systems, it can be useful to leave the -triplet alone while changing which C library is used by default. Other -C libraries may still be available on the system so the compiler and -can be used by specifying suitable include and library paths at build -time. - -If an unknown --with-default-libc= value is provided, emit an error -and stop. - -Signed-off-by: Keith Packard ---- - gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++-------- - gcc/configure.ac | 4 ++++ - 2 files changed, 44 insertions(+), 8 deletions(-) - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -648,6 +648,8 @@ - # Common C libraries. - tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" - -+default_libc="" -+ - # 32-bit x86 processors supported by --with-arch=. Each processor - # MUST be separated by exactly one space. - x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \ -@@ -854,16 +856,16 @@ - esac - case $target in - *-*-*android*) -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC" -+ default_libc=LIBC_BIONIC - ;; - *-*-*uclibc* | *-*-uclinuxfdpiceabi) -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" -+ default_libc=LIBC_UCLIBC - ;; - *-*-*musl*) -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" -+ default_libc=LIBC_MUSL - ;; - *) -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" -+ default_libc=LIBC_GLIBC - ;; - esac - # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit -@@ -956,7 +958,8 @@ - case ${enable_threads} in - "" | yes | posix) thread_file='posix' ;; - esac -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC" -+ tm_defines="$tm_defines SINGLE_LIBC" -+ default_libc=LIBC_UCLIBC - ;; - *-*-rdos*) - use_gcc_stdint=wrap -@@ -1606,13 +1609,13 @@ - - case ${target} in - csky-*-linux-gnu*) -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" -+ default_libc=LIBC_GLIBC - # Force .init_array support. The configure script cannot always - # automatically detect that GAS supports it, yet we require it. - gcc_cv_initfini_array=yes - ;; - csky-*-linux-uclibc*) -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" -+ default_libc=LIBC_UCLIBC - default_use_cxa_atexit=no - ;; - *) -@@ -3065,7 +3068,7 @@ - tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm" - tmake_file="${tmake_file} rs6000/t-vxworks" - -- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" -+ default_libc=LIBC_GLIBC - extra_objs="$extra_objs linux.o rs6000-linux.o" - ;; - powerpc-wrs-vxworks*) -@@ -5915,3 +5918,32 @@ - fi - ;; - esac -+ -+case "${with_default_libc}" in -+glibc) -+ default_libc=LIBC_GLIBC -+ ;; -+uclibc) -+ default_libc=LIBC_UCLIBC -+ ;; -+bionic) -+ default_libc=LIBC_BIONIC -+ ;; -+musl) -+ default_libc=LIBC_MUSL -+ ;; -+"") -+ ;; -+*) -+ echo "Unknown libc in --with-default-libc=$with_default_libc" 1>&2 -+ exit 1 -+ ;; -+esac -+ -+case "$default_libc" in -+"") -+ ;; -+*) -+ tm_defines="$tm_defines DEFAULT_LIBC=$default_libc" -+ ;; -+esac ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -2481,6 +2481,10 @@ - fi - AC_SUBST(inhibit_libc) - -+AC_ARG_WITH(default-libc, -+ [AS_HELP_STRING([--with-default-libc], -+ [Use specified default C library])]) -+ - # When building gcc with a cross-compiler, we need to adjust things so - # that the generator programs are still built with the native compiler. - # Also, we cannot run fixincludes. diff --git a/packages/gcc/12.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch b/packages/gcc/12.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch deleted file mode 100644 index 32341c48..00000000 --- a/packages/gcc/12.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch +++ /dev/null @@ -1,95 +0,0 @@ -From fff469f89d865ef3c15efe8e6b0511ea4d48603d Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Fri, 26 Aug 2022 14:30:03 -0700 -Subject: [PATCH 6/6] driver: Extend 'getenv' function to allow default value - -Right now, a missing environment variable provided to the 'getenv' -function in a .specs file causes a fatal error. That makes writing a -spec file that uses the GCC_EXEC_PREFIX value difficult as that -variable is only set when the driver has been relocated, but not when -run from the defined location. This makes building a relocatable -toolchain difficult to extend to other ancilary pieces which use specs -files to locate header and library files adjacent to the toolchain. - -This patch adds an optional third argument to the getenv function that -can be used to fall back to the standard installation path when the -driver hasn't set GCC_EXEC_PREFIX in the environment. - -For example, if an alternate C library is installed in -${prefix}/extra, then this change allows the specs file to locate that -relative to the gcc directory, if gcc is located in the original -installation directory (which would leave GCC_EXEC_PREFIX unset), or -if the gcc tree has been moved to a different location (where gcc -would set GCC_EXEC_PREFIX itself): - -*cpp: --isystem %:getenv(GCC_EXEC_PREFIX ../../extra/include ${prefix}/extra/include) - -I considered changing the behavior of either the %R sequence so that -it had a defined behavior when there was no sysroot defined, or making -the driver always set the GCC_EXEC_PREFIX environment variable and -decided that the approach of adding functionality to getenv where it -was previously invalid would cause the least potential for affecting -existing usage. - -Signed-off-by: Keith Packard ---- - gcc/doc/invoke.texi | 18 +++++++++++------- - gcc/gcc.cc | 10 +++++++++- - 2 files changed, 20 insertions(+), 8 deletions(-) - ---- a/gcc/doc/invoke.texi -+++ b/gcc/doc/invoke.texi -@@ -33776,17 +33776,21 @@ - - @table @code - @item @code{getenv} --The @code{getenv} spec function takes two arguments: an environment --variable name and a string. If the environment variable is not --defined, a fatal error is issued. Otherwise, the return value is the --value of the environment variable concatenated with the string. For --example, if @env{TOPDIR} is defined as @file{/path/to/top}, then: -+ -+The @code{getenv} spec function takes two or three arguments: an -+environment variable name, a string and an optional default value. If -+the environment variable is not defined and a default value is -+provided, that is used as the return value; otherwise a fatal error is -+issued. Otherwise, the return value is the value of the environment -+variable concatenated with the string. For example, if @env{TOPDIR} -+is defined as @file{/path/to/top}, then: - - @smallexample --%:getenv(TOPDIR /include) -+%:getenv(TOPDIR /include /path/to/default/include) - @end smallexample - --expands to @file{/path/to/top/include}. -+expands to @file{/path/to/top/include}. If @env{TOPDIR} is not -+defined, then this expands to @file{/path/to/default/include}. - - @item @code{if-exists} - The @code{if-exists} spec function takes one argument, an absolute ---- a/gcc/gcc.cc -+++ b/gcc/gcc.cc -@@ -10194,12 +10194,20 @@ - char *ptr; - size_t len; - -- if (argc != 2) -+ if (argc != 2 && argc != 3) - return NULL; - - varname = argv[0]; - value = env.get (varname); - -+ if (!value && argc == 3) -+ { -+ value = argv[2]; -+ result = XNEWVAR(char, strlen(value) + 1); -+ strcpy(result, value); -+ return result; -+ } -+ - /* If the variable isn't defined and this is allowed, craft our expected - return value. Assume variable names used in specs strings don't contain - any active spec character so don't need escaping. */ diff --git a/packages/gcc/12.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch b/packages/gcc/12.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch deleted file mode 100644 index 59169b70..00000000 --- a/packages/gcc/12.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 2e3918a283c1c9fb3b4775fe96a56e430748579a Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Tue, 23 Aug 2022 22:12:06 -0700 -Subject: [PATCH 6/9] Add newlib and picolibc as default C library choices - -Signed-off-by: Keith Packard ---- - gcc/config.gcc | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -646,7 +646,7 @@ - esac - - # Common C libraries. --tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" -+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4 LIBC_NEWLIB=5 LIBC_PICOLIBC=6" - - default_libc="" - -@@ -5932,6 +5932,15 @@ - musl) - default_libc=LIBC_MUSL - ;; -+newlib) -+ # Newlib configurations don't set the DEFAULT_LIBC variable, so -+ # avoid changing those by allowing --with-default-libc=newlib but -+ # not actually setting the DEFAULT_LIBC variable. -+ default_libc= -+ ;; -+picolibc) -+ default_libc=LIBC_PICOLIBC -+ ;; - "") - ;; - *) diff --git a/packages/gcc/12.2.0/0008-Support-picolibc-targets.patch b/packages/gcc/12.2.0/0008-Support-picolibc-targets.patch deleted file mode 100644 index 776d9545..00000000 --- a/packages/gcc/12.2.0/0008-Support-picolibc-targets.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 41b20e994970f0ae63fb3f49c6f89a0b2f06aecb Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Sun, 12 Feb 2023 14:23:32 -0800 -Subject: [PATCH 7/9] Support picolibc targets - -Match *-picolibc-* and select picolibc as the default C library, plus continuing to use -the newlib-based logic for other configuration items. - -Signed-off-by: Keith Packard ---- - gcc/config.gcc | 11 +++++++++++ - 1 file changed, 11 insertions(+) - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -1082,6 +1082,17 @@ - ;; - esac - ;; -+*-picolibc-*) -+ # __cxa_atexit is provided. -+ default_use_cxa_atexit=yes -+ use_gcc_stdint=wrap -+ default_libc=LIBC_PICOLIBC -+ case "${with_newlib}-${with_headers}" in -+ no-no) use_gcc_stdint=provide ;; -+ *) ;; -+ esac -+ ;; -+ - *-*-elf|arc*-*-elf*) - # Assume that newlib is being used and so __cxa_atexit is provided. - default_use_cxa_atexit=yes diff --git a/packages/gcc/12.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch b/packages/gcc/12.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch deleted file mode 100644 index 5265c03a..00000000 --- a/packages/gcc/12.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch +++ /dev/null @@ -1,60 +0,0 @@ -From e426a20988185695675a2c456e0c24dcea515baf Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Sat, 11 Feb 2023 23:07:08 -0800 -Subject: [PATCH 8/9] gcc: Allow g++ to work differently from gcc - -Compile gcc.cc with -DIN_GPP defined when building g++ so that the -code can respond appropriately for the default target language. This -allows the driver to customize the specs used, selecting different -linker scripts, adjusting the use of crtbegin.o/crtend.o etc. - -By default, this change has no effect; targets need to explicitly -check for IN_GPP to have alternate behavior. - -Signed-off-by: Keith Packard ---- - gcc/cp/Make-lang.in | 7 ++++++- - gcc/gpp.cc | 21 +++++++++++++++++++++ - 2 files changed, 27 insertions(+), 1 deletion(-) - create mode 100644 gcc/gpp.cc - ---- a/gcc/cp/Make-lang.in -+++ b/gcc/cp/Make-lang.in -@@ -68,7 +68,12 @@ - endif - - # Create the compiler driver for g++. --GXX_OBJS = $(GCC_OBJS) cp/g++spec.o -+GXX_OBJS = $(GCC_OBJS:gcc.o=gpp.o) cp/g++spec.o -+ -+CFLAGS-gpp.o = $(CFLAGS-gcc.o) -+gpp.o: $(BASEVER) -+gpp.o: gcc.o -+ - xg++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) - +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ - $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ ---- /dev/null -+++ b/gcc/gpp.cc -@@ -0,0 +1,21 @@ -+/* Compiler driver program that can handle many languages. -+ Copyright (C) 1987-2022 Free Software Foundation, Inc. -+ -+This file is part of GCC. -+ -+GCC is free software; you can redistribute it and/or modify it under -+the terms of the GNU General Public License as published by the Free -+Software Foundation; either version 3, or (at your option) any later -+version. -+ -+GCC is distributed in the hope that it will be useful, but WITHOUT ANY -+WARRANTY; without even the implied warranty of MERCHANTABILITY or -+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GCC; see the file COPYING3. If not see -+. */ -+ -+#define IN_GPP -+#include "gcc.cc" diff --git a/packages/gcc/12.2.0/chksum b/packages/gcc/12.2.0/chksum deleted file mode 100644 index 52e3b629..00000000 --- a/packages/gcc/12.2.0/chksum +++ /dev/null @@ -1,8 +0,0 @@ -md5 gcc-12.2.0.tar.xz 73bafd0af874439dcdb9fc063b6fb069 -sha1 gcc-12.2.0.tar.xz 5dce6dc0091b8049b530d1587513a07201691760 -sha256 gcc-12.2.0.tar.xz e549cf9cf3594a00e27b6589d4322d70e0720cdd213f39beb4181e06926230ff -sha512 gcc-12.2.0.tar.xz e9e857bd81bf7a370307d6848c81b2f5403db8c7b5207f54bce3f3faac3bde63445684092c2bc1a2427cddb6f7746496d9fbbef05fbbd77f2810b2998f1f9173 -md5 gcc-12.2.0.tar.gz d7644b494246450468464ffc2c2b19c3 -sha1 gcc-12.2.0.tar.gz 528e27c3c4a0bb9b13ee2a4c53bb1cf048fc1fe4 -sha256 gcc-12.2.0.tar.gz ac6b317eb4d25444d87cf29c0d141dedc1323a1833ec9995211b13e1a851261c -sha512 gcc-12.2.0.tar.gz 36ab2267540f205b148037763b3806558e796d564ca7831799c88abcf03393c6dc2cdc9d53e8f094f6dc1245e47a406e1782604eb9d119410d406032f59c1544 diff --git a/packages/gcc/12.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch b/packages/gcc/12.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch deleted file mode 100644 index 0c4b90b5..00000000 --- a/packages/gcc/12.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch +++ /dev/null @@ -1,138 +0,0 @@ -From ad485aba918ea651987c6d153c2202a3efb5a75f Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Tue, 23 Aug 2022 22:13:08 -0700 -Subject: [PATCH 9/9] picolibc: Add custom spec file fragments for using - picolibc - -The '--oslib=' option allows targets to insert an OS library after the -C library in the LIB_PATH spec file fragment. This library maps a few -POSIX APIs used by picolibc to underlying system capabilities. - -The '--crt0=' option allows targets to use an alternate crt0 in place -of the usual one as provided by Picolibc. - -For example, picolibc provides 'libsemihost' and 'crt0-semihost.o' on -various targets which maps some POSIX APIs to semihosting capabilities -and signals the semihosting environment when 'main' returns. These -would be used by specifying --oslib=semihost --crt0=semihost. - -This patch also takes advantage of the IN_GPP conditional when -building g++ to elide exception handling contents from the executable -when not linking with the g++ driver. - -Signed-off-by: Keith Packard ---- - gcc/config.gcc | 7 +++++++ - gcc/config/picolibc.h | 44 +++++++++++++++++++++++++++++++++++++++++ - gcc/config/picolibc.opt | 33 +++++++++++++++++++++++++++++++ - 3 files changed, 84 insertions(+) - create mode 100644 gcc/config/picolibc.h - create mode 100644 gcc/config/picolibc.opt - -diff --git a/gcc/config.gcc b/gcc/config.gcc -index 06af4057079..94d53970ceb 100644 ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -5967,3 +5967,10 @@ case "$default_libc" in - tm_defines="$tm_defines DEFAULT_LIBC=$default_libc" - ;; - esac -+ -+case "$default_libc" in -+ LIBC_PICOLIBC) -+ extra_options="${extra_options} picolibc.opt" -+ tm_file="${tm_file} picolibc.h" -+ ;; -+esac -diff --git a/gcc/config/picolibc.h b/gcc/config/picolibc.h -new file mode 100644 -index 00000000000..d1d3fc44477 ---- /dev/null -+++ b/gcc/config/picolibc.h -@@ -0,0 +1,44 @@ -+/* Configuration common to all targets running Picolibc. -+ Copyright (C) 2023 Free Software Foundation, Inc. -+ -+ This file is part of GCC. -+ -+ GCC is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published -+ by the Free Software Foundation; either version 3, or (at your -+ option) any later version. -+ -+ GCC is distributed in the hope that it will be useful, but WITHOUT -+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -+ License for more details. -+ -+ Under Section 7 of GPL version 3, you are granted additional -+ permissions described in the GCC Runtime Library Exception, version -+ 3.1, as published by the Free Software Foundation. -+ -+ You should have received a copy of the GNU General Public License and -+ a copy of the GCC Runtime Library Exception along with this program; -+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -+ . */ -+ -+#ifdef IN_GPP -+#define PICOLIBC_LD "picolibcpp.ld" -+#define PICOLIBC_BEGIN " crtbegin%O%s" -+#define PICOLIBC_END "crtend%O%s" -+#else -+#define PICOLIBC_LD "picolibc.ld" -+#define PICOLIBC_BEGIN "" -+#define PICOLIBC_END "" -+#endif -+ -+#undef LIB_SPEC -+#define LIB_SPEC "%{!T:-T" PICOLIBC_LD "} --start-group -lc %{-oslib=*:-l%*} %(libgcc) --end-group" -+ -+#undef STARTFILE_SPEC -+#define STARTFILE_SPEC "%{-crt0=*:crt0-%*%O%s; :crt0%O%s}" PICOLIBC_BEGIN -+ -+#undef ENDFILE_SPEC -+#define ENDFILE_SPEC PICOLIBC_END -+ -+#define EH_TABLES_CAN_BE_READ_ONLY 1 -diff --git a/gcc/config/picolibc.opt b/gcc/config/picolibc.opt -new file mode 100644 -index 00000000000..39f81c446bb ---- /dev/null -+++ b/gcc/config/picolibc.opt -@@ -0,0 +1,33 @@ -+; Processor-independent options for picolibc. -+; -+; Copyright (C) 2022 Free Software Foundation, Inc. -+; -+; This file is part of GCC. -+; -+; GCC is free software; you can redistribute it and/or modify it under -+; the terms of the GNU General Public License as published by the Free -+; Software Foundation; either version 3, or (at your option) any later -+; version. -+; -+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY -+; WARRANTY; without even the implied warranty of MERCHANTABILITY or -+; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+; for more details. -+; -+; You should have received a copy of the GNU General Public License -+; along with GCC; see the file COPYING3. If not see -+; . -+ -+-oslib -+Driver Separate Alias(-oslib=) -+ -+-oslib= -+Driver Joined -+Specify an OS support library to load after libc. -+ -+-crt0 -+Driver Separate Alias(-crt0=) -+ -+-crt0= -+Driver Joined -+Specify an alternate startup file. --- -2.39.0 - diff --git a/packages/gcc/12.2.0/version.desc b/packages/gcc/12.2.0/version.desc deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/gcc/12.3.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/12.3.0/0000-libtool-leave-framework-alone.patch new file mode 100644 index 00000000..1a86e415 --- /dev/null +++ b/packages/gcc/12.3.0/0000-libtool-leave-framework-alone.patch @@ -0,0 +1,18 @@ +--- + libtool-ldflags | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/libtool-ldflags ++++ b/libtool-ldflags +@@ -36,6 +36,11 @@ + for arg + do + case $arg in ++ -framework) ++ # libtool handles this option. It should not be prefixed with ++ # -Xcompiler, as that would split it from the argument that ++ # follows. ++ ;; + -f*|--*|-static-lib*|-shared-lib*|-B*) + # Libtool does not ascribe any special meaning options + # that begin with -f or with a double-dash. So, it will diff --git a/packages/gcc/12.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/12.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch new file mode 100644 index 00000000..5f9a07a2 --- /dev/null +++ b/packages/gcc/12.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch @@ -0,0 +1,14 @@ +--- + libcc1/connection.cc | 1 + + 1 file changed, 1 insertion(+) + +--- a/libcc1/connection.cc ++++ b/libcc1/connection.cc +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include "marshall.hh" diff --git a/packages/gcc/12.3.0/0002-arm-softfloat-libgcc.patch b/packages/gcc/12.3.0/0002-arm-softfloat-libgcc.patch new file mode 100644 index 00000000..d9800365 --- /dev/null +++ b/packages/gcc/12.3.0/0002-arm-softfloat-libgcc.patch @@ -0,0 +1,31 @@ +--- + gcc/config/arm/linux-elf.h | 2 +- + libgcc/config/arm/t-linux | 7 ++++++- + 2 files changed, 7 insertions(+), 2 deletions(-) + +--- a/gcc/config/arm/linux-elf.h ++++ b/gcc/config/arm/linux-elf.h +@@ -58,7 +58,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + +--- a/libgcc/config/arm/t-linux ++++ b/libgcc/config/arm/t-linux +@@ -1,6 +1,11 @@ + LIB1ASMSRC = arm/lib1funcs.S + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++ _arm_fixsfsi _arm_fixunssfsi + + # Just for these, we omit the frame pointer since it makes such a big + # difference. diff --git a/packages/gcc/12.3.0/0003-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/12.3.0/0003-libgcc-disable-split-stack-nothreads.patch new file mode 100644 index 00000000..df91a9ff --- /dev/null +++ b/packages/gcc/12.3.0/0003-libgcc-disable-split-stack-nothreads.patch @@ -0,0 +1,17 @@ +disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb + +--- + libgcc/config/t-stack | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/libgcc/config/t-stack ++++ b/libgcc/config/t-stack +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif diff --git a/packages/gcc/12.3.0/0004-Remove-use-of-include_next-from-c-headers.patch b/packages/gcc/12.3.0/0004-Remove-use-of-include_next-from-c-headers.patch new file mode 100644 index 00000000..920e64da --- /dev/null +++ b/packages/gcc/12.3.0/0004-Remove-use-of-include_next-from-c-headers.patch @@ -0,0 +1,262 @@ +From 9db1164d68ee1da7434af48db4f828d7df51b055 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Sun, 24 Jan 2021 14:20:33 -0800 +Subject: [PATCH] Remove use of include_next from c++ headers + +Using include_next bypasses the default header search path and lets +files later in the include path take priority over earlier files. + +This makes replacing libc impossible as the default libc headers will +occur after the libstdc++ headers, and so be picked up in place of +headers inserted at the begining of the search path or appended to the +end of the search path. + +Using include_next is a hack to work-around broken combinations of +libraries, and is not necessary in a well constructed toolchain. + +Signed-off-by: Keith Packard +--- + libstdc++-v3/include/bits/std_abs.h | 4 ++-- + libstdc++-v3/include/c/cassert | 2 +- + libstdc++-v3/include/c/cctype | 2 +- + libstdc++-v3/include/c/cerrno | 2 +- + libstdc++-v3/include/c/cfloat | 2 +- + libstdc++-v3/include/c/climits | 2 +- + libstdc++-v3/include/c/clocale | 2 +- + libstdc++-v3/include/c/cmath | 2 +- + libstdc++-v3/include/c/csetjmp | 2 +- + libstdc++-v3/include/c/csignal | 2 +- + libstdc++-v3/include/c/cstdarg | 2 +- + libstdc++-v3/include/c/cstddef | 2 +- + libstdc++-v3/include/c/cstdio | 2 +- + libstdc++-v3/include/c/cstdlib | 2 +- + libstdc++-v3/include/c/cstring | 2 +- + libstdc++-v3/include/c/ctime | 2 +- + libstdc++-v3/include/c/cuchar | 2 +- + libstdc++-v3/include/c/cwchar | 2 +- + libstdc++-v3/include/c/cwctype | 2 +- + libstdc++-v3/include/c_global/cmath | 2 +- + libstdc++-v3/include/c_global/cstdlib | 2 +- + 21 files changed, 22 insertions(+), 22 deletions(-) + +--- a/libstdc++-v3/include/bits/std_abs.h ++++ b/libstdc++-v3/include/bits/std_abs.h +@@ -35,9 +35,9 @@ + #include + + #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +-#include_next ++#include + #ifdef __CORRECT_ISO_CPP_MATH_H_PROTO +-# include_next ++# include + #endif + #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS + +--- a/libstdc++-v3/include/c/cassert ++++ b/libstdc++-v3/include/c/cassert +@@ -31,4 +31,4 @@ + #pragma GCC system_header + + #include +-#include_next ++#include +--- a/libstdc++-v3/include/c/cctype ++++ b/libstdc++-v3/include/c/cctype +@@ -31,6 +31,6 @@ + + #pragma GCC system_header + +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cerrno ++++ b/libstdc++-v3/include/c/cerrno +@@ -41,7 +41,7 @@ + #pragma GCC system_header + + #include +-#include_next ++#include + + // Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 + #ifndef errno +--- a/libstdc++-v3/include/c/cfloat ++++ b/libstdc++-v3/include/c/cfloat +@@ -32,6 +32,6 @@ + #pragma GCC system_header + + #include +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/climits ++++ b/libstdc++-v3/include/c/climits +@@ -32,6 +32,6 @@ + #pragma GCC system_header + + #include +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/clocale ++++ b/libstdc++-v3/include/c/clocale +@@ -31,6 +31,6 @@ + + #pragma GCC system_header + +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cmath ++++ b/libstdc++-v3/include/c/cmath +@@ -33,7 +33,7 @@ + + #include + +-#include_next ++#include + + // Get rid of those macros defined in in lieu of real functions. + #undef abs +--- a/libstdc++-v3/include/c/csetjmp ++++ b/libstdc++-v3/include/c/csetjmp +@@ -31,7 +31,7 @@ + + #pragma GCC system_header + +-#include_next ++#include + + // Get rid of those macros defined in in lieu of real functions. + #undef longjmp +--- a/libstdc++-v3/include/c/csignal ++++ b/libstdc++-v3/include/c/csignal +@@ -31,6 +31,6 @@ + + #pragma GCC system_header + +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cstdarg ++++ b/libstdc++-v3/include/c/cstdarg +@@ -32,6 +32,6 @@ + #pragma GCC system_header + + #undef __need___va_list +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cstddef ++++ b/libstdc++-v3/include/c/cstddef +@@ -35,6 +35,6 @@ + #define __need_ptrdiff_t + #define __need_NULL + #define __need_offsetof +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cstdio ++++ b/libstdc++-v3/include/c/cstdio +@@ -31,7 +31,7 @@ + + #pragma GCC system_header + +-#include_next ++#include + + // Get rid of those macros defined in in lieu of real functions. + #undef clearerr +--- a/libstdc++-v3/include/c/cstdlib ++++ b/libstdc++-v3/include/c/cstdlib +@@ -31,6 +31,6 @@ + + #pragma GCC system_header + +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cstring ++++ b/libstdc++-v3/include/c/cstring +@@ -31,6 +31,6 @@ + + #pragma GCC system_header + +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/ctime ++++ b/libstdc++-v3/include/c/ctime +@@ -31,6 +31,6 @@ + + #pragma GCC system_header + +-#include_next ++#include + + #endif +--- a/libstdc++-v3/include/c/cuchar ++++ b/libstdc++-v3/include/c/cuchar +@@ -39,7 +39,7 @@ + #include + + #if _GLIBCXX_USE_C11_UCHAR_CXX11 +-# include_next ++# include + #endif + + #endif // C++11 +--- a/libstdc++-v3/include/c/cwchar ++++ b/libstdc++-v3/include/c/cwchar +@@ -36,7 +36,7 @@ + #include + + #if _GLIBCXX_HAVE_WCHAR_H +-#include_next ++#include + #endif + + // Need to do a bit of trickery here with mbstate_t as char_traits +--- a/libstdc++-v3/include/c/cwctype ++++ b/libstdc++-v3/include/c/cwctype +@@ -34,7 +34,7 @@ + #include + + #if _GLIBCXX_HAVE_WCTYPE_H +-#include_next ++#include + #endif + + #endif +--- a/libstdc++-v3/include/c_global/cmath ++++ b/libstdc++-v3/include/c_global/cmath +@@ -42,7 +42,7 @@ + #include + #include + #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +-#include_next ++#include + #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS + #include + +--- a/libstdc++-v3/include/c_global/cstdlib ++++ b/libstdc++-v3/include/c_global/cstdlib +@@ -72,7 +72,7 @@ + // Need to ensure this finds the C library's not a libstdc++ + // wrapper that might already be installed later in the include search path. + #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +-#include_next ++#include + #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS + #include + diff --git a/packages/gcc/12.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch b/packages/gcc/12.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch new file mode 100644 index 00000000..8204723e --- /dev/null +++ b/packages/gcc/12.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch @@ -0,0 +1,134 @@ +From e55524baedbf2dc94b5159373c2b71049bdde1a8 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Fri, 2 Sep 2022 23:07:05 -0700 +Subject: [PATCH 5/9] Allow default libc to be specified to configure + +The default C library is normally computed based on the target +triplet. However, for embedded systems, it can be useful to leave the +triplet alone while changing which C library is used by default. Other +C libraries may still be available on the system so the compiler and +can be used by specifying suitable include and library paths at build +time. + +If an unknown --with-default-libc= value is provided, emit an error +and stop. + +Signed-off-by: Keith Packard +--- + gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++-------- + gcc/configure.ac | 4 ++++ + 2 files changed, 44 insertions(+), 8 deletions(-) + +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -652,6 +652,8 @@ + # Common C libraries. + tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" + ++default_libc="" ++ + # 32-bit x86 processors supported by --with-arch=. Each processor + # MUST be separated by exactly one space. + x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \ +@@ -857,16 +859,16 @@ + esac + case $target in + *-*-*android*) +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC" ++ default_libc=LIBC_BIONIC + ;; + *-*-*uclibc* | *-*-uclinuxfdpiceabi) +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" ++ default_libc=LIBC_UCLIBC + ;; + *-*-*musl*) +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" ++ default_libc=LIBC_MUSL + ;; + *) +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" ++ default_libc=LIBC_GLIBC + ;; + esac + # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit +@@ -959,7 +961,8 @@ + case ${enable_threads} in + "" | yes | posix) thread_file='posix' ;; + esac +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC" ++ tm_defines="$tm_defines SINGLE_LIBC" ++ default_libc=LIBC_UCLIBC + ;; + *-*-rdos*) + use_gcc_stdint=wrap +@@ -1609,13 +1612,13 @@ + + case ${target} in + csky-*-linux-gnu*) +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" ++ default_libc=LIBC_GLIBC + # Force .init_array support. The configure script cannot always + # automatically detect that GAS supports it, yet we require it. + gcc_cv_initfini_array=yes + ;; + csky-*-linux-uclibc*) +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" ++ default_libc=LIBC_UCLIBC + default_use_cxa_atexit=no + ;; + *) +@@ -3068,7 +3071,7 @@ + tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm" + tmake_file="${tmake_file} rs6000/t-vxworks" + +- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" ++ default_libc=LIBC_GLIBC + extra_objs="$extra_objs linux.o rs6000-linux.o" + ;; + powerpc-wrs-vxworks*) +@@ -5925,3 +5928,32 @@ + fi + ;; + esac ++ ++case "${with_default_libc}" in ++glibc) ++ default_libc=LIBC_GLIBC ++ ;; ++uclibc) ++ default_libc=LIBC_UCLIBC ++ ;; ++bionic) ++ default_libc=LIBC_BIONIC ++ ;; ++musl) ++ default_libc=LIBC_MUSL ++ ;; ++"") ++ ;; ++*) ++ echo "Unknown libc in --with-default-libc=$with_default_libc" 1>&2 ++ exit 1 ++ ;; ++esac ++ ++case "$default_libc" in ++"") ++ ;; ++*) ++ tm_defines="$tm_defines DEFAULT_LIBC=$default_libc" ++ ;; ++esac +--- a/gcc/configure.ac ++++ b/gcc/configure.ac +@@ -2476,6 +2476,10 @@ + fi + AC_SUBST(inhibit_libc) + ++AC_ARG_WITH(default-libc, ++ [AS_HELP_STRING([--with-default-libc], ++ [Use specified default C library])]) ++ + # When building gcc with a cross-compiler, we need to adjust things so + # that the generator programs are still built with the native compiler. + # Also, we cannot run fixincludes. diff --git a/packages/gcc/12.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch b/packages/gcc/12.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch new file mode 100644 index 00000000..727206b4 --- /dev/null +++ b/packages/gcc/12.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch @@ -0,0 +1,95 @@ +From fff469f89d865ef3c15efe8e6b0511ea4d48603d Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Fri, 26 Aug 2022 14:30:03 -0700 +Subject: [PATCH 6/6] driver: Extend 'getenv' function to allow default value + +Right now, a missing environment variable provided to the 'getenv' +function in a .specs file causes a fatal error. That makes writing a +spec file that uses the GCC_EXEC_PREFIX value difficult as that +variable is only set when the driver has been relocated, but not when +run from the defined location. This makes building a relocatable +toolchain difficult to extend to other ancilary pieces which use specs +files to locate header and library files adjacent to the toolchain. + +This patch adds an optional third argument to the getenv function that +can be used to fall back to the standard installation path when the +driver hasn't set GCC_EXEC_PREFIX in the environment. + +For example, if an alternate C library is installed in +${prefix}/extra, then this change allows the specs file to locate that +relative to the gcc directory, if gcc is located in the original +installation directory (which would leave GCC_EXEC_PREFIX unset), or +if the gcc tree has been moved to a different location (where gcc +would set GCC_EXEC_PREFIX itself): + +*cpp: +-isystem %:getenv(GCC_EXEC_PREFIX ../../extra/include ${prefix}/extra/include) + +I considered changing the behavior of either the %R sequence so that +it had a defined behavior when there was no sysroot defined, or making +the driver always set the GCC_EXEC_PREFIX environment variable and +decided that the approach of adding functionality to getenv where it +was previously invalid would cause the least potential for affecting +existing usage. + +Signed-off-by: Keith Packard +--- + gcc/doc/invoke.texi | 18 +++++++++++------- + gcc/gcc.cc | 10 +++++++++- + 2 files changed, 20 insertions(+), 8 deletions(-) + +--- a/gcc/doc/invoke.texi ++++ b/gcc/doc/invoke.texi +@@ -33793,17 +33793,21 @@ + + @table @code + @item @code{getenv} +-The @code{getenv} spec function takes two arguments: an environment +-variable name and a string. If the environment variable is not +-defined, a fatal error is issued. Otherwise, the return value is the +-value of the environment variable concatenated with the string. For +-example, if @env{TOPDIR} is defined as @file{/path/to/top}, then: ++ ++The @code{getenv} spec function takes two or three arguments: an ++environment variable name, a string and an optional default value. If ++the environment variable is not defined and a default value is ++provided, that is used as the return value; otherwise a fatal error is ++issued. Otherwise, the return value is the value of the environment ++variable concatenated with the string. For example, if @env{TOPDIR} ++is defined as @file{/path/to/top}, then: + + @smallexample +-%:getenv(TOPDIR /include) ++%:getenv(TOPDIR /include /path/to/default/include) + @end smallexample + +-expands to @file{/path/to/top/include}. ++expands to @file{/path/to/top/include}. If @env{TOPDIR} is not ++defined, then this expands to @file{/path/to/default/include}. + + @item @code{if-exists} + The @code{if-exists} spec function takes one argument, an absolute +--- a/gcc/gcc.cc ++++ b/gcc/gcc.cc +@@ -10167,12 +10167,20 @@ + char *ptr; + size_t len; + +- if (argc != 2) ++ if (argc != 2 && argc != 3) + return NULL; + + varname = argv[0]; + value = env.get (varname); + ++ if (!value && argc == 3) ++ { ++ value = argv[2]; ++ result = XNEWVAR(char, strlen(value) + 1); ++ strcpy(result, value); ++ return result; ++ } ++ + /* If the variable isn't defined and this is allowed, craft our expected + return value. Assume variable names used in specs strings don't contain + any active spec character so don't need escaping. */ diff --git a/packages/gcc/12.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch b/packages/gcc/12.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch new file mode 100644 index 00000000..13fe02ae --- /dev/null +++ b/packages/gcc/12.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch @@ -0,0 +1,37 @@ +From 2e3918a283c1c9fb3b4775fe96a56e430748579a Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Tue, 23 Aug 2022 22:12:06 -0700 +Subject: [PATCH 6/9] Add newlib and picolibc as default C library choices + +Signed-off-by: Keith Packard +--- + gcc/config.gcc | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -650,7 +650,7 @@ + esac + + # Common C libraries. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4 LIBC_NEWLIB=5 LIBC_PICOLIBC=6" + + default_libc="" + +@@ -5942,6 +5942,15 @@ + musl) + default_libc=LIBC_MUSL + ;; ++newlib) ++ # Newlib configurations don't set the DEFAULT_LIBC variable, so ++ # avoid changing those by allowing --with-default-libc=newlib but ++ # not actually setting the DEFAULT_LIBC variable. ++ default_libc= ++ ;; ++picolibc) ++ default_libc=LIBC_PICOLIBC ++ ;; + "") + ;; + *) diff --git a/packages/gcc/12.3.0/0008-Support-picolibc-targets.patch b/packages/gcc/12.3.0/0008-Support-picolibc-targets.patch new file mode 100644 index 00000000..45968bb9 --- /dev/null +++ b/packages/gcc/12.3.0/0008-Support-picolibc-targets.patch @@ -0,0 +1,33 @@ +From 41b20e994970f0ae63fb3f49c6f89a0b2f06aecb Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Sun, 12 Feb 2023 14:23:32 -0800 +Subject: [PATCH 7/9] Support picolibc targets + +Match *-picolibc-* and select picolibc as the default C library, plus continuing to use +the newlib-based logic for other configuration items. + +Signed-off-by: Keith Packard +--- + gcc/config.gcc | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -1085,6 +1085,17 @@ + ;; + esac + ;; ++*-picolibc-*) ++ # __cxa_atexit is provided. ++ default_use_cxa_atexit=yes ++ use_gcc_stdint=wrap ++ default_libc=LIBC_PICOLIBC ++ case "${with_newlib}-${with_headers}" in ++ no-no) use_gcc_stdint=provide ;; ++ *) ;; ++ esac ++ ;; ++ + *-*-elf|arc*-*-elf*) + # Assume that newlib is being used and so __cxa_atexit is provided. + default_use_cxa_atexit=yes diff --git a/packages/gcc/12.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch b/packages/gcc/12.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch new file mode 100644 index 00000000..1e5e9415 --- /dev/null +++ b/packages/gcc/12.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch @@ -0,0 +1,60 @@ +From e426a20988185695675a2c456e0c24dcea515baf Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Sat, 11 Feb 2023 23:07:08 -0800 +Subject: [PATCH 8/9] gcc: Allow g++ to work differently from gcc + +Compile gcc.cc with -DIN_GPP defined when building g++ so that the +code can respond appropriately for the default target language. This +allows the driver to customize the specs used, selecting different +linker scripts, adjusting the use of crtbegin.o/crtend.o etc. + +By default, this change has no effect; targets need to explicitly +check for IN_GPP to have alternate behavior. + +Signed-off-by: Keith Packard +--- + gcc/cp/Make-lang.in | 7 ++++++- + gcc/gpp.cc | 21 +++++++++++++++++++++ + 2 files changed, 27 insertions(+), 1 deletion(-) + create mode 100644 gcc/gpp.cc + +--- a/gcc/cp/Make-lang.in ++++ b/gcc/cp/Make-lang.in +@@ -77,7 +77,12 @@ + endif + + # Create the compiler driver for g++. +-GXX_OBJS = $(GCC_OBJS) cp/g++spec.o ++GXX_OBJS = $(GCC_OBJS:gcc.o=gpp.o) cp/g++spec.o ++ ++CFLAGS-gpp.o = $(CFLAGS-gcc.o) ++gpp.o: $(BASEVER) ++gpp.o: gcc.o ++ + xg++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) + +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ + $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ +--- /dev/null ++++ b/gcc/gpp.cc +@@ -0,0 +1,21 @@ ++/* Compiler driver program that can handle many languages. ++ Copyright (C) 1987-2022 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#define IN_GPP ++#include "gcc.cc" diff --git a/packages/gcc/12.3.0/chksum b/packages/gcc/12.3.0/chksum new file mode 100644 index 00000000..8d4593d2 --- /dev/null +++ b/packages/gcc/12.3.0/chksum @@ -0,0 +1,8 @@ +md5 gcc-12.3.0.tar.xz 58a863b2a50e4d42eacc20fec419bc3b +sha1 gcc-12.3.0.tar.xz 85d66f058688db1e18545b6c4cf67ecc83d3b7eb +sha256 gcc-12.3.0.tar.xz 949a5d4f99e786421a93b532b22ffab5578de7321369975b91aec97adfda8c3b +sha512 gcc-12.3.0.tar.xz 8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea783e80f01ec7bfbf912ca508e478bd749b2755c2c14e4055648146c204 +md5 gcc-12.3.0.tar.gz 6506e4cea6b9eed3c13cd13e5b4dc7c3 +sha1 gcc-12.3.0.tar.gz 9ba0d3b1009ad7a3e1a8f5cc99ad9c6cb4318db9 +sha256 gcc-12.3.0.tar.gz 11275aa7bb34cd8ab101d01b341015499f8d9466342a2574ece93f954d92273b +sha512 gcc-12.3.0.tar.gz 3affe905593e8c64a916a59d4410d9bdf718a2b211ae5a6c7c66af9eed11da0869f4c30d12a5ebba1363f2f809d10ae4cb7aeaac27e3f70f8585c6593773d856 diff --git a/packages/gcc/12.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch b/packages/gcc/12.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch new file mode 100644 index 00000000..0c4b90b5 --- /dev/null +++ b/packages/gcc/12.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch @@ -0,0 +1,138 @@ +From ad485aba918ea651987c6d153c2202a3efb5a75f Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Tue, 23 Aug 2022 22:13:08 -0700 +Subject: [PATCH 9/9] picolibc: Add custom spec file fragments for using + picolibc + +The '--oslib=' option allows targets to insert an OS library after the +C library in the LIB_PATH spec file fragment. This library maps a few +POSIX APIs used by picolibc to underlying system capabilities. + +The '--crt0=' option allows targets to use an alternate crt0 in place +of the usual one as provided by Picolibc. + +For example, picolibc provides 'libsemihost' and 'crt0-semihost.o' on +various targets which maps some POSIX APIs to semihosting capabilities +and signals the semihosting environment when 'main' returns. These +would be used by specifying --oslib=semihost --crt0=semihost. + +This patch also takes advantage of the IN_GPP conditional when +building g++ to elide exception handling contents from the executable +when not linking with the g++ driver. + +Signed-off-by: Keith Packard +--- + gcc/config.gcc | 7 +++++++ + gcc/config/picolibc.h | 44 +++++++++++++++++++++++++++++++++++++++++ + gcc/config/picolibc.opt | 33 +++++++++++++++++++++++++++++++ + 3 files changed, 84 insertions(+) + create mode 100644 gcc/config/picolibc.h + create mode 100644 gcc/config/picolibc.opt + +diff --git a/gcc/config.gcc b/gcc/config.gcc +index 06af4057079..94d53970ceb 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -5967,3 +5967,10 @@ case "$default_libc" in + tm_defines="$tm_defines DEFAULT_LIBC=$default_libc" + ;; + esac ++ ++case "$default_libc" in ++ LIBC_PICOLIBC) ++ extra_options="${extra_options} picolibc.opt" ++ tm_file="${tm_file} picolibc.h" ++ ;; ++esac +diff --git a/gcc/config/picolibc.h b/gcc/config/picolibc.h +new file mode 100644 +index 00000000000..d1d3fc44477 +--- /dev/null ++++ b/gcc/config/picolibc.h +@@ -0,0 +1,44 @@ ++/* Configuration common to all targets running Picolibc. ++ Copyright (C) 2023 Free Software Foundation, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 3, or (at your ++ option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ Under Section 7 of GPL version 3, you are granted additional ++ permissions described in the GCC Runtime Library Exception, version ++ 3.1, as published by the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and ++ a copy of the GCC Runtime Library Exception along with this program; ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#ifdef IN_GPP ++#define PICOLIBC_LD "picolibcpp.ld" ++#define PICOLIBC_BEGIN " crtbegin%O%s" ++#define PICOLIBC_END "crtend%O%s" ++#else ++#define PICOLIBC_LD "picolibc.ld" ++#define PICOLIBC_BEGIN "" ++#define PICOLIBC_END "" ++#endif ++ ++#undef LIB_SPEC ++#define LIB_SPEC "%{!T:-T" PICOLIBC_LD "} --start-group -lc %{-oslib=*:-l%*} %(libgcc) --end-group" ++ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC "%{-crt0=*:crt0-%*%O%s; :crt0%O%s}" PICOLIBC_BEGIN ++ ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC PICOLIBC_END ++ ++#define EH_TABLES_CAN_BE_READ_ONLY 1 +diff --git a/gcc/config/picolibc.opt b/gcc/config/picolibc.opt +new file mode 100644 +index 00000000000..39f81c446bb +--- /dev/null ++++ b/gcc/config/picolibc.opt +@@ -0,0 +1,33 @@ ++; Processor-independent options for picolibc. ++; ++; Copyright (C) 2022 Free Software Foundation, Inc. ++; ++; This file is part of GCC. ++; ++; GCC is free software; you can redistribute it and/or modify it under ++; the terms of the GNU General Public License as published by the Free ++; Software Foundation; either version 3, or (at your option) any later ++; version. ++; ++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++; WARRANTY; without even the implied warranty of MERCHANTABILITY or ++; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++; for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GCC; see the file COPYING3. If not see ++; . ++ ++-oslib ++Driver Separate Alias(-oslib=) ++ ++-oslib= ++Driver Joined ++Specify an OS support library to load after libc. ++ ++-crt0 ++Driver Separate Alias(-crt0=) ++ ++-crt0= ++Driver Joined ++Specify an alternate startup file. +-- +2.39.0 + diff --git a/packages/gcc/12.3.0/version.desc b/packages/gcc/12.3.0/version.desc new file mode 100644 index 00000000..e69de29b -- cgit v1.2.3