From patchwork Fri Nov 5 16:13:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iain Sandoe X-Patchwork-Id: 47123 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EEDEF385800B for ; Fri, 5 Nov 2021 16:14:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EEDEF385800B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1636128855; bh=bFGrSqyXN30SuppiVVK/S1/PeW4IRRZIe+jvS+QrNS0=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=nXxx4a+yixjo8MfZht6M0Np7dUau0PIEhUTVfzeXe6N7ETvRZkIzdb3zF0dNyuav4 0kDOOjJpe5Y4ENnC2FKWRqC3wlkeW7LI9tIvN/NgNFJfpb5BrHEEVbuYS92R59tZso pf0HkSZn66vsxHTwVfUTu5chwrRgVbT1vh6NMXaw= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id ACF6A3858D28 for ; Fri, 5 Nov 2021 16:13:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ACF6A3858D28 Received: by mail-wr1-x431.google.com with SMTP id c4so14511920wrd.9 for ; Fri, 05 Nov 2021 09:13:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :mime-version:content-transfer-encoding; bh=bFGrSqyXN30SuppiVVK/S1/PeW4IRRZIe+jvS+QrNS0=; b=79so/6OTET+GTSzPAbskgsdmYKlp4fZ97K9fXMQqxIw+/VrtRzHW0AjsAUT85nVTcL MBbPOO8BiF/xetGyWZQT6/tISfUjsIEb6w3YsbGeL1/QJqrO4S6tI9/rDB3nqj41wzAp CwzIakizqjP5Pp5RHL41k26OJUXM6I86Cg14OsvQuacQNH8M9BvmsR2Ac208xGgyJYkB OpgHMsk7rEZzJp77E7qfiiZZ5HDE8XZDa4wefgUv4hkielonyvNYqBURmStdiaTuY91T mo3i/m2M503+pFNShAIgFJZXc6ZI4uD+Kh3+DETg3ONZe8C/WX7qvzQWTQUfb4XA9nYE ozQw== X-Gm-Message-State: AOAM530XTIuAeo8vZXcc+jcfnhVWaKio5ooX0e9gPMhE13qC/voXKEhz +tNBO+nLidyE1ZFag09ZvsQpz80F7LI= X-Google-Smtp-Source: ABdhPJzYmOX2X4tNiBcPDoE4LfWT9aukP7IQRT0wFC+400znxfbkorZBKlWvRt53Wth6gnUQCWs6JQ== X-Received: by 2002:a05:6000:1681:: with SMTP id y1mr48303032wrd.52.1636128824813; Fri, 05 Nov 2021 09:13:44 -0700 (PDT) Received: from localhost.localdomain (host81-138-1-83.in-addr.btopenworld.com. [81.138.1.83]) by smtp.gmail.com with ESMTPSA id w17sm8575967wrp.79.2021.11.05.09.13.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Nov 2021 09:13:44 -0700 (PDT) X-Google-Original-From: Iain Sandoe To: gcc-patches@gcc.gnu.org Subject: [PATCH] Darwin, Arm64 : Ada fixes for hosted tools. Date: Fri, 5 Nov 2021 16:13:38 +0000 Message-Id: <20211105161338.33814-1-iain@sandoe.co.uk> X-Mailer: git-send-email 2.24.3 (Apple Git-128) MIME-Version: 1.0 X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Iain Sandoe via Gcc-patches From: Iain Sandoe Reply-To: iain@sandoe.co.uk Cc: Iain Sandoe Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This is host-only support (target support will come later). 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. tested on aarch64-darwin20. OK for master? thanks Iain Signed-off-by: Iain Sandoe --- 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..b2feaa7d808 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 rtl 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