summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xutil/crossgcc/buildgcc2
-rw-r--r--util/crossgcc/patches/gcc-11.4.0_ada-musl_workaround.patch120
-rw-r--r--util/crossgcc/patches/gcc-11.4.0_gnat.patch41
-rw-r--r--util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch (renamed from util/crossgcc/patches/gcc-11.4.0_asan_shadow_offset_callback.patch)4
-rw-r--r--util/crossgcc/patches/gcc-13.2.0_gnat.patch108
-rw-r--r--util/crossgcc/patches/gcc-13.2.0_libcpp.patch (renamed from util/crossgcc/patches/gcc-11.4.0_libcpp.patch)8
-rw-r--r--util/crossgcc/patches/gcc-13.2.0_libgcc.patch (renamed from util/crossgcc/patches/gcc-11.4.0_libgcc.patch)0
-rw-r--r--util/crossgcc/patches/gcc-13.2.0_musl_poisoned_calloc.patch122
-rw-r--r--util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch (renamed from util/crossgcc/patches/gcc-11.4.0_rv32iafc.patch)0
-rw-r--r--util/crossgcc/sum/gcc-11.4.0.tar.xz.cksum1
-rw-r--r--util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum1
11 files changed, 238 insertions, 169 deletions
diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
index 8de6d69c7912..23a5caf2bb4e 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=11.4.0
+GCC_VERSION=13.2.0
BINUTILS_VERSION=2.41
IASL_VERSION="R06_28_23"
# CLANG version number
diff --git a/util/crossgcc/patches/gcc-11.4.0_ada-musl_workaround.patch b/util/crossgcc/patches/gcc-11.4.0_ada-musl_workaround.patch
deleted file mode 100644
index 1f504a4b5ebb..000000000000
--- a/util/crossgcc/patches/gcc-11.4.0_ada-musl_workaround.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
-index 3b0aea92c05..998f2c66289 100644
---- a/gcc/ada/adaint.c
-+++ b/gcc/ada/adaint.c
-@@ -107,6 +107,15 @@
- #define xmalloc(S) malloc (S)
- #define xrealloc(V,S) realloc (V,S)
- #else
-+#if !defined(__ANDROID__) && defined(__linux__)
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+#include <sched.h>
-+#ifdef __cplusplus
-+}
-+#endif
-+#endif
- #include "config.h"
- #include "system.h"
- #include "version.h"
-@@ -3265,7 +3274,7 @@ __gnat_lwp_self (void)
-
- /* Dynamic cpu sets */
-
--cpu_set_t *
-+void *
- __gnat_cpu_alloc (size_t count)
- {
- return CPU_ALLOC (count);
-@@ -3278,33 +3287,33 @@ __gnat_cpu_alloc_size (size_t count)
- }
-
- void
--__gnat_cpu_free (cpu_set_t *set)
-+__gnat_cpu_free (void *set)
- {
-- CPU_FREE (set);
-+ CPU_FREE ((cpu_set_t *)set);
- }
-
- void
--__gnat_cpu_zero (size_t count, cpu_set_t *set)
-+__gnat_cpu_zero (size_t count, void *set)
- {
- CPU_ZERO_S (count, set);
- }
-
- void
--__gnat_cpu_set (int cpu, size_t count, cpu_set_t *set)
-+__gnat_cpu_set (int cpu, size_t count, void *set)
- {
- /* Ada handles CPU numbers starting from 1, while C identifies the first
- CPU by a 0, so we need to adjust. */
-- CPU_SET_S (cpu - 1, count, set);
-+ CPU_SET_S (cpu - 1, count, (cpu_set_t *)set);
- }
-
- #else /* !CPU_ALLOC */
-
- /* Static cpu sets */
-
--cpu_set_t *
-+void *
- __gnat_cpu_alloc (size_t count ATTRIBUTE_UNUSED)
- {
-- return (cpu_set_t *) xmalloc (sizeof (cpu_set_t));
-+ return xmalloc (sizeof (cpu_set_t));
- }
-
- size_t
-@@ -3314,23 +3323,23 @@ __gnat_cpu_alloc_size (size_t count ATTRIBUTE_UNUSED)
- }
-
- void
--__gnat_cpu_free (cpu_set_t *set)
-+__gnat_cpu_free (void *set)
- {
- free (set);
- }
-
- void
--__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
-+__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, void *set)
- {
- CPU_ZERO (set);
- }
-
- void
--__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
-+__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, void *set)
- {
- /* Ada handles CPU numbers starting from 1, while C identifies the first
- CPU by a 0, so we need to adjust. */
-- CPU_SET (cpu - 1, set);
-+ CPU_SET (cpu - 1, (cpu_set_t *)set);
- }
- #endif /* !CPU_ALLOC */
- #endif /* __linux__ */
-diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
-index 0d12f7e9020..7b3def03fb0 100644
---- a/gcc/ada/adaint.h
-+++ b/gcc/ada/adaint.h
-@@ -316,13 +316,11 @@ extern void *__gnat_lwp_self (void);
-
- /* Routines for interface to required CPU set primitives */
-
--#include <sched.h>
--
--extern cpu_set_t *__gnat_cpu_alloc (size_t);
-+extern void *__gnat_cpu_alloc (size_t);
- extern size_t __gnat_cpu_alloc_size (size_t);
--extern void __gnat_cpu_free (cpu_set_t *);
--extern void __gnat_cpu_zero (size_t, cpu_set_t *);
--extern void __gnat_cpu_set (int, size_t, cpu_set_t *);
-+extern void __gnat_cpu_free (void *);
-+extern void __gnat_cpu_zero (size_t, void *);
-+extern void __gnat_cpu_set (int, size_t, void *);
- #endif
-
- #if defined (_WIN32)
diff --git a/util/crossgcc/patches/gcc-11.4.0_gnat.patch b/util/crossgcc/patches/gcc-11.4.0_gnat.patch
deleted file mode 100644
index c22cec45d07b..000000000000
--- a/util/crossgcc/patches/gcc-11.4.0_gnat.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- gcc-6.1.0/gcc/ada/gcc-interface/Make-lang.in.bak 2015-08-24 16:23:25.004493665 +0200
-+++ gcc-6.1.0/gcc/ada/gcc-interface/Make-lang.in 2015-08-24 17:53:52.496636113 +0200
-@@ -45,7 +45,7 @@
-
-
- # Extra flags to pass to recursive makes.
--COMMON_ADAFLAGS= -gnatpg
-+COMMON_ADAFLAGS= -gnatpg -gnatwn
- ifeq ($(TREECHECKING),)
- CHECKING_ADAFLAGS=
- else
-diff -Nurp gcc-11.2.0/gcc/ada/gcc-interface/Make-lang.in gcc-11.2.0.new/gcc/ada/gcc-interface/Make-lang.in
---- gcc-11.2.0/gcc/ada/gcc-interface/Make-lang.in 2022-06-03 00:31:57.993273717 +0200
-+++ gcc-11.2.0.new/gcc/ada/gcc-interface/Make-lang.in 2022-06-03 00:30:50.214166847 +0200
-@@ -334,6 +334,7 @@ GNAT_ADA_OBJS = \
- ada/hostparm.o \
- ada/impunit.o \
- ada/inline.o \
-+ ada/libgnat/i-c.o \
- ada/libgnat/interfac.o \
- ada/itypes.o \
- ada/krunch.o \
-@@ -364,7 +365,10 @@ GNAT_ADA_OBJS = \
- ada/rtsfind.o \
- ada/libgnat/s-addope.o \
- ada/libgnat/s-addima.o \
-+ ada/libgnat/s-aotase.o \
- ada/libgnat/s-assert.o \
-+ ada/libgnat/s-atoope.o \
-+ ada/libgnat/s-atopri.o \
- ada/libgnat/s-bitops.o \
- ada/libgnat/s-carun8.o \
- ada/libgnat/s-casuti.o \
-@@ -548,6 +552,7 @@ GNATBIND_OBJS = \
- ada/hostparm.o \
- ada/init.o \
- ada/initialize.o \
-+ ada/libgnat/i-c.o \
- ada/libgnat/interfac.o \
- ada/krunch.o \
- ada/lib.o \
diff --git a/util/crossgcc/patches/gcc-11.4.0_asan_shadow_offset_callback.patch b/util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch
index 25963b3211b5..d446025a8add 100644
--- a/util/crossgcc/patches/gcc-11.4.0_asan_shadow_offset_callback.patch
+++ b/util/crossgcc/patches/gcc-13.2.0_asan_shadow_offset_callback.patch
@@ -35,8 +35,8 @@ Signed-off-by: Patrick Georgi <pgeorgi@google.com>
diff --git a/gcc/asan.c b/gcc/asan.c
index 235e21947..713bf994d 100644
---- a/gcc/asan.c
-+++ b/gcc/asan.c
+--- 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;
diff --git a/util/crossgcc/patches/gcc-13.2.0_gnat.patch b/util/crossgcc/patches/gcc-13.2.0_gnat.patch
new file mode 100644
index 000000000000..2a37b155c42b
--- /dev/null
+++ b/util/crossgcc/patches/gcc-13.2.0_gnat.patch
@@ -0,0 +1,108 @@
+From b1b16478729aea709e7ef81224995b6d26b38a87 Mon Sep 17 00:00:00 2001
+From: Nico Huber <nico.h@gmx.de>
+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 <nico.h@gmx.de>
+---
+ 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-11.4.0_libcpp.patch b/util/crossgcc/patches/gcc-13.2.0_libcpp.patch
index df28c01c717b..2b0c95338f3b 100644
--- a/util/crossgcc/patches/gcc-11.4.0_libcpp.patch
+++ b/util/crossgcc/patches/gcc-13.2.0_libcpp.patch
@@ -1,8 +1,8 @@
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.c.bak 2020-09-11 15:44:45.770000000 +0900
-+++ gcc-8.3.0/libcpp/expr.c 2020-09-11 15:46:22.370000000 +0900
+--- 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))
@@ -16,8 +16,8 @@ by default rejects some codes in libcpp. This patch fixes them.
}
result |= CPP_N_INTEGER;
---- gcc-8.3.0/libcpp/macro.c.bak 2020-09-11 16:01:42.550000000 +0900
-+++ gcc-8.3.0/libcpp/macro.c 2020-09-11 16:03:47.850000000 +0900
+--- 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)
{
diff --git a/util/crossgcc/patches/gcc-11.4.0_libgcc.patch b/util/crossgcc/patches/gcc-13.2.0_libgcc.patch
index 2f75c92b41fc..2f75c92b41fc 100644
--- a/util/crossgcc/patches/gcc-11.4.0_libgcc.patch
+++ b/util/crossgcc/patches/gcc-13.2.0_libgcc.patch
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
new file mode 100644
index 000000000000..552a7e7d7fad
--- /dev/null
+++ b/util/crossgcc/patches/gcc-13.2.0_musl_poisoned_calloc.patch
@@ -0,0 +1,122 @@
+Musl's <sched.h> uses calloc() which is marked as poisoned by GCC's
+"system.h". Work around that by making sure that <sched.h> 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 <sys/time.h>
+ #endif
+
++#if defined (__linux__)
++#include <sched.h>
++#endif
++
+ #ifdef IN_RTS
+
+ #ifdef STANDALONE
+@@ -3441,7 +3445,6 @@
+ #endif
+
+ #if defined (__linux__)
+-#include <sched.h>
+
+ /* 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 <stdlib.h>
+@@ -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 <sys/stat.h>
+@@ -36,8 +38,6 @@
+ #include "config.h"
+ #include "system.h"
+ #endif
+-
+-#include "adaint.h"
+
+ /* We need L_tmpnam definition */
+ #include <stdio.h>
+--- 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 <string.h>
+ #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-11.4.0_rv32iafc.patch b/util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch
index 5b0d715c638c..5b0d715c638c 100644
--- a/util/crossgcc/patches/gcc-11.4.0_rv32iafc.patch
+++ b/util/crossgcc/patches/gcc-13.2.0_rv32iafc.patch
diff --git a/util/crossgcc/sum/gcc-11.4.0.tar.xz.cksum b/util/crossgcc/sum/gcc-11.4.0.tar.xz.cksum
deleted file mode 100644
index c9469c35464a..000000000000
--- a/util/crossgcc/sum/gcc-11.4.0.tar.xz.cksum
+++ /dev/null
@@ -1 +0,0 @@
-03f21dce9edf9092e38b4e23dd27b29f6ab56f63 tarballs/gcc-11.4.0.tar.xz
diff --git a/util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum b/util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum
new file mode 100644
index 000000000000..dcf9d41c17a1
--- /dev/null
+++ b/util/crossgcc/sum/gcc-13.2.0.tar.xz.cksum
@@ -0,0 +1 @@
+5f95b6d042fb37d45c6cbebfc91decfbc4fb493c tarballs/gcc-13.2.0.tar.xz