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
|
||
|
|