From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1698) id A265C385840A; Fri, 5 Nov 2021 20:59:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A265C385840A MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Iain D Sandoe To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-4956] Darwin, aarch64 : Ada fixes for hosted tools. X-Act-Checkin: gcc X-Git-Author: Iain Sandoe X-Git-Refname: refs/heads/master X-Git-Oldrev: 834c8749ced550af3f17ebae4072fb7dfb90d271 X-Git-Newrev: f8a1e0699328268e98e18eb100f5af37e92dab9f Message-Id: <20211105205902.A265C385840A@sourceware.org> Date: Fri, 5 Nov 2021 20:59:02 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Nov 2021 20:59:02 -0000 https://gcc.gnu.org/g:f8a1e0699328268e98e18eb100f5af37e92dab9f commit r12-4956-gf8a1e0699328268e98e18eb100f5af37e92dab9f Author: Iain Sandoe Date: Fri Aug 28 19:09:45 2020 +0100 Darwin, aarch64 : Ada fixes for hosted tools. This will allow someone (with an existing Ada compiler on the platform - which can be provided by the experimental aarch64-darwin branch) - to build the host tools (gnatmake and friends) for a non-native cross. The existing provisions for iOS are OK for cross-compilation from an x86-64-darwin platform, but we need some adjustments so that these host tools can be built to run on aarch64-darwin. Signed-off-by: Iain Sandoe gcc/ada/ * gcc-interface/Make-lang.in: Use iOS signal trampoline code for hosted Ada tools. * sigtramp-ios.c: Wrap the declarations in extern "C" when the code is built by a C++ compiler. Diff: --- gcc/ada/gcc-interface/Make-lang.in | 18 +++++++++++++----- gcc/ada/sigtramp-ios.c | 8 ++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index ba194d1369d..ab5fb72623b 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -725,6 +725,14 @@ endif # For unwind-pe.h CFLAGS-ada/raise-gcc.o += -I$(srcdir)/../libgcc -DEH_MECHANISM_$(EH_MECHANISM) +# Under aarch64 darwin, we need to include the iOS signal trampoline. + +ifeq ($(strip $(filter-out aarch64 arm64 darwin%,$(host_cpu) $(host_os))),) + EXTRA_HOST_OBJS=ada/sigtramp-ios.o +else + EXTRA_HOST_OBJS = +endif + ada/libgnat/s-excmac.o: ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb ada/libgnat/s-excmac.ads: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).ads @@ -738,16 +746,16 @@ ada/libgnat/s-excmac.adb: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).adb # Needs to be built with CC=gcc # Since the RTL should be built with the latest compiler, remove the # stamp target in the parent directory whenever gnat1 is rebuilt -gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) libcommon-target.a \ - $(LIBDEPS) $(ada.prev) +gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) $(EXTRA_HOST_OBJS) libcommon-target.a \ + $(EXTRA_HOST_OBJS) $(LIBDEPS) $(ada.prev) @$(call LINK_PROGRESS,$(INDEX.ada),start) - +$(GCC_LLINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(CFLAGS) \ + +$(GCC_LLINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(EXTRA_HOST_OBJS) $(CFLAGS) \ libcommon-target.a $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(GNATLIB) $(RM) stamp-gnatlib2-rts stamp-tools @$(call LINK_PROGRESS,$(INDEX.ada),end) -gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBDEPS) - +$(GCC_LINK) -o $@ $(CFLAGS) ada/b_gnatb.o $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBS) $(SYSLIBS) $(GNATLIB) +gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) $(EXTRA_HOST_OBJS) ggc-none.o libcommon-target.a $(LIBDEPS) + +$(GCC_LINK) -o $@ $(CFLAGS) ada/b_gnatb.o $(GNATBIND_OBJS) $(EXTRA_HOST_OBJS) ggc-none.o libcommon-target.a $(LIBS) $(SYSLIBS) $(GNATLIB) # use target-gcc target-gnatmake target-gnatbind target-gnatlink gnattools: $(GCC_PARTS) $(CONFIG_H) prefix.o force diff --git a/gcc/ada/sigtramp-ios.c b/gcc/ada/sigtramp-ios.c index 6e2913d91f2..8403a1865ea 100644 --- a/gcc/ada/sigtramp-ios.c +++ b/gcc/ada/sigtramp-ios.c @@ -71,6 +71,10 @@ /* sigtramp stub providing unwind info for common registers. */ +#if defined(__cplusplus) +extern "C" { +#endif + extern void __gnat_sigtramp_common (int signo, void *siginfo, void *sigcontext, __sigtramphandler_t * handler); @@ -87,6 +91,10 @@ void __gnat_sigtramp (int signo, void *si, void *ucontext, __gnat_sigtramp_common (signo, si, mcontext, handler); } +#if defined(__cplusplus) +} +#endif + /* asm string construction helpers. */ #define STR(TEXT) #TEXT