Change-Id: Idf5912d1fcdfabab7fe006b7e0cd4ebd25c07d09 Signed-off-by: Felix Singer <felixsinger@posteo.net> Reviewed-on: https://review.coreboot.org/c/coreboot/+/81683 Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@gmail.com>
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
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
 | 
						|
 |