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