diff options
Diffstat (limited to 'packages/gcc/14.2.0')
20 files changed, 0 insertions, 1647 deletions
diff --git a/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch deleted file mode 100644 index 1a86e415..00000000 --- a/packages/gcc/14.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/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch deleted file mode 100644 index 5f9a07a2..00000000 --- a/packages/gcc/14.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 <string> - #include <unistd.h> - #include <sys/types.h> -+#include <sys/select.h> - #include <string.h> - #include <errno.h> - #include "marshall.hh" diff --git a/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch b/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch deleted file mode 100644 index d9800365..00000000 --- a/packages/gcc/14.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/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch deleted file mode 100644 index df91a9ff..00000000 --- a/packages/gcc/14.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 <wbx@openadk.org> - ---- - 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/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch b/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch deleted file mode 100644 index 429d3bd3..00000000 --- a/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch +++ /dev/null @@ -1,262 +0,0 @@ -From fc4aaba8a3b8fe7815e103cc20f2a36d5de7e8ab Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -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 <keithp@keithp.com> ---- - 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 <bits/c++config.h> - - #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS --#include_next <stdlib.h> -+#include <stdlib.h> - #ifdef __CORRECT_ISO_CPP_MATH_H_PROTO --# include_next <math.h> -+# include <math.h> - #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 <bits/c++config.h> --#include_next <assert.h> -+#include <assert.h> ---- a/libstdc++-v3/include/c/cctype -+++ b/libstdc++-v3/include/c/cctype -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next <ctype.h> -+#include <ctype.h> - - #endif ---- a/libstdc++-v3/include/c/cerrno -+++ b/libstdc++-v3/include/c/cerrno -@@ -41,7 +41,7 @@ - #pragma GCC system_header - - #include <bits/c++config.h> --#include_next <errno.h> -+#include <errno.h> - - // 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 <bits/c++config.h> --#include_next <float.h> -+#include <float.h> - - #endif ---- a/libstdc++-v3/include/c/climits -+++ b/libstdc++-v3/include/c/climits -@@ -32,6 +32,6 @@ - #pragma GCC system_header - - #include <bits/c++config.h> --#include_next <limits.h> -+#include <limits.h> - - #endif ---- a/libstdc++-v3/include/c/clocale -+++ b/libstdc++-v3/include/c/clocale -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next <locale.h> -+#include <locale.h> - - #endif ---- a/libstdc++-v3/include/c/cmath -+++ b/libstdc++-v3/include/c/cmath -@@ -33,7 +33,7 @@ - - #include <bits/c++config.h> - --#include_next <math.h> -+#include <math.h> - - // Get rid of those macros defined in <math.h> 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 <setjmp.h> -+#include <setjmp.h> - - // Get rid of those macros defined in <setjmp.h> 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 <signal.h> -+#include <signal.h> - - #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 <stdarg.h> -+#include <stdarg.h> - - #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 <stddef.h> -+#include <stddef.h> - - #endif ---- a/libstdc++-v3/include/c/cstdio -+++ b/libstdc++-v3/include/c/cstdio -@@ -31,7 +31,7 @@ - - #pragma GCC system_header - --#include_next <stdio.h> -+#include <stdio.h> - - // Get rid of those macros defined in <stdio.h> 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 <stdlib.h> -+#include <stdlib.h> - - #endif ---- a/libstdc++-v3/include/c/cstring -+++ b/libstdc++-v3/include/c/cstring -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next <string.h> -+#include <string.h> - - #endif ---- a/libstdc++-v3/include/c/ctime -+++ b/libstdc++-v3/include/c/ctime -@@ -31,6 +31,6 @@ - - #pragma GCC system_header - --#include_next <time.h> -+#include <time.h> - - #endif ---- a/libstdc++-v3/include/c/cuchar -+++ b/libstdc++-v3/include/c/cuchar -@@ -39,7 +39,7 @@ - #include <cwchar> - - #if _GLIBCXX_USE_C11_UCHAR_CXX11 --# include_next <uchar.h> -+# include <uchar.h> - #endif - - #endif // C++11 ---- a/libstdc++-v3/include/c/cwchar -+++ b/libstdc++-v3/include/c/cwchar -@@ -36,7 +36,7 @@ - #include <ctime> - - #if _GLIBCXX_HAVE_WCHAR_H --#include_next <wchar.h> -+#include <wchar.h> - #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 <bits/c++config.h> - - #if _GLIBCXX_HAVE_WCTYPE_H --#include_next <wctype.h> -+#include <wctype.h> - #endif - - #endif ---- a/libstdc++-v3/include/c_global/cmath -+++ b/libstdc++-v3/include/c_global/cmath -@@ -44,7 +44,7 @@ - #include <bits/cpp_type_traits.h> - #include <ext/type_traits.h> - #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS --#include_next <math.h> -+#include <math.h> - #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS - #include <bits/std_abs.h> - ---- a/libstdc++-v3/include/c_global/cstdlib -+++ b/libstdc++-v3/include/c_global/cstdlib -@@ -76,7 +76,7 @@ - // Need to ensure this finds the C library's <stdlib.h> not a libstdc++ - // wrapper that might already be installed later in the include search path. - #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS --#include_next <stdlib.h> -+#include <stdlib.h> - #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS - #include <bits/std_abs.h> - diff --git a/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch b/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch deleted file mode 100644 index 9a7a2a85..00000000 --- a/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch +++ /dev/null @@ -1,134 +0,0 @@ -From ffb10db6fa080e4c225e16928aec052d4c0baa95 Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Fri, 2 Sep 2022 23:07:05 -0700 -Subject: [PATCH] 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 <keithp@keithp.com> ---- - gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++-------- - gcc/configure.ac | 4 ++++ - 2 files changed, 44 insertions(+), 8 deletions(-) - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -695,6 +695,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 \ -@@ -911,16 +913,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 -@@ -1035,7 +1037,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 -@@ -1721,13 +1724,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 - ;; - *) -@@ -3125,7 +3128,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*) -@@ -6079,3 +6082,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 -@@ -2546,6 +2546,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/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch b/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch deleted file mode 100644 index 955ff3ca..00000000 --- a/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch +++ /dev/null @@ -1,95 +0,0 @@ -From fd6aa8e67aec185b0d84ba9551fd38c90c9d6d8a Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Fri, 26 Aug 2022 14:30:03 -0700 -Subject: [PATCH] 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 <keithp@keithp.com> ---- - 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 -@@ -36963,17 +36963,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 -@@ -10300,12 +10300,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/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch b/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch deleted file mode 100644 index 5443630b..00000000 --- a/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch +++ /dev/null @@ -1,37 +0,0 @@ -From be5d482de0099012288e617af0583772fac21714 Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Tue, 23 Aug 2022 22:12:06 -0700 -Subject: [PATCH] Add newlib and picolibc as default C library choices - -Signed-off-by: Keith Packard <keithp@keithp.com> ---- - gcc/config.gcc | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -693,7 +693,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="" - -@@ -6096,6 +6096,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/14.2.0/0008-Support-picolibc-targets.patch b/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch deleted file mode 100644 index 987baf39..00000000 --- a/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch +++ /dev/null @@ -1,33 +0,0 @@ -From c9c22fe9ce182e48282e2bf0a8830381d3c55dd4 Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Sun, 12 Feb 2023 14:23:32 -0800 -Subject: [PATCH] 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 <keithp@keithp.com> ---- - gcc/config.gcc | 11 +++++++++++ - 1 file changed, 11 insertions(+) - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -1168,6 +1168,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/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch b/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch deleted file mode 100644 index 57a22f98..00000000 --- a/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch +++ /dev/null @@ -1,60 +0,0 @@ -From ef327a7c2a36b63e8a372bef88e3700460b51c34 Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Sat, 11 Feb 2023 23:07:08 -0800 -Subject: [PATCH] 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 <keithp@keithp.com> ---- - 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 -+<http://www.gnu.org/licenses/>. */ -+ -+#define IN_GPP -+#include "gcc.cc" diff --git a/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch b/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch deleted file mode 100644 index c0a32648..00000000 --- a/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d901175d36221fbf79a0eb8305823b88243b829c Mon Sep 17 00:00:00 2001 -From: Chris Packham <chris.packham@alliedtelesis.co.nz> -Date: Thu, 7 Sep 2023 19:26:49 +1200 -Subject: [PATCH] libgcc: Exclude UCLIBC from GLIBC thread check - -UBLIBC defines __GLIBC__ but also marks __pthread_key_create() as -protected. Leading to link errors with newer binutils such as: - - ld.bfd: isl_test_cpp17.o: non-canonical reference to canonical protected function `__pthread_key_create' in x86_64-multilib-linux-uclibc/sysroot/lib64/libc.so.1 - ld.bfd: failed to set dynamic section sizes: bad value - -Add a condition on !__UCLIBC__ when selecting a symbol to detect pthread -usage so it picks the intended pthread_cancel(). - -Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> ---- - libgcc/gthr-posix.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/libgcc/gthr-posix.h -+++ b/libgcc/gthr-posix.h -@@ -246,7 +246,7 @@ - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - --#ifdef __GLIBC__ -+#if defined(__GLIBC__) && !defined(__UCLIBC__) - __gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) diff --git a/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch b/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch deleted file mode 100644 index 2625c308..00000000 --- a/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch +++ /dev/null @@ -1,139 +0,0 @@ -From cb547fed9177c2a28f376c881facfcf4b64e70a9 Mon Sep 17 00:00:00 2001 -From: Richard Sandiford <richard.sandiford@arm.com> -Date: Thu, 13 Jun 2024 12:48:21 +0100 -Subject: [PATCH 11/16] aarch64: Fix invalid nested subregs [PR115464] - -The testcase extracts one arm_neon.h vector from a pair (one subreg) -and then reinterprets the result as an SVE vector (another subreg). -Each subreg makes sense individually, but we can't fold them together -into a single subreg: it's 32 bytes -> 16 bytes -> 16*N bytes, -but the interpretation of 32 bytes -> 16*N bytes depends on -whether N==1 or N>1. - -Since the second subreg makes sense individually, simplify_subreg -should bail out rather than ICE on it. simplify_gen_subreg will -then do the same (because it already checks validate_subreg). -This leaves simplify_gen_subreg returning null, requiring the -caller to take appropriate action. - -I think this is relatively likely to occur elsewhere, so the patch -adds a helper for forcing a subreg, allowing a temporary pseudo to -be created where necessary. - -I'll follow up by using force_subreg in more places. This patch -is intended to be a minimal backportable fix for the PR. - -gcc/ - PR target/115464 - * simplify-rtx.cc (simplify_context::simplify_subreg): Don't try - to fold two subregs together if their relationship isn't known - at compile time. - * explow.h (force_subreg): Declare. - * explow.cc (force_subreg): New function. - * config/aarch64/aarch64-sve-builtins-base.cc - (svset_neonq_impl::expand): Use it instead of simplify_gen_subreg. - -gcc/testsuite/ - PR target/115464 - * gcc.target/aarch64/sve/acle/general/pr115464.c: New test. - -(cherry picked from commit 0970ff46ba6330fc80e8736fc05b2eaeeae0b6a0) ---- - gcc/config/aarch64/aarch64-sve-builtins-base.cc | 2 +- - gcc/explow.cc | 15 +++++++++++++++ - gcc/explow.h | 2 ++ - gcc/simplify-rtx.cc | 5 +++++ - .../aarch64/sve/acle/general/pr115464.c | 13 +++++++++++++ - 5 files changed, 36 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c - -diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc -index 0d2edf3f19e..c9182594bc1 100644 ---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc -+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc -@@ -1174,7 +1174,7 @@ public: - Advanced SIMD argument as an SVE vector. */ - if (!BYTES_BIG_ENDIAN - && is_undef (CALL_EXPR_ARG (e.call_expr, 0))) -- return simplify_gen_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0); -+ return force_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0); - - rtx_vector_builder builder (VNx16BImode, 16, 2); - for (unsigned int i = 0; i < 16; i++) -diff --git a/gcc/explow.cc b/gcc/explow.cc -index 8e5f6b8e680..f6843398c4b 100644 ---- a/gcc/explow.cc -+++ b/gcc/explow.cc -@@ -745,6 +745,21 @@ force_reg (machine_mode mode, rtx x) - return temp; - } - -+/* Like simplify_gen_subreg, but force OP into a new register if the -+ subreg cannot be formed directly. */ -+ -+rtx -+force_subreg (machine_mode outermode, rtx op, -+ machine_mode innermode, poly_uint64 byte) -+{ -+ rtx x = simplify_gen_subreg (outermode, op, innermode, byte); -+ if (x) -+ return x; -+ -+ op = copy_to_mode_reg (innermode, op); -+ return simplify_gen_subreg (outermode, op, innermode, byte); -+} -+ - /* If X is a memory ref, copy its contents to a new temp reg and return - that reg. Otherwise, return X. */ - -diff --git a/gcc/explow.h b/gcc/explow.h -index 16aa02cfb68..cbd1fcb7eb3 100644 ---- a/gcc/explow.h -+++ b/gcc/explow.h -@@ -42,6 +42,8 @@ extern rtx copy_to_suggested_reg (rtx, rtx, machine_mode); - Args are mode (in case value is a constant) and the value. */ - extern rtx force_reg (machine_mode, rtx); - -+extern rtx force_subreg (machine_mode, rtx, machine_mode, poly_uint64); -+ - /* Return given rtx, copied into a new temp reg if it was in memory. */ - extern rtx force_not_mem (rtx); - -diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc -index dceaa13333c..729d408aa55 100644 ---- a/gcc/simplify-rtx.cc -+++ b/gcc/simplify-rtx.cc -@@ -7612,6 +7612,11 @@ simplify_context::simplify_subreg (machine_mode outermode, rtx op, - poly_uint64 innermostsize = GET_MODE_SIZE (innermostmode); - rtx newx; - -+ /* Make sure that the relationship between the two subregs is -+ known at compile time. */ -+ if (!ordered_p (outersize, innermostsize)) -+ return NULL_RTX; -+ - if (outermode == innermostmode - && known_eq (byte, 0U) - && known_eq (SUBREG_BYTE (op), 0)) -diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c -new file mode 100644 -index 00000000000..d728d1325ed ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c -@@ -0,0 +1,13 @@ -+/* { dg-options "-O2" } */ -+ -+#include <arm_neon.h> -+#include <arm_sve.h> -+#include <arm_neon_sve_bridge.h> -+ -+svuint16_t -+convolve4_4_x (uint16x8x2_t permute_tbl) -+{ -+ return svset_neonq_u16 (svundef_u16 (), permute_tbl.val[1]); -+} -+ -+/* { dg-final { scan-assembler {\tmov\tz0\.d, z1\.d\n} } } */ --- -2.44.2 - diff --git a/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch b/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch deleted file mode 100644 index bddf3977..00000000 --- a/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 12d860b5b700b5218461a0b9e4a1a3ddb55eb211 Mon Sep 17 00:00:00 2001 -From: Richard Sandiford <richard.sandiford@arm.com> -Date: Tue, 18 Jun 2024 12:22:30 +0100 -Subject: [PATCH 12/16] aarch64: Use force_subreg in more places - -This patch makes the aarch64 code use force_subreg instead of -simplify_gen_subreg in more places. The criteria were: - -(1) The code is obviously specific to expand (where new pseudos - can be created). - -(2) The value is obviously an rvalue rather than an lvalue. - -(3) The offset wasn't a simple lowpart or highpart calculation; - a later patch will deal with those. - -gcc/ - * config/aarch64/aarch64-builtins.cc (aarch64_expand_fcmla_builtin): - Use force_subreg instead of simplify_gen_subreg. - * config/aarch64/aarch64-simd.md (ctz<mode>2): Likewise. - * config/aarch64/aarch64-sve-builtins-base.cc - (svget_impl::expand): Likewise. - (svget_neonq_impl::expand): Likewise. - * config/aarch64/aarch64-sve-builtins-functions.h - (multireg_permute::expand): Likewise. - -(cherry picked from commit 1474a8eead4ab390e59ee014befa8c40346679f4) ---- - gcc/config/aarch64/aarch64-builtins.cc | 4 ++-- - gcc/config/aarch64/aarch64-simd.md | 4 ++-- - gcc/config/aarch64/aarch64-sve-builtins-base.cc | 8 +++----- - gcc/config/aarch64/aarch64-sve-builtins-functions.h | 6 +++--- - 4 files changed, 10 insertions(+), 12 deletions(-) - -diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc -index 75d21de1401..b2e46a073a8 100644 ---- a/gcc/config/aarch64/aarch64-builtins.cc -+++ b/gcc/config/aarch64/aarch64-builtins.cc -@@ -2510,12 +2510,12 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode) - rtx temp2 = gen_reg_rtx (DImode); - temp1 = simplify_gen_subreg (d->mode, op2, quadmode, - subreg_lowpart_offset (d->mode, quadmode)); -- temp1 = simplify_gen_subreg (V2DImode, temp1, d->mode, 0); -+ temp1 = force_subreg (V2DImode, temp1, d->mode, 0); - if (BYTES_BIG_ENDIAN) - emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx)); - else - emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const1_rtx)); -- op2 = simplify_gen_subreg (d->mode, temp2, GET_MODE (temp2), 0); -+ op2 = force_subreg (d->mode, temp2, GET_MODE (temp2), 0); - - /* And recalculate the index. */ - lane -= nunits / 4; -diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md -index 33ab0741e87..5b9efe0b165 100644 ---- a/gcc/config/aarch64/aarch64-simd.md -+++ b/gcc/config/aarch64/aarch64-simd.md -@@ -412,8 +412,8 @@ - "TARGET_SIMD" - { - emit_insn (gen_bswap<mode>2 (operands[0], operands[1])); -- rtx op0_castsi2qi = simplify_gen_subreg(<VS:VSI2QI>mode, operands[0], -- <MODE>mode, 0); -+ rtx op0_castsi2qi = force_subreg (<VS:VSI2QI>mode, operands[0], -+ <MODE>mode, 0); - emit_insn (gen_aarch64_rbit<VS:vsi2qi> (op0_castsi2qi, op0_castsi2qi)); - emit_insn (gen_clz<mode>2 (operands[0], operands[0])); - DONE; -diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc -index c9182594bc1..2c95da79572 100644 ---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc -+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc -@@ -1121,9 +1121,8 @@ public: - expand (function_expander &e) const override - { - /* Fold the access into a subreg rvalue. */ -- return simplify_gen_subreg (e.vector_mode (0), e.args[0], -- GET_MODE (e.args[0]), -- INTVAL (e.args[1]) * BYTES_PER_SVE_VECTOR); -+ return force_subreg (e.vector_mode (0), e.args[0], GET_MODE (e.args[0]), -+ INTVAL (e.args[1]) * BYTES_PER_SVE_VECTOR); - } - }; - -@@ -1157,8 +1156,7 @@ public: - e.add_fixed_operand (indices); - return e.generate_insn (icode); - } -- return simplify_gen_subreg (e.result_mode (), e.args[0], -- GET_MODE (e.args[0]), 0); -+ return force_subreg (e.result_mode (), e.args[0], GET_MODE (e.args[0]), 0); - } - }; - -diff --git a/gcc/config/aarch64/aarch64-sve-builtins-functions.h b/gcc/config/aarch64/aarch64-sve-builtins-functions.h -index 3b8e575e98e..7d06a57ff83 100644 ---- a/gcc/config/aarch64/aarch64-sve-builtins-functions.h -+++ b/gcc/config/aarch64/aarch64-sve-builtins-functions.h -@@ -639,9 +639,9 @@ public: - { - machine_mode elt_mode = e.vector_mode (0); - rtx arg = e.args[0]; -- e.args[0] = simplify_gen_subreg (elt_mode, arg, GET_MODE (arg), 0); -- e.args.safe_push (simplify_gen_subreg (elt_mode, arg, GET_MODE (arg), -- GET_MODE_SIZE (elt_mode))); -+ e.args[0] = force_subreg (elt_mode, arg, GET_MODE (arg), 0); -+ e.args.safe_push (force_subreg (elt_mode, arg, GET_MODE (arg), -+ GET_MODE_SIZE (elt_mode))); - } - return e.use_exact_insn (icode); - } --- -2.44.2 - diff --git a/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch b/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch deleted file mode 100644 index fd4d9847..00000000 --- a/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch +++ /dev/null @@ -1,167 +0,0 @@ -From eb49bbb886ef374eddb93e866c9c9f5f314c8014 Mon Sep 17 00:00:00 2001 -From: Richard Sandiford <richard.sandiford@arm.com> -Date: Tue, 18 Jun 2024 12:22:31 +0100 -Subject: [PATCH 13/16] aarch64: Add some uses of force_lowpart_subreg - -This patch makes more use of force_lowpart_subreg, similarly -to the recent patch for force_subreg. The criteria were: - -(1) The code is obviously specific to expand (where new pseudos - can be created). - -(2) The value is obviously an rvalue rather than an lvalue. - -gcc/ - PR target/115464 - * config/aarch64/aarch64-builtins.cc (aarch64_expand_fcmla_builtin) - (aarch64_expand_rwsr_builtin): Use force_lowpart_subreg instead of - simplify_gen_subreg and lowpart_subreg. - * config/aarch64/aarch64-sve-builtins-base.cc - (svset_neonq_impl::expand): Likewise. - * config/aarch64/aarch64-sve-builtins-sme.cc - (add_load_store_slice_operand): Likewise. - * config/aarch64/aarch64.cc (aarch64_sve_reinterpret): Likewise. - (aarch64_addti_scratch_regs, aarch64_subvti_scratch_regs): Likewise. - -gcc/testsuite/ - PR target/115464 - * gcc.target/aarch64/sve/acle/general/pr115464_2.c: New test. - -(cherry picked from commit 6bd4fbae45d11795a9a6f54b866308d4d7134def) ---- - gcc/config/aarch64/aarch64-builtins.cc | 11 +++++------ - gcc/config/aarch64/aarch64-sve-builtins-base.cc | 2 +- - gcc/config/aarch64/aarch64-sve-builtins-sme.cc | 2 +- - gcc/config/aarch64/aarch64.cc | 14 +++++--------- - .../aarch64/sve/acle/general/pr115464_2.c | 11 +++++++++++ - 5 files changed, 23 insertions(+), 17 deletions(-) - create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c - -diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc -index b2e46a073a8..264b9560709 100644 ---- a/gcc/config/aarch64/aarch64-builtins.cc -+++ b/gcc/config/aarch64/aarch64-builtins.cc -@@ -2497,8 +2497,7 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode) - int lane = INTVAL (lane_idx); - - if (lane < nunits / 4) -- op2 = simplify_gen_subreg (d->mode, op2, quadmode, -- subreg_lowpart_offset (d->mode, quadmode)); -+ op2 = force_lowpart_subreg (d->mode, op2, quadmode); - else - { - /* Select the upper 64 bits, either a V2SF or V4HF, this however -@@ -2508,8 +2507,7 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode) - gen_highpart_mode generates code that isn't optimal. */ - rtx temp1 = gen_reg_rtx (d->mode); - rtx temp2 = gen_reg_rtx (DImode); -- temp1 = simplify_gen_subreg (d->mode, op2, quadmode, -- subreg_lowpart_offset (d->mode, quadmode)); -+ temp1 = force_lowpart_subreg (d->mode, op2, quadmode); - temp1 = force_subreg (V2DImode, temp1, d->mode, 0); - if (BYTES_BIG_ENDIAN) - emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx)); -@@ -2754,7 +2752,7 @@ aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode) - case AARCH64_WSR64: - case AARCH64_WSRF64: - case AARCH64_WSR128: -- subreg = lowpart_subreg (sysreg_mode, input_val, mode); -+ subreg = force_lowpart_subreg (sysreg_mode, input_val, mode); - break; - case AARCH64_WSRF: - subreg = gen_lowpart_SUBREG (SImode, input_val); -@@ -2789,7 +2787,8 @@ aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode) - case AARCH64_RSR64: - case AARCH64_RSRF64: - case AARCH64_RSR128: -- return lowpart_subreg (TYPE_MODE (TREE_TYPE (exp)), target, sysreg_mode); -+ return force_lowpart_subreg (TYPE_MODE (TREE_TYPE (exp)), -+ target, sysreg_mode); - case AARCH64_RSRF: - subreg = gen_lowpart_SUBREG (SImode, target); - return gen_lowpart_SUBREG (SFmode, subreg); -diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc -index 2c95da79572..3c970e9c5f8 100644 ---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc -+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc -@@ -1183,7 +1183,7 @@ public: - if (BYTES_BIG_ENDIAN) - return e.use_exact_insn (code_for_aarch64_sve_set_neonq (mode)); - insn_code icode = code_for_vcond_mask (mode, mode); -- e.args[1] = lowpart_subreg (mode, e.args[1], GET_MODE (e.args[1])); -+ e.args[1] = force_lowpart_subreg (mode, e.args[1], GET_MODE (e.args[1])); - e.add_output_operand (icode); - e.add_input_operand (icode, e.args[1]); - e.add_input_operand (icode, e.args[0]); -diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc -index f4c91bcbb95..b66b35ae60b 100644 ---- a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc -+++ b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc -@@ -112,7 +112,7 @@ add_load_store_slice_operand (function_expander &e, insn_code icode, - rtx base = e.args[argno]; - if (e.mode_suffix_id == MODE_vnum) - { -- rtx vnum = lowpart_subreg (SImode, e.args[vnum_argno], DImode); -+ rtx vnum = force_lowpart_subreg (SImode, e.args[vnum_argno], DImode); - base = simplify_gen_binary (PLUS, SImode, base, vnum); - } - e.add_input_operand (icode, base); -diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc -index 1beec94629d..a064aeecbc0 100644 ---- a/gcc/config/aarch64/aarch64.cc -+++ b/gcc/config/aarch64/aarch64.cc -@@ -3284,7 +3284,7 @@ aarch64_sve_reinterpret (machine_mode mode, rtx x) - /* can_change_mode_class must only return true if subregs and svreinterprets - have the same semantics. */ - if (targetm.can_change_mode_class (GET_MODE (x), mode, FP_REGS)) -- return lowpart_subreg (mode, x, GET_MODE (x)); -+ return force_lowpart_subreg (mode, x, GET_MODE (x)); - - rtx res = gen_reg_rtx (mode); - x = force_reg (GET_MODE (x), x); -@@ -26979,9 +26979,8 @@ aarch64_addti_scratch_regs (rtx op1, rtx op2, rtx *low_dest, - rtx *high_in2) - { - *low_dest = gen_reg_rtx (DImode); -- *low_in1 = gen_lowpart (DImode, op1); -- *low_in2 = simplify_gen_subreg (DImode, op2, TImode, -- subreg_lowpart_offset (DImode, TImode)); -+ *low_in1 = force_lowpart_subreg (DImode, op1, TImode); -+ *low_in2 = force_lowpart_subreg (DImode, op2, TImode); - *high_dest = gen_reg_rtx (DImode); - *high_in1 = gen_highpart (DImode, op1); - *high_in2 = simplify_gen_subreg (DImode, op2, TImode, -@@ -27013,11 +27012,8 @@ aarch64_subvti_scratch_regs (rtx op1, rtx op2, rtx *low_dest, - rtx *high_in2) - { - *low_dest = gen_reg_rtx (DImode); -- *low_in1 = simplify_gen_subreg (DImode, op1, TImode, -- subreg_lowpart_offset (DImode, TImode)); -- -- *low_in2 = simplify_gen_subreg (DImode, op2, TImode, -- subreg_lowpart_offset (DImode, TImode)); -+ *low_in1 = force_lowpart_subreg (DImode, op1, TImode); -+ *low_in2 = force_lowpart_subreg (DImode, op2, TImode); - *high_dest = gen_reg_rtx (DImode); - - *high_in1 = simplify_gen_subreg (DImode, op1, TImode, -diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c -new file mode 100644 -index 00000000000..f561c34f732 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c -@@ -0,0 +1,11 @@ -+/* { dg-options "-O2" } */ -+ -+#include <arm_neon.h> -+#include <arm_sve.h> -+#include <arm_neon_sve_bridge.h> -+ -+svuint16_t -+convolve4_4_x (uint16x8x2_t permute_tbl, svuint16_t a) -+{ -+ return svset_neonq_u16 (a, permute_tbl.val[1]); -+} --- -2.44.2 - diff --git a/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch b/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch deleted file mode 100644 index 17fc7b64..00000000 --- a/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 2dcdf9d026ed2e881b0bd8b378ed072e410490fe Mon Sep 17 00:00:00 2001 -From: Richard Sandiford <richard.sandiford@arm.com> -Date: Tue, 18 Jun 2024 12:22:31 +0100 -Subject: [PATCH 14/16] Add force_lowpart_subreg - -optabs had a local function called lowpart_subreg_maybe_copy -that is very similar to the lowpart version of force_subreg. -This patch adds a force_lowpart_subreg wrapper around -force_subreg and uses it in optabs.cc. - -The only difference between the old and new functions is that -the old one asserted success while the new one doesn't. -It's common not to assert elsewhere when taking subregs; -normally a null result is enough. - -Later patches will make more use of the new function. - -gcc/ - * explow.h (force_lowpart_subreg): Declare. - * explow.cc (force_lowpart_subreg): New function. - * optabs.cc (lowpart_subreg_maybe_copy): Delete. - (expand_absneg_bit): Use force_lowpart_subreg instead of - lowpart_subreg_maybe_copy. - (expand_copysign_bit): Likewise. - -(cherry picked from commit 5f40d1c0cc6ce91ef28d326b8707b3f05e6f239c) ---- - gcc/explow.cc | 14 ++++++++++++++ - gcc/explow.h | 1 + - gcc/optabs.cc | 24 ++---------------------- - 3 files changed, 17 insertions(+), 22 deletions(-) - -diff --git a/gcc/explow.cc b/gcc/explow.cc -index f6843398c4b..5fdfa81f69b 100644 ---- a/gcc/explow.cc -+++ b/gcc/explow.cc -@@ -760,6 +760,20 @@ force_subreg (machine_mode outermode, rtx op, - return simplify_gen_subreg (outermode, op, innermode, byte); - } - -+/* Try to return an rvalue expression for the OUTERMODE lowpart of OP, -+ which has mode INNERMODE. Allow OP to be forced into a new register -+ if necessary. -+ -+ Return null on failure. */ -+ -+rtx -+force_lowpart_subreg (machine_mode outermode, rtx op, -+ machine_mode innermode) -+{ -+ auto byte = subreg_lowpart_offset (outermode, innermode); -+ return force_subreg (outermode, op, innermode, byte); -+} -+ - /* If X is a memory ref, copy its contents to a new temp reg and return - that reg. Otherwise, return X. */ - -diff --git a/gcc/explow.h b/gcc/explow.h -index cbd1fcb7eb3..dd654649b06 100644 ---- a/gcc/explow.h -+++ b/gcc/explow.h -@@ -43,6 +43,7 @@ extern rtx copy_to_suggested_reg (rtx, rtx, machine_mode); - extern rtx force_reg (machine_mode, rtx); - - extern rtx force_subreg (machine_mode, rtx, machine_mode, poly_uint64); -+extern rtx force_lowpart_subreg (machine_mode, rtx, machine_mode); - - /* Return given rtx, copied into a new temp reg if it was in memory. */ - extern rtx force_not_mem (rtx); -diff --git a/gcc/optabs.cc b/gcc/optabs.cc -index ce91f94ed43..804c0dc73ba 100644 ---- a/gcc/optabs.cc -+++ b/gcc/optabs.cc -@@ -3096,26 +3096,6 @@ expand_ffs (scalar_int_mode mode, rtx op0, rtx target) - return 0; - } - --/* Extract the OMODE lowpart from VAL, which has IMODE. Under certain -- conditions, VAL may already be a SUBREG against which we cannot generate -- a further SUBREG. In this case, we expect forcing the value into a -- register will work around the situation. */ -- --static rtx --lowpart_subreg_maybe_copy (machine_mode omode, rtx val, -- machine_mode imode) --{ -- rtx ret; -- ret = lowpart_subreg (omode, val, imode); -- if (ret == NULL) -- { -- val = force_reg (imode, val); -- ret = lowpart_subreg (omode, val, imode); -- gcc_assert (ret != NULL); -- } -- return ret; --} -- - /* Expand a floating point absolute value or negation operation via a - logical operation on the sign bit. */ - -@@ -3204,7 +3184,7 @@ expand_absneg_bit (enum rtx_code code, scalar_float_mode mode, - gen_lowpart (imode, op0), - immed_wide_int_const (mask, imode), - gen_lowpart (imode, target), 1, OPTAB_LIB_WIDEN); -- target = lowpart_subreg_maybe_copy (mode, temp, imode); -+ target = force_lowpart_subreg (mode, temp, imode); - - set_dst_reg_note (get_last_insn (), REG_EQUAL, - gen_rtx_fmt_e (code, mode, copy_rtx (op0)), -@@ -4043,7 +4023,7 @@ expand_copysign_bit (scalar_float_mode mode, rtx op0, rtx op1, rtx target, - - temp = expand_binop (imode, ior_optab, op0, op1, - gen_lowpart (imode, target), 1, OPTAB_LIB_WIDEN); -- target = lowpart_subreg_maybe_copy (mode, temp, imode); -+ target = force_lowpart_subreg (mode, temp, imode); - } - - return target; --- -2.44.2 - diff --git a/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch b/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch deleted file mode 100644 index 697c8760..00000000 --- a/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch +++ /dev/null @@ -1,194 +0,0 @@ -From d02fe5a6bfdfcae086e5374db3f8fd076df9b1a5 Mon Sep 17 00:00:00 2001 -From: Richard Sandiford <richard.sandiford@arm.com> -Date: Tue, 18 Jun 2024 12:22:30 +0100 -Subject: [PATCH 15/16] Make more use of force_subreg - -This patch makes target-independent code use force_subreg instead -of simplify_gen_subreg in some places. The criteria were: - -(1) The code is obviously specific to expand (where new pseudos - can be created), or at least would be invalid to call when - !can_create_pseudo_p () and temporaries are needed. - -(2) The value is obviously an rvalue rather than an lvalue. - -(3) The offset wasn't a simple lowpart or highpart calculation; - a later patch will deal with those. - -Doing this should reduce the likelihood of bugs like PR115464 -occuring in other situations. - -gcc/ - * expmed.cc (store_bit_field_using_insv): Use force_subreg - instead of simplify_gen_subreg. - (store_bit_field_1): Likewise. - (extract_bit_field_as_subreg): Likewise. - (extract_integral_bit_field): Likewise. - (emit_store_flag_1): Likewise. - * expr.cc (convert_move): Likewise. - (convert_modes): Likewise. - (emit_group_load_1): Likewise. - (emit_group_store): Likewise. - (expand_assignment): Likewise. - -(cherry picked from commit d4047da6a070175aae7121c739d1cad6b08ff4b2) ---- - gcc/expmed.cc | 22 ++++++++-------------- - gcc/expr.cc | 27 ++++++++++++--------------- - 2 files changed, 20 insertions(+), 29 deletions(-) - -diff --git a/gcc/expmed.cc b/gcc/expmed.cc -index 19765311b95..bd190722de6 100644 ---- a/gcc/expmed.cc -+++ b/gcc/expmed.cc -@@ -695,13 +695,7 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0, - if we must narrow it, be sure we do it correctly. */ - - if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode)) -- { -- tmp = simplify_subreg (op_mode, value1, value_mode, 0); -- if (! tmp) -- tmp = simplify_gen_subreg (op_mode, -- force_reg (value_mode, value1), -- value_mode, 0); -- } -+ tmp = force_subreg (op_mode, value1, value_mode, 0); - else - { - tmp = gen_lowpart_if_possible (op_mode, value1); -@@ -800,7 +794,7 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum, - if (known_eq (bitnum, 0U) - && known_eq (bitsize, GET_MODE_BITSIZE (GET_MODE (op0)))) - { -- sub = simplify_gen_subreg (GET_MODE (op0), value, fieldmode, 0); -+ sub = force_subreg (GET_MODE (op0), value, fieldmode, 0); - if (sub) - { - if (reverse) -@@ -1627,7 +1621,7 @@ extract_bit_field_as_subreg (machine_mode mode, rtx op0, - && known_eq (bitsize, GET_MODE_BITSIZE (mode)) - && lowpart_bit_field_p (bitnum, bitsize, op0_mode) - && TRULY_NOOP_TRUNCATION_MODES_P (mode, op0_mode)) -- return simplify_gen_subreg (mode, op0, op0_mode, bytenum); -+ return force_subreg (mode, op0, op0_mode, bytenum); - return NULL_RTX; - } - -@@ -1994,11 +1988,11 @@ extract_integral_bit_field (rtx op0, opt_scalar_int_mode op0_mode, - return convert_extracted_bit_field (target, mode, tmode, unsignedp); - } - /* If OP0 is a hard register, copy it to a pseudo before calling -- simplify_gen_subreg. */ -+ force_subreg. */ - if (REG_P (op0) && HARD_REGISTER_P (op0)) - op0 = copy_to_reg (op0); -- op0 = simplify_gen_subreg (word_mode, op0, op0_mode.require (), -- bitnum / BITS_PER_WORD * UNITS_PER_WORD); -+ op0 = force_subreg (word_mode, op0, op0_mode.require (), -+ bitnum / BITS_PER_WORD * UNITS_PER_WORD); - op0_mode = word_mode; - bitnum %= BITS_PER_WORD; - } -@@ -5759,8 +5753,8 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1, - - /* Do a logical OR or AND of the two words and compare the - result. */ -- op00 = simplify_gen_subreg (word_mode, op0, int_mode, 0); -- op01 = simplify_gen_subreg (word_mode, op0, int_mode, UNITS_PER_WORD); -+ op00 = force_subreg (word_mode, op0, int_mode, 0); -+ op01 = force_subreg (word_mode, op0, int_mode, UNITS_PER_WORD); - tem = expand_binop (word_mode, - op1 == const0_rtx ? ior_optab : and_optab, - op00, op01, NULL_RTX, unsignedp, -diff --git a/gcc/expr.cc b/gcc/expr.cc -index 9f66d479445..8ffa76b1bb8 100644 ---- a/gcc/expr.cc -+++ b/gcc/expr.cc -@@ -302,7 +302,7 @@ convert_move (rtx to, rtx from, int unsignedp) - GET_MODE_BITSIZE (to_mode))); - - if (VECTOR_MODE_P (to_mode)) -- from = simplify_gen_subreg (to_mode, from, GET_MODE (from), 0); -+ from = force_subreg (to_mode, from, GET_MODE (from), 0); - else - to = simplify_gen_subreg (from_mode, to, GET_MODE (to), 0); - -@@ -936,7 +936,7 @@ convert_modes (machine_mode mode, machine_mode oldmode, rtx x, int unsignedp) - { - gcc_assert (known_eq (GET_MODE_BITSIZE (mode), - GET_MODE_BITSIZE (oldmode))); -- return simplify_gen_subreg (mode, x, oldmode, 0); -+ return force_subreg (mode, x, oldmode, 0); - } - - temp = gen_reg_rtx (mode); -@@ -3076,8 +3076,8 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, - } - } - else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode -- && XVECLEN (dst, 0) > 1) -- tmps[i] = simplify_gen_subreg (mode, src, GET_MODE (dst), bytepos); -+ && XVECLEN (dst, 0) > 1) -+ tmps[i] = force_subreg (mode, src, GET_MODE (dst), bytepos); - else if (CONSTANT_P (src)) - { - if (known_eq (bytelen, ssize)) -@@ -3301,7 +3301,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, - if (known_eq (rtx_to_poly_int64 (XEXP (XVECEXP (src, 0, start), 1)), - bytepos)) - { -- temp = simplify_gen_subreg (outer, tmps[start], inner, 0); -+ temp = force_subreg (outer, tmps[start], inner, 0); - if (temp) - { - emit_move_insn (dst, temp); -@@ -3321,7 +3321,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, - finish - 1), 1)), - bytepos)) - { -- temp = simplify_gen_subreg (outer, tmps[finish - 1], inner, 0); -+ temp = force_subreg (outer, tmps[finish - 1], inner, 0); - if (temp) - { - emit_move_insn (dst, temp); -@@ -6195,11 +6195,9 @@ expand_assignment (tree to, tree from, bool nontemporal) - to_mode = GET_MODE_INNER (to_mode); - machine_mode from_mode = GET_MODE_INNER (GET_MODE (result)); - rtx from_real -- = simplify_gen_subreg (to_mode, XEXP (result, 0), -- from_mode, 0); -+ = force_subreg (to_mode, XEXP (result, 0), from_mode, 0); - rtx from_imag -- = simplify_gen_subreg (to_mode, XEXP (result, 1), -- from_mode, 0); -+ = force_subreg (to_mode, XEXP (result, 1), from_mode, 0); - if (!from_real || !from_imag) - goto concat_store_slow; - emit_move_insn (XEXP (to_rtx, 0), from_real); -@@ -6215,8 +6213,7 @@ expand_assignment (tree to, tree from, bool nontemporal) - if (MEM_P (result)) - from_rtx = change_address (result, to_mode, NULL_RTX); - else -- from_rtx -- = simplify_gen_subreg (to_mode, result, from_mode, 0); -+ from_rtx = force_subreg (to_mode, result, from_mode, 0); - if (from_rtx) - { - emit_move_insn (XEXP (to_rtx, 0), -@@ -6228,10 +6225,10 @@ expand_assignment (tree to, tree from, bool nontemporal) - { - to_mode = GET_MODE_INNER (to_mode); - rtx from_real -- = simplify_gen_subreg (to_mode, result, from_mode, 0); -+ = force_subreg (to_mode, result, from_mode, 0); - rtx from_imag -- = simplify_gen_subreg (to_mode, result, from_mode, -- GET_MODE_SIZE (to_mode)); -+ = force_subreg (to_mode, result, from_mode, -+ GET_MODE_SIZE (to_mode)); - if (!from_real || !from_imag) - goto concat_store_slow; - emit_move_insn (XEXP (to_rtx, 0), from_real); --- -2.44.2 - diff --git a/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch b/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch deleted file mode 100644 index 629cfbda..00000000 --- a/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 5468439a1f987b7d801c6c76d6c989e57af8916a Mon Sep 17 00:00:00 2001 -From: Richard Sandiford <richard.sandiford@arm.com> -Date: Tue, 25 Jun 2024 09:41:21 +0100 -Subject: [PATCH 16/16] Revert one of the force_subreg changes - -One of the changes in g:d4047da6a070175aae7121c739d1cad6b08ff4b2 -caused a regression in ft32-elf; see: - - https://gcc.gnu.org/pipermail/gcc-patches/2024-June/655418.html - -for details. This change was different from the others in that the -original call was to simplify_subreg rather than simplify_lowpart_subreg. -The old code would therefore go on to do the force_reg for more cases -than the new code would. - -gcc/ - * expmed.cc (store_bit_field_using_insv): Revert earlier change - to use force_subreg instead of simplify_gen_subreg. - -(cherry picked from commit b694bf417cdd7d0a4d78e9927bab6bc202b7df6c) ---- - gcc/expmed.cc | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/gcc/expmed.cc b/gcc/expmed.cc -index bd190722de6..85ec2614a3f 100644 ---- a/gcc/expmed.cc -+++ b/gcc/expmed.cc -@@ -695,7 +695,13 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0, - if we must narrow it, be sure we do it correctly. */ - - if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode)) -- tmp = force_subreg (op_mode, value1, value_mode, 0); -+ { -+ tmp = simplify_subreg (op_mode, value1, value_mode, 0); -+ if (! tmp) -+ tmp = simplify_gen_subreg (op_mode, -+ force_reg (value_mode, value1), -+ value_mode, 0); -+ } - else - { - tmp = gen_lowpart_if_possible (op_mode, value1); --- -2.44.2 - diff --git a/packages/gcc/14.2.0/chksum b/packages/gcc/14.2.0/chksum deleted file mode 100644 index 40000f5c..00000000 --- a/packages/gcc/14.2.0/chksum +++ /dev/null @@ -1,8 +0,0 @@ -md5 gcc-14.2.0.tar.xz 2268420ba02dc01821960e274711bde0 -sha1 gcc-14.2.0.tar.xz d91ecc3d20ce6298bd95f9b09cc51dc6d3c73ae3 -sha256 gcc-14.2.0.tar.xz a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9 -sha512 gcc-14.2.0.tar.xz 932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396 -md5 gcc-14.2.0.tar.gz b89ddcdaf5c1b6214abad40d9761a6ba -sha1 gcc-14.2.0.tar.gz d4d09500ace1dc9ab69f6c4c791de012da8607ed -sha256 gcc-14.2.0.tar.gz 7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293 -sha512 gcc-14.2.0.tar.gz d6828a5702ff4b667cc3e1e7e9f180191041b7efb68ffdc54248a42aa1799f41db6743acfe9ab74ea59977ba06f425fcf943a9fe3a77f9db706fc6bdbd657c1a diff --git a/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch b/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch deleted file mode 100644 index 487a28c3..00000000 --- a/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch +++ /dev/null @@ -1,127 +0,0 @@ -From b0f9ac365f91952f6f920c8e6aa4ddb819f47cc8 Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Tue, 23 Aug 2022 22:13:08 -0700 -Subject: [PATCH] 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 <keithp@keithp.com> ---- - 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 - ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -5931,3 +5931,10 @@ - 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 ---- /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 -+ <http://www.gnu.org/licenses/>. */ -+ -+#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 ---- /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 -+; <http://www.gnu.org/licenses/>. -+ -+-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. diff --git a/packages/gcc/14.2.0/version.desc b/packages/gcc/14.2.0/version.desc deleted file mode 100644 index e69de29b..00000000 --- a/packages/gcc/14.2.0/version.desc +++ /dev/null |