From acdd8dd14d498834589d5e5bda6c9f3d5f5860d8 Mon Sep 17 00:00:00 2001 From: Felix Singer Date: Sat, 6 Apr 2024 05:32:25 +0000 Subject: util/crossgcc: Update GCC from 13.2 to 14.1.0 Change-Id: Idf5912d1fcdfabab7fe006b7e0cd4ebd25c07d09 Signed-off-by: Felix Singer Reviewed-on: https://review.coreboot.org/c/coreboot/+/81683 Reviewed-by: Elyes Haouas Tested-by: build bot (Jenkins) Reviewed-by: Martin L Roth --- util/crossgcc/buildgcc | 2 +- .../gcc-13.2.0_asan_shadow_offset_callback.patch | 88 --------------- util/crossgcc/patches/gcc-13.2.0_gnat.patch | 108 ------------------ util/crossgcc/patches/gcc-13.2.0_libcpp.patch | 56 ---------- util/crossgcc/patches/gcc-13.2.0_libgcc.patch | 60 ---------- .../patches/gcc-13.2.0_musl_poisoned_calloc.patch | 122 --------------------- util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch | 55 ---------- .../gcc-14.1.0_asan_shadow_offset_callback.patch | 88 +++++++++++++++ util/crossgcc/patches/gcc-14.1.0_gnat.patch | 108 ++++++++++++++++++ util/crossgcc/patches/gcc-14.1.0_libcpp.patch | 56 ++++++++++ util/crossgcc/patches/gcc-14.1.0_libgcc.patch | 60 ++++++++++ .../patches/gcc-14.1.0_musl_poisoned_calloc.patch | 115 +++++++++++++++++++ util/crossgcc/patches/gcc-14.1.0_rv32iafc.patch | 55 ++++++++++ util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum | 1 - util/crossgcc/sum/gcc-14.1.0.tar.xz.cksum | 1 + 15 files changed, 484 insertions(+), 491 deletions(-) delete mode 100644 util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch delete mode 100644 util/crossgcc/patches/gcc-13.2.0_gnat.patch delete mode 100644 util/crossgcc/patches/gcc-13.2.0_libcpp.patch delete mode 100644 util/crossgcc/patches/gcc-13.2.0_libgcc.patch delete mode 100644 util/crossgcc/patches/gcc-13.2.0_musl_poisoned_calloc.patch delete mode 100644 util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch create mode 100644 util/crossgcc/patches/gcc-14.1.0_asan_shadow_offset_callback.patch create mode 100644 util/crossgcc/patches/gcc-14.1.0_gnat.patch create mode 100644 util/crossgcc/patches/gcc-14.1.0_libcpp.patch create mode 100644 util/crossgcc/patches/gcc-14.1.0_libgcc.patch create mode 100644 util/crossgcc/patches/gcc-14.1.0_musl_poisoned_calloc.patch create mode 100644 util/crossgcc/patches/gcc-14.1.0_rv32iafc.patch delete mode 100644 util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum create mode 100644 util/crossgcc/sum/gcc-14.1.0.tar.xz.cksum (limited to 'util/crossgcc') diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc index c1e93db2bb..73e0720983 100755 --- a/util/crossgcc/buildgcc +++ b/util/crossgcc/buildgcc @@ -38,7 +38,7 @@ COREBOOT_MIRROR_URL="https://www.coreboot.org/releases/crossgcc-sources" GMP_VERSION=6.3.0 MPFR_VERSION=4.2.1 MPC_VERSION=1.3.1 -GCC_VERSION=13.2.0 +GCC_VERSION=14.1.0 BINUTILS_VERSION=2.42 IASL_VERSION=20240321 # CLANG version number diff --git a/util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch b/util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch deleted file mode 100644 index d446025a8a..0000000000 --- a/util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 41a82fb711f3637b4b7f57756492b628058f9d5f Mon Sep 17 00:00:00 2001 -From: Harshit Sharma -Date: Fri, 10 Jul 2020 13:06:08 -0700 -Subject: [PATCH] crossgcc: Enable GCC to get asan shadow offset at runtime - -Unlike Linux kernel which has a static shadow region layout, we have multiple stages in -coreboot and thus require a different shadow offset address. Unfortunately, GCC currently -only supports adding a static shadow offset at compile time using -fasan-shadow-offset flag. - -For this reason, we enable GCC to determine asan shadow offset address at runtime using a -callback function named __asan_shadow_offset(). This supersedes the need to specify this -address at compile time. GCC then makes use of this shadow offset to protect stack buffers -by inserting red zones around them. - -Some other benefits of having this GCC patch are: -a. We can place the shadow region in a separate linker section with all its advantages like - automatic fit insurance. This ensures if a platform doesn't have enough memory space to - hold shadow region, the build will fail. (However, if we use a fixed shadow offset on a - platform that actually doesn't have enough memory, it may still build without any errors.) -b. We don't modify the memory layout compared to the current one, as we are placing the - shadow region at the end of the space already occupied by the program. -c. We can be much more flexible later if needed (thinking of other stages like bootblock). -d. Since we are appending the shadow buffer to the region already occupied, we make efficient - use of the limited memory available which is highly beneficial when using cache as ram. - -Further, we have made sure that if you compile you tree with ASan enabled but missed this -patch, it will end up in the following compilation error: -"invalid --param name 'asan-use-shadow-offset-callback'" -So, you cannot accidentally enable the feature without having your compiler patched. - -[pgeorgi: Updated for gcc 11.1] - -Signed-off-by: Harshit Sharma -Signed-off-by: Patrick Georgi - -diff --git a/gcc/asan.c b/gcc/asan.c -index 235e21947..713bf994d 100644 ---- a/gcc/asan.cc -+++ b/gcc/asan.cc -@@ -1389,13 +1389,28 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, - TREE_ASM_WRITTEN (decl) = 1; - TREE_ASM_WRITTEN (id) = 1; - emit_move_insn (mem, expand_normal (build_fold_addr_expr (decl))); -- shadow_base = expand_binop (Pmode, lshr_optab, base, -- gen_int_shift_amount (Pmode, ASAN_SHADOW_SHIFT), -- NULL_RTX, 1, OPTAB_DIRECT); -- shadow_base -- = plus_constant (Pmode, shadow_base, -- asan_shadow_offset () -- + (base_align_bias >> ASAN_SHADOW_SHIFT)); -+ if (param_asan_use_shadow_offset_callback) { -+ rtx addr, shadow_offset_rtx; -+ ret = init_one_libfunc ("__asan_shadow_offset"); -+ addr = convert_memory_address (ptr_mode, base); -+ ret = emit_library_call_value (ret, NULL_RTX, LCT_NORMAL, ptr_mode, -+ addr, ptr_mode); -+ shadow_offset_rtx = convert_memory_address (Pmode, ret); -+ shadow_base = expand_binop (Pmode, lshr_optab, base, -+ gen_int_shift_amount (Pmode, ASAN_SHADOW_SHIFT), -+ NULL_RTX, 1, OPTAB_DIRECT); -+ shadow_base = expand_binop (Pmode, add_optab, shadow_base, -+ shadow_offset_rtx, NULL_RTX, 1, OPTAB_LIB_WIDEN); -+ shadow_base = plus_constant (Pmode, shadow_base, -+ (base_align_bias >> ASAN_SHADOW_SHIFT)); -+ } else { -+ shadow_base = expand_binop (Pmode, lshr_optab, base, -+ gen_int_shift_amount (Pmode, ASAN_SHADOW_SHIFT), -+ NULL_RTX, 1, OPTAB_DIRECT); -+ shadow_base = plus_constant (Pmode, shadow_base, -+ asan_shadow_offset () -+ + (base_align_bias >> ASAN_SHADOW_SHIFT)); -+ } - gcc_assert (asan_shadow_set != -1 - && (ASAN_RED_ZONE_SIZE >> ASAN_SHADOW_SHIFT) == 4); - shadow_mem = gen_rtx_MEM (SImode, shadow_base); ---- gcc-11.1.0/gcc/params.opt~ 2021-05-11 09:02:51.897508677 +0200 -+++ gcc-11.1.0/gcc/params.opt 2021-05-11 09:10:43.692610696 +0200 -@@ -50,6 +50,10 @@ - Common Joined UInteger Var(param_asan_instrumentation_with_call_threshold) Init(7000) Param Optimization - Use callbacks instead of inline code if number of accesses in function becomes greater or equal to this number. - -+-param=asan-use-shadow-offset-callback= -+Common Joined UInteger Var(param_asan_use_shadow_offset_callback) Init(0) IntegerRange(0, 1) Param Optimization -+Use shadow offset callback function at runtime instead of fixed value at compile time at the cost of runtime overhead. -+ - -param=asan-memintrin= - Common Joined UInteger Var(param_asan_memintrin) Init(1) IntegerRange(0, 1) Param Optimization - Enable asan builtin functions protection. diff --git a/util/crossgcc/patches/gcc-13.2.0_gnat.patch b/util/crossgcc/patches/gcc-13.2.0_gnat.patch deleted file mode 100644 index 2a37b155c4..0000000000 --- a/util/crossgcc/patches/gcc-13.2.0_gnat.patch +++ /dev/null @@ -1,108 +0,0 @@ -From b1b16478729aea709e7ef81224995b6d26b38a87 Mon Sep 17 00:00:00 2001 -From: Nico Huber -Date: Sun, 16 Jul 2023 00:30:03 +0200 -Subject: [PATCH] GNAT: Build cross compilers with host runtime - -When building with an older host toolchain, the shipped libgnat -sources may not be compatible. So rely on the host runtime just -like we do for a stage1 build. - -Signed-off-by: Nico Huber ---- - gcc/ada/gcc-interface/Make-lang.in | 16 +++++++++++++--- - gcc/ada/init.c | 4 ++++ - 2 files changed, 17 insertions(+), 3 deletions(-) - -diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in -index 9507f2f09203..cf7ec4cc1662 100644 ---- a/gcc/ada/gcc-interface/Make-lang.in -+++ b/gcc/ada/gcc-interface/Make-lang.in -@@ -57,18 +57,21 @@ WARN_ADAFLAGS= -W -Wall - # checks fully active. - - STAGE1=False -+HOST_RT=False - GNATBIND_FLAGS= - GNATLIB= - -+ADAFLAGS=$(COMMON_ADAFLAGS) -gnatwns - ifeq ($(CROSS),) -- ADAFLAGS=$(COMMON_ADAFLAGS) -gnatwns - - ifeq ($(if $(wildcard ../stage_current),$(shell cat ../stage_current),stage1),stage1) - STAGE1=True - GNATBIND_FLAGS=-t -+ HOST_RT=True - endif - else -- ADAFLAGS=$(COMMON_ADAFLAGS) -+ GNATBIND_FLAGS=-t -+ HOST_RT=True - endif - - ALL_ADAFLAGS = \ -@@ -87,7 +89,7 @@ ifeq ($(strip $(filter-out hpux%,$(host_os))),) - STAGE1_LIBS=/usr/lib/libcl.a - endif - --ifeq ($(STAGE1),True) -+ifeq ($(HOST_RT),True) - ADA_INCLUDES=$(COMMON_ADA_INCLUDES) - adalib=$(dir $(shell $(CC) -print-libgcc-file-name))adalib - GNATLIB=$(adalib)/$(if $(wildcard $(adalib)/libgnat.a),libgnat.a,libgnat.so) $(STAGE1_LIBS) -@@ -485,6 +487,7 @@ GNAT1_C_OBJS+= \ - ada/rtinit.o \ - ada/seh_init.o - -+ifeq ($(HOST_RT),False) - GNAT_ADA_OBJS+= \ - ada/gcc-interface/system.o \ - ada/libgnat/a-assert.o \ -@@ -555,6 +558,7 @@ GNAT_ADA_OBJS+= \ - ada/libgnat/s-wchstw.o \ - ada/libgnat/s-widuns.o - endif -+endif - - # Object files for gnat executables - GNAT1_ADA_OBJS = $(GNAT_ADA_OBJS) ada/back_end.o ada/gnat1drv.o -@@ -656,6 +660,9 @@ GNATBIND_OBJS += \ - ada/rtfinal.o \ - ada/rtinit.o \ - ada/seh_init.o \ -+ -+ifeq ($(HOST_RT),False) -+GNATBIND_OBJS += \ - ada/gcc-interface/system.o \ - ada/libgnat/a-assert.o \ - ada/libgnat/a-elchha.o \ -@@ -707,6 +714,9 @@ GNATBIND_OBJS += \ - ada/libgnat/s-wchjis.o \ - ada/libgnat/s-wchstw.o \ - ada/libgnat/s-widuns.o \ -+ -+endif -+GNATBIND_OBJS += \ - ada/adaint.o \ - ada/argv.o \ - ada/cio.o \ -diff --git a/gcc/ada/init.c b/gcc/ada/init.c -index 5212a38490d3..5ae2efd32ef3 100644 ---- a/gcc/ada/init.c -+++ b/gcc/ada/init.c -@@ -93,8 +93,12 @@ extern struct Exception_Data storage_error; - #ifdef CERT - #define Raise_From_Signal_Handler __gnat_raise_exception - #else -+#if __GNUC__ < 12 -+#define Raise_From_Signal_Handler ada__exceptions__raise_from_signal_handler -+#else - #define Raise_From_Signal_Handler __gnat_raise_from_signal_handler - #endif -+#endif - - extern void Raise_From_Signal_Handler (struct Exception_Data *, const void *) - ATTRIBUTE_NORETURN; --- -2.39.0 - diff --git a/util/crossgcc/patches/gcc-13.2.0_libcpp.patch b/util/crossgcc/patches/gcc-13.2.0_libcpp.patch deleted file mode 100644 index 2b0c95338f..0000000000 --- a/util/crossgcc/patches/gcc-13.2.0_libcpp.patch +++ /dev/null @@ -1,56 +0,0 @@ -GCC with `-Wformat-security -Werror=format-security` hardening options enabled -by default rejects some codes in libcpp. This patch fixes them. - ---- gcc-8.3.0/libcpp/expr.cc.bak 2020-09-11 15:44:45.770000000 +0900 -+++ gcc-8.3.0/libcpp/expr.cc 2020-09-11 15:46:22.370000000 +0900 -@@ -794,10 +794,10 @@ - - if (CPP_OPTION (pfile, c99)) - cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, -- 0, message); -+ 0, "%s", message); - else - cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG, -- virtual_location, 0, message); -+ virtual_location, 0, "%s", message); - } - - result |= CPP_N_INTEGER; ---- gcc-8.3.0/libcpp/macro.cc.bak 2020-09-11 16:01:42.550000000 +0900 -+++ gcc-8.3.0/libcpp/macro.cc 2020-09-11 16:03:47.850000000 +0900 -@@ -160,7 +160,7 @@ - if (m_state == 2 && token->type == CPP_PASTE) - { - cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc, -- vaopt_paste_error); -+ "%s", vaopt_paste_error); - return ERROR; - } - /* Advance states before further considering this token, in -@@ -189,7 +189,7 @@ - if (was_paste) - { - cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc, -- vaopt_paste_error); -+ "%s", vaopt_paste_error); - return ERROR; - } - -@@ -3361,7 +3361,7 @@ - function-like macros, but not at the end. */ - if (following_paste_op) - { -- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); -+ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); - goto out; - } - if (!vaopt_tracker.completed ()) -@@ -3374,7 +3374,7 @@ - function-like macros, but not at the beginning. */ - if (macro->count == 1) - { -- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); -+ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); - goto out; - } - diff --git a/util/crossgcc/patches/gcc-13.2.0_libgcc.patch b/util/crossgcc/patches/gcc-13.2.0_libgcc.patch deleted file mode 100644 index 2f75c92b41..0000000000 --- a/util/crossgcc/patches/gcc-13.2.0_libgcc.patch +++ /dev/null @@ -1,60 +0,0 @@ -This enables building on Mac OS and FreeBSD by adding support to their -variants of the sed utility. - -diff -urN gcc-5.2.0.orig/libgcc/config/t-hardfp gcc-5.2.0/libgcc/config/t-hardfp ---- gcc-5.2.0.orig/libgcc/config/t-hardfp 2015-01-05 04:33:28.000000000 -0800 -+++ gcc-8.1.0/libgcc/config/t-hardfp 2016-04-06 12:04:51.000000000 -0700 -@@ -59,21 +59,52 @@ - - hardfp_func_list := $(filter-out $(hardfp_exclusions),$(hardfp_func_list)) - -+HOST_OS ?= $(shell uname) -+ - # Regexp for matching a floating-point mode. -+ifeq ($(HOST_OS), Darwin) -+hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g') -+else -+ifeq ($(HOST_OS), FreeBSD) -+hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g') -+else - hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /\\|/g') -+endif -+endif - - # Regexp for matching the end of a function name, after the last - # floating-point mode. -+ifeq ($(HOST_OS), Darwin) -+hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g') -+else -+ifeq ($(HOST_OS), FreeBSD) -+hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g') -+else - hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /\\|/g') -+endif -+endif - - # Add -D options to define: - # FUNC: the function name (e.g. __addsf3) - # OP: the function name without the leading __ and with the last - # floating-point mode removed (e.g. add3) - # TYPE: the last floating-point mode (e.g. sf) -+ -+ifeq ($(HOST_OS), Darwin) - hardfp_defines_for = \ - $(shell echo $1 | \ -- sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') -+ sed -E 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') -+else -+ifeq ($(HOST_OS), FreeBSD) -+hardfp_defines_for = \ -+ $(shell echo $1 | \ -+ sed -r 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') -+else -+hardfp_defines_for = \ -+ $(shell echo $1 | \ -+ sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') -+endif -+endif - - hardfp-o = $(patsubst %,%$(objext),$(hardfp_func_list)) - $(hardfp-o): %$(objext): $(srcdir)/config/hardfp.c diff --git a/util/crossgcc/patches/gcc-13.2.0_musl_poisoned_calloc.patch b/util/crossgcc/patches/gcc-13.2.0_musl_poisoned_calloc.patch deleted file mode 100644 index 552a7e7d7f..0000000000 --- a/util/crossgcc/patches/gcc-13.2.0_musl_poisoned_calloc.patch +++ /dev/null @@ -1,122 +0,0 @@ -Musl's uses calloc() which is marked as poisoned by GCC's -"system.h". Work around that by making sure that gets -included first. - ---- gcc-13.2.0/gcc/ada/adaint.c -+++ gcc-13.2.0.musl/gcc/ada/adaint.c -@@ -101,6 +101,10 @@ - #include - #endif - -+#if defined (__linux__) -+#include -+#endif -+ - #ifdef IN_RTS - - #ifdef STANDALONE -@@ -3441,7 +3445,6 @@ - #endif - - #if defined (__linux__) --#include - - /* glibc versions earlier than 2.7 do not define the routines to handle - dynamically allocated CPU sets. For these targets, we use the static ---- gcc-13.2.0/gcc/ada/argv.c -+++ gcc-13.2.0.musl/gcc/ada/argv.c -@@ -42,6 +42,8 @@ - main program, and these routines are accessed from the - Ada.Command_Line.Environment package. */ - -+#include "adaint.h" -+ - #ifdef IN_RTS - #include "runtime.h" - #include -@@ -50,8 +52,6 @@ - #include "config.h" - #include "system.h" - #endif -- --#include "adaint.h" - - #ifdef __cplusplus - extern "C" { ---- gcc-13.2.0/gcc/ada/cio.c -+++ gcc-13.2.0.musl/gcc/ada/cio.c -@@ -29,6 +29,8 @@ - * * - ****************************************************************************/ - -+#include "adaint.h" -+ - #ifdef IN_RTS - #include "runtime.h" - #include -@@ -36,8 +38,6 @@ - #include "config.h" - #include "system.h" - #endif -- --#include "adaint.h" - - /* We need L_tmpnam definition */ - #include ---- gcc-13.2.0/gcc/ada/cstreams.c -+++ gcc-13.2.0.musl/gcc/ada/cstreams.c -@@ -58,14 +58,14 @@ - #include "vxWorks.h" - #endif - -+#include "adaint.h" -+ - #ifdef IN_RTS - #include - #else - #include "config.h" - #include "system.h" - #endif -- --#include "adaint.h" - - #ifdef __cplusplus - extern "C" { ---- gcc-13.2.0/gcc/ada/init.c -+++ gcc-13.2.0.musl/gcc/ada/init.c -@@ -53,6 +53,8 @@ - #undef __linux__ - #endif - -+#include "adaint.h" -+ - #ifdef IN_RTS - - #ifdef STANDALONE -@@ -71,7 +73,6 @@ - #include "system.h" - #endif - --#include "adaint.h" - #include "raise.h" - - #ifdef __cplusplus ---- gcc-13.2.0/gcc/ada/raise.c -+++ gcc-13.2.0.musl/gcc/ada/raise.c -@@ -32,6 +32,8 @@ - /* Shared routines to support exception handling. __gnat_unhandled_terminate - is shared between all exception handling mechanisms. */ - -+#include "adaint.h" -+ - #ifdef IN_RTS - #include "runtime.h" - #else -@@ -39,7 +41,6 @@ - #include "system.h" - #endif - --#include "adaint.h" - #include "raise.h" - - #ifdef __cplusplus diff --git a/util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch b/util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch deleted file mode 100644 index 5b0d715c63..0000000000 --- a/util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 88bc675eab98cea388daf40396686178ca5fcdb3 Mon Sep 17 00:00:00 2001 -From: Peter Marheine -Date: Mon, 15 Aug 2022 11:01:50 +1000 -Subject: [PATCH] riscv: elf-multilib: add rv32iafc to defaults - -rv32iafc-ilp32 is compatible with rv32iac-ilp32 for library -implementation, so add a reuse rule allowing the default configuration -to support rv32iafc. - --IAFC is an unusual configuration (much less common than -IMAFC), but -multilib reuse has essentially no cost: this change is useful to users -of platforms that support hardware floating-point but cannot use -hardware multiply/divide for any reason. To avoid generating a new set -of libraries this is limited to the soft-float ABI. - -Tested by verifying that `gcc -march=rv32iafc -mabi=ilp32 ---print-search-dirs` refers to the rv32iac/ilp32 library directory as -expected, rather than just the root library directory as occurs when an -unsupported target is selected (for instance, rv32id). - -Signed-off-by: Peter Marheine ---- - gcc/config/riscv/t-elf-multilib | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/gcc/config/riscv/t-elf-multilib b/gcc/config/riscv/t-elf-multilib -index 19f9434616c..6e74b1811be 100644 ---- a/gcc/config/riscv/t-elf-multilib -+++ b/gcc/config/riscv/t-elf-multilib -@@ -1,11 +1,12 @@ - # This file was generated by multilib-generator with the command: --# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32-- rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- --MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d -+# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32--f rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- -+MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32iafc/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d - MULTILIB_DIRNAMES = rv32i \ - rv32ic \ - rv32im \ - rv32imc \ - rv32iac \ -+rv32iafc \ - rv32imac \ - rv32imafc \ - rv32imafdc \ -@@ -25,6 +26,7 @@ march=rv64imac/mabi=lp64 \ - march=rv64imafdc/mabi=lp64d - MULTILIB_REUSE = march.rv32i/mabi.ilp32=march.rv32ic/mabi.ilp32 \ - march.rv32im/mabi.ilp32=march.rv32imc/mabi.ilp32 \ -+march.rv32iac/mabi.ilp32=march.rv32iafc/mabi.ilp32 \ - march.rv32imafc/mabi.ilp32f=march.rv32imafdc/mabi.ilp32f \ - march.rv32imafc/mabi.ilp32f=march.rv32gc/mabi.ilp32f \ - march.rv64imafdc/mabi.lp64d=march.rv64gc/mabi.lp64d --- -2.37.1.595.g718a3a8f04-goog - diff --git a/util/crossgcc/patches/gcc-14.1.0_asan_shadow_offset_callback.patch b/util/crossgcc/patches/gcc-14.1.0_asan_shadow_offset_callback.patch new file mode 100644 index 0000000000..d446025a8a --- /dev/null +++ b/util/crossgcc/patches/gcc-14.1.0_asan_shadow_offset_callback.patch @@ -0,0 +1,88 @@ +From 41a82fb711f3637b4b7f57756492b628058f9d5f Mon Sep 17 00:00:00 2001 +From: Harshit Sharma +Date: Fri, 10 Jul 2020 13:06:08 -0700 +Subject: [PATCH] crossgcc: Enable GCC to get asan shadow offset at runtime + +Unlike Linux kernel which has a static shadow region layout, we have multiple stages in +coreboot and thus require a different shadow offset address. Unfortunately, GCC currently +only supports adding a static shadow offset at compile time using -fasan-shadow-offset flag. + +For this reason, we enable GCC to determine asan shadow offset address at runtime using a +callback function named __asan_shadow_offset(). This supersedes the need to specify this +address at compile time. GCC then makes use of this shadow offset to protect stack buffers +by inserting red zones around them. + +Some other benefits of having this GCC patch are: +a. We can place the shadow region in a separate linker section with all its advantages like + automatic fit insurance. This ensures if a platform doesn't have enough memory space to + hold shadow region, the build will fail. (However, if we use a fixed shadow offset on a + platform that actually doesn't have enough memory, it may still build without any errors.) +b. We don't modify the memory layout compared to the current one, as we are placing the + shadow region at the end of the space already occupied by the program. +c. We can be much more flexible later if needed (thinking of other stages like bootblock). +d. Since we are appending the shadow buffer to the region already occupied, we make efficient + use of the limited memory available which is highly beneficial when using cache as ram. + +Further, we have made sure that if you compile you tree with ASan enabled but missed this +patch, it will end up in the following compilation error: +"invalid --param name 'asan-use-shadow-offset-callback'" +So, you cannot accidentally enable the feature without having your compiler patched. + +[pgeorgi: Updated for gcc 11.1] + +Signed-off-by: Harshit Sharma +Signed-off-by: Patrick Georgi + +diff --git a/gcc/asan.c b/gcc/asan.c +index 235e21947..713bf994d 100644 +--- a/gcc/asan.cc ++++ b/gcc/asan.cc +@@ -1389,13 +1389,28 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, + TREE_ASM_WRITTEN (decl) = 1; + TREE_ASM_WRITTEN (id) = 1; + emit_move_insn (mem, expand_normal (build_fold_addr_expr (decl))); +- shadow_base = expand_binop (Pmode, lshr_optab, base, +- gen_int_shift_amount (Pmode, ASAN_SHADOW_SHIFT), +- NULL_RTX, 1, OPTAB_DIRECT); +- shadow_base +- = plus_constant (Pmode, shadow_base, +- asan_shadow_offset () +- + (base_align_bias >> ASAN_SHADOW_SHIFT)); ++ if (param_asan_use_shadow_offset_callback) { ++ rtx addr, shadow_offset_rtx; ++ ret = init_one_libfunc ("__asan_shadow_offset"); ++ addr = convert_memory_address (ptr_mode, base); ++ ret = emit_library_call_value (ret, NULL_RTX, LCT_NORMAL, ptr_mode, ++ addr, ptr_mode); ++ shadow_offset_rtx = convert_memory_address (Pmode, ret); ++ shadow_base = expand_binop (Pmode, lshr_optab, base, ++ gen_int_shift_amount (Pmode, ASAN_SHADOW_SHIFT), ++ NULL_RTX, 1, OPTAB_DIRECT); ++ shadow_base = expand_binop (Pmode, add_optab, shadow_base, ++ shadow_offset_rtx, NULL_RTX, 1, OPTAB_LIB_WIDEN); ++ shadow_base = plus_constant (Pmode, shadow_base, ++ (base_align_bias >> ASAN_SHADOW_SHIFT)); ++ } else { ++ shadow_base = expand_binop (Pmode, lshr_optab, base, ++ gen_int_shift_amount (Pmode, ASAN_SHADOW_SHIFT), ++ NULL_RTX, 1, OPTAB_DIRECT); ++ shadow_base = plus_constant (Pmode, shadow_base, ++ asan_shadow_offset () ++ + (base_align_bias >> ASAN_SHADOW_SHIFT)); ++ } + gcc_assert (asan_shadow_set != -1 + && (ASAN_RED_ZONE_SIZE >> ASAN_SHADOW_SHIFT) == 4); + shadow_mem = gen_rtx_MEM (SImode, shadow_base); +--- gcc-11.1.0/gcc/params.opt~ 2021-05-11 09:02:51.897508677 +0200 ++++ gcc-11.1.0/gcc/params.opt 2021-05-11 09:10:43.692610696 +0200 +@@ -50,6 +50,10 @@ + Common Joined UInteger Var(param_asan_instrumentation_with_call_threshold) Init(7000) Param Optimization + Use callbacks instead of inline code if number of accesses in function becomes greater or equal to this number. + ++-param=asan-use-shadow-offset-callback= ++Common Joined UInteger Var(param_asan_use_shadow_offset_callback) Init(0) IntegerRange(0, 1) Param Optimization ++Use shadow offset callback function at runtime instead of fixed value at compile time at the cost of runtime overhead. ++ + -param=asan-memintrin= + Common Joined UInteger Var(param_asan_memintrin) Init(1) IntegerRange(0, 1) Param Optimization + Enable asan builtin functions protection. diff --git a/util/crossgcc/patches/gcc-14.1.0_gnat.patch b/util/crossgcc/patches/gcc-14.1.0_gnat.patch new file mode 100644 index 0000000000..2a37b155c4 --- /dev/null +++ b/util/crossgcc/patches/gcc-14.1.0_gnat.patch @@ -0,0 +1,108 @@ +From b1b16478729aea709e7ef81224995b6d26b38a87 Mon Sep 17 00:00:00 2001 +From: Nico Huber +Date: Sun, 16 Jul 2023 00:30:03 +0200 +Subject: [PATCH] GNAT: Build cross compilers with host runtime + +When building with an older host toolchain, the shipped libgnat +sources may not be compatible. So rely on the host runtime just +like we do for a stage1 build. + +Signed-off-by: Nico Huber +--- + gcc/ada/gcc-interface/Make-lang.in | 16 +++++++++++++--- + gcc/ada/init.c | 4 ++++ + 2 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in +index 9507f2f09203..cf7ec4cc1662 100644 +--- a/gcc/ada/gcc-interface/Make-lang.in ++++ b/gcc/ada/gcc-interface/Make-lang.in +@@ -57,18 +57,21 @@ WARN_ADAFLAGS= -W -Wall + # checks fully active. + + STAGE1=False ++HOST_RT=False + GNATBIND_FLAGS= + GNATLIB= + ++ADAFLAGS=$(COMMON_ADAFLAGS) -gnatwns + ifeq ($(CROSS),) +- ADAFLAGS=$(COMMON_ADAFLAGS) -gnatwns + + ifeq ($(if $(wildcard ../stage_current),$(shell cat ../stage_current),stage1),stage1) + STAGE1=True + GNATBIND_FLAGS=-t ++ HOST_RT=True + endif + else +- ADAFLAGS=$(COMMON_ADAFLAGS) ++ GNATBIND_FLAGS=-t ++ HOST_RT=True + endif + + ALL_ADAFLAGS = \ +@@ -87,7 +89,7 @@ ifeq ($(strip $(filter-out hpux%,$(host_os))),) + STAGE1_LIBS=/usr/lib/libcl.a + endif + +-ifeq ($(STAGE1),True) ++ifeq ($(HOST_RT),True) + ADA_INCLUDES=$(COMMON_ADA_INCLUDES) + adalib=$(dir $(shell $(CC) -print-libgcc-file-name))adalib + GNATLIB=$(adalib)/$(if $(wildcard $(adalib)/libgnat.a),libgnat.a,libgnat.so) $(STAGE1_LIBS) +@@ -485,6 +487,7 @@ GNAT1_C_OBJS+= \ + ada/rtinit.o \ + ada/seh_init.o + ++ifeq ($(HOST_RT),False) + GNAT_ADA_OBJS+= \ + ada/gcc-interface/system.o \ + ada/libgnat/a-assert.o \ +@@ -555,6 +558,7 @@ GNAT_ADA_OBJS+= \ + ada/libgnat/s-wchstw.o \ + ada/libgnat/s-widuns.o + endif ++endif + + # Object files for gnat executables + GNAT1_ADA_OBJS = $(GNAT_ADA_OBJS) ada/back_end.o ada/gnat1drv.o +@@ -656,6 +660,9 @@ GNATBIND_OBJS += \ + ada/rtfinal.o \ + ada/rtinit.o \ + ada/seh_init.o \ ++ ++ifeq ($(HOST_RT),False) ++GNATBIND_OBJS += \ + ada/gcc-interface/system.o \ + ada/libgnat/a-assert.o \ + ada/libgnat/a-elchha.o \ +@@ -707,6 +714,9 @@ GNATBIND_OBJS += \ + ada/libgnat/s-wchjis.o \ + ada/libgnat/s-wchstw.o \ + ada/libgnat/s-widuns.o \ ++ ++endif ++GNATBIND_OBJS += \ + ada/adaint.o \ + ada/argv.o \ + ada/cio.o \ +diff --git a/gcc/ada/init.c b/gcc/ada/init.c +index 5212a38490d3..5ae2efd32ef3 100644 +--- a/gcc/ada/init.c ++++ b/gcc/ada/init.c +@@ -93,8 +93,12 @@ extern struct Exception_Data storage_error; + #ifdef CERT + #define Raise_From_Signal_Handler __gnat_raise_exception + #else ++#if __GNUC__ < 12 ++#define Raise_From_Signal_Handler ada__exceptions__raise_from_signal_handler ++#else + #define Raise_From_Signal_Handler __gnat_raise_from_signal_handler + #endif ++#endif + + extern void Raise_From_Signal_Handler (struct Exception_Data *, const void *) + ATTRIBUTE_NORETURN; +-- +2.39.0 + diff --git a/util/crossgcc/patches/gcc-14.1.0_libcpp.patch b/util/crossgcc/patches/gcc-14.1.0_libcpp.patch new file mode 100644 index 0000000000..2b0c95338f --- /dev/null +++ b/util/crossgcc/patches/gcc-14.1.0_libcpp.patch @@ -0,0 +1,56 @@ +GCC with `-Wformat-security -Werror=format-security` hardening options enabled +by default rejects some codes in libcpp. This patch fixes them. + +--- gcc-8.3.0/libcpp/expr.cc.bak 2020-09-11 15:44:45.770000000 +0900 ++++ gcc-8.3.0/libcpp/expr.cc 2020-09-11 15:46:22.370000000 +0900 +@@ -794,10 +794,10 @@ + + if (CPP_OPTION (pfile, c99)) + cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, +- 0, message); ++ 0, "%s", message); + else + cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG, +- virtual_location, 0, message); ++ virtual_location, 0, "%s", message); + } + + result |= CPP_N_INTEGER; +--- gcc-8.3.0/libcpp/macro.cc.bak 2020-09-11 16:01:42.550000000 +0900 ++++ gcc-8.3.0/libcpp/macro.cc 2020-09-11 16:03:47.850000000 +0900 +@@ -160,7 +160,7 @@ + if (m_state == 2 && token->type == CPP_PASTE) + { + cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc, +- vaopt_paste_error); ++ "%s", vaopt_paste_error); + return ERROR; + } + /* Advance states before further considering this token, in +@@ -189,7 +189,7 @@ + if (was_paste) + { + cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc, +- vaopt_paste_error); ++ "%s", vaopt_paste_error); + return ERROR; + } + +@@ -3361,7 +3361,7 @@ + function-like macros, but not at the end. */ + if (following_paste_op) + { +- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); ++ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); + goto out; + } + if (!vaopt_tracker.completed ()) +@@ -3374,7 +3374,7 @@ + function-like macros, but not at the beginning. */ + if (macro->count == 1) + { +- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); ++ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); + goto out; + } + diff --git a/util/crossgcc/patches/gcc-14.1.0_libgcc.patch b/util/crossgcc/patches/gcc-14.1.0_libgcc.patch new file mode 100644 index 0000000000..2f75c92b41 --- /dev/null +++ b/util/crossgcc/patches/gcc-14.1.0_libgcc.patch @@ -0,0 +1,60 @@ +This enables building on Mac OS and FreeBSD by adding support to their +variants of the sed utility. + +diff -urN gcc-5.2.0.orig/libgcc/config/t-hardfp gcc-5.2.0/libgcc/config/t-hardfp +--- gcc-5.2.0.orig/libgcc/config/t-hardfp 2015-01-05 04:33:28.000000000 -0800 ++++ gcc-8.1.0/libgcc/config/t-hardfp 2016-04-06 12:04:51.000000000 -0700 +@@ -59,21 +59,52 @@ + + hardfp_func_list := $(filter-out $(hardfp_exclusions),$(hardfp_func_list)) + ++HOST_OS ?= $(shell uname) ++ + # Regexp for matching a floating-point mode. ++ifeq ($(HOST_OS), Darwin) ++hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g') ++else ++ifeq ($(HOST_OS), FreeBSD) ++hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g') ++else + hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /\\|/g') ++endif ++endif + + # Regexp for matching the end of a function name, after the last + # floating-point mode. ++ifeq ($(HOST_OS), Darwin) ++hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g') ++else ++ifeq ($(HOST_OS), FreeBSD) ++hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g') ++else + hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /\\|/g') ++endif ++endif + + # Add -D options to define: + # FUNC: the function name (e.g. __addsf3) + # OP: the function name without the leading __ and with the last + # floating-point mode removed (e.g. add3) + # TYPE: the last floating-point mode (e.g. sf) ++ ++ifeq ($(HOST_OS), Darwin) + hardfp_defines_for = \ + $(shell echo $1 | \ +- sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') ++ sed -E 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') ++else ++ifeq ($(HOST_OS), FreeBSD) ++hardfp_defines_for = \ ++ $(shell echo $1 | \ ++ sed -r 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') ++else ++hardfp_defines_for = \ ++ $(shell echo $1 | \ ++ sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/') ++endif ++endif + + hardfp-o = $(patsubst %,%$(objext),$(hardfp_func_list)) + $(hardfp-o): %$(objext): $(srcdir)/config/hardfp.c diff --git a/util/crossgcc/patches/gcc-14.1.0_musl_poisoned_calloc.patch b/util/crossgcc/patches/gcc-14.1.0_musl_poisoned_calloc.patch new file mode 100644 index 0000000000..b66380dad2 --- /dev/null +++ b/util/crossgcc/patches/gcc-14.1.0_musl_poisoned_calloc.patch @@ -0,0 +1,115 @@ +Musl's uses calloc() which is marked as poisoned by GCC's +"system.h". Work around that by making sure that gets +included first. + +--- gcc-13.2.0/gcc/ada/adaint.c ++++ gcc-13.2.0.musl/gcc/ada/adaint.c +@@ -101,6 +101,10 @@ + #include + #endif + ++#if defined (__linux__) ++#include ++#endif ++ + #ifdef IN_RTS + + #ifdef STANDALONE +@@ -3441,7 +3445,6 @@ + #endif + + #if defined (__linux__) +-#include + + /* glibc versions earlier than 2.7 do not define the routines to handle + dynamically allocated CPU sets. For these targets, we use the static +--- gcc-14-20240211/gcc/ada/argv.c ++++ gcc-14-20240211.musl/gcc/ada/argv.c +@@ -51,10 +51,6 @@ + #include "system.h" + #endif + +-#ifndef LIGHT_RUNTIME +-#include "adaint.h" +-#endif +- + #ifdef __cplusplus + extern "C" { + #endif +--- gcc-13.2.0/gcc/ada/cio.c ++++ gcc-13.2.0.musl/gcc/ada/cio.c +@@ -29,6 +29,8 @@ + * * + ****************************************************************************/ + ++#include "adaint.h" ++ + #ifdef IN_RTS + #include "runtime.h" + #include +@@ -36,8 +38,6 @@ + #include "config.h" + #include "system.h" + #endif +- +-#include "adaint.h" + + /* We need L_tmpnam definition */ + #include +--- gcc-13.2.0/gcc/ada/cstreams.c ++++ gcc-13.2.0.musl/gcc/ada/cstreams.c +@@ -58,14 +58,14 @@ + #include "vxWorks.h" + #endif + ++#include "adaint.h" ++ + #ifdef IN_RTS + #include + #else + #include "config.h" + #include "system.h" + #endif +- +-#include "adaint.h" + + #ifdef __cplusplus + extern "C" { +--- gcc-13.2.0/gcc/ada/init.c ++++ gcc-13.2.0.musl/gcc/ada/init.c +@@ -53,6 +53,8 @@ + #undef __linux__ + #endif + ++#include "adaint.h" ++ + #ifdef IN_RTS + + #ifdef STANDALONE +@@ -71,7 +73,6 @@ + #include "system.h" + #endif + +-#include "adaint.h" + #include "raise.h" + + #ifdef __cplusplus +--- gcc-13.2.0/gcc/ada/raise.c ++++ gcc-13.2.0.musl/gcc/ada/raise.c +@@ -32,6 +32,8 @@ + /* Shared routines to support exception handling. __gnat_unhandled_terminate + is shared between all exception handling mechanisms. */ + ++#include "adaint.h" ++ + #ifdef IN_RTS + #include "runtime.h" + #else +@@ -39,7 +41,6 @@ + #include "system.h" + #endif + +-#include "adaint.h" + #include "raise.h" + + #ifdef __cplusplus diff --git a/util/crossgcc/patches/gcc-14.1.0_rv32iafc.patch b/util/crossgcc/patches/gcc-14.1.0_rv32iafc.patch new file mode 100644 index 0000000000..5b0d715c63 --- /dev/null +++ b/util/crossgcc/patches/gcc-14.1.0_rv32iafc.patch @@ -0,0 +1,55 @@ +From 88bc675eab98cea388daf40396686178ca5fcdb3 Mon Sep 17 00:00:00 2001 +From: Peter Marheine +Date: Mon, 15 Aug 2022 11:01:50 +1000 +Subject: [PATCH] riscv: elf-multilib: add rv32iafc to defaults + +rv32iafc-ilp32 is compatible with rv32iac-ilp32 for library +implementation, so add a reuse rule allowing the default configuration +to support rv32iafc. + +-IAFC is an unusual configuration (much less common than -IMAFC), but +multilib reuse has essentially no cost: this change is useful to users +of platforms that support hardware floating-point but cannot use +hardware multiply/divide for any reason. To avoid generating a new set +of libraries this is limited to the soft-float ABI. + +Tested by verifying that `gcc -march=rv32iafc -mabi=ilp32 +--print-search-dirs` refers to the rv32iac/ilp32 library directory as +expected, rather than just the root library directory as occurs when an +unsupported target is selected (for instance, rv32id). + +Signed-off-by: Peter Marheine +--- + gcc/config/riscv/t-elf-multilib | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/gcc/config/riscv/t-elf-multilib b/gcc/config/riscv/t-elf-multilib +index 19f9434616c..6e74b1811be 100644 +--- a/gcc/config/riscv/t-elf-multilib ++++ b/gcc/config/riscv/t-elf-multilib +@@ -1,11 +1,12 @@ + # This file was generated by multilib-generator with the command: +-# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32-- rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- +-MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d ++# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32--f rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- ++MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32iafc/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d + MULTILIB_DIRNAMES = rv32i \ + rv32ic \ + rv32im \ + rv32imc \ + rv32iac \ ++rv32iafc \ + rv32imac \ + rv32imafc \ + rv32imafdc \ +@@ -25,6 +26,7 @@ march=rv64imac/mabi=lp64 \ + march=rv64imafdc/mabi=lp64d + MULTILIB_REUSE = march.rv32i/mabi.ilp32=march.rv32ic/mabi.ilp32 \ + march.rv32im/mabi.ilp32=march.rv32imc/mabi.ilp32 \ ++march.rv32iac/mabi.ilp32=march.rv32iafc/mabi.ilp32 \ + march.rv32imafc/mabi.ilp32f=march.rv32imafdc/mabi.ilp32f \ + march.rv32imafc/mabi.ilp32f=march.rv32gc/mabi.ilp32f \ + march.rv64imafdc/mabi.lp64d=march.rv64gc/mabi.lp64d +-- +2.37.1.595.g718a3a8f04-goog + diff --git a/util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum b/util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum deleted file mode 100644 index dcf9d41c17..0000000000 --- a/util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum +++ /dev/null @@ -1 +0,0 @@ -5f95b6d042fb37d45c6cbebfc91decfbc4fb493c tarballs/gcc-13.2.0.tar.xz diff --git a/util/crossgcc/sum/gcc-14.1.0.tar.xz.cksum b/util/crossgcc/sum/gcc-14.1.0.tar.xz.cksum new file mode 100644 index 0000000000..b512e724b6 --- /dev/null +++ b/util/crossgcc/sum/gcc-14.1.0.tar.xz.cksum @@ -0,0 +1 @@ +0aec8d432b8473559942a45c12459a5db3a04618 tarballs/gcc-14.1.0.tar.xz -- cgit v1.2.3