From patchwork Sat Dec 24 19:00:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Iain Sandoe X-Patchwork-Id: 36439 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp264608wrt; Sat, 24 Dec 2022 11:01:37 -0800 (PST) X-Google-Smtp-Source: AMrXdXsk1zLcewoHiNcFkO4p7yfpjgU5HWjCUoZncy5IasoPZztuL1rUSA0C0Rmnvujr3la1AHp8 X-Received: by 2002:a05:6402:1454:b0:47d:8981:cbf7 with SMTP id d20-20020a056402145400b0047d8981cbf7mr11096353edx.13.1671908497565; Sat, 24 Dec 2022 11:01:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671908497; cv=none; d=google.com; s=arc-20160816; b=B+J9XkE1xFReScJbkNG4uN4mWZZDHt6dVijVTCiFq9ROOtQrFa0ab2lefBwqzG2Lqu ssCYUIQYIQU17rN2BpCcOVbcEAs4Q2JKW+3pTaIK+iQWRs1vHBwM12IdAQFSDDpj/sc6 DFYrJ7sh/RjRNPHkULU/ynlCZHUapEVVgdrjk0sxdtDMT2SUGIKE3TesYaG1xzCfxYdq 5Otvb+dKastoGioqfbjFAxZJwgZ5AgOinNYUrbbmsXkgTen/BdXRkMuF3BaNsrDIiujw bwtbQmGpzR+oJOVMep4ca2c6f9MVgU9acPp9nLygq00qHwC9Hvqsh0EqIF8g3N0GURW5 xNsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:reply-to:from:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=uxj7i1zD+d8y659i6Xp/eD8VIbA/TEvU34baespoyUw=; b=WqOQYw9LGsOhUCjyv0N1Eaua/h4DSybdk77Ay0RBavdzxx5u6MkVd7goiEyYbRgLZf FIqOIdk+0NRmzN7aC5H8dmWEBCv8sJEjuf0/cHckMGKPO8kPCQFTdfiQW9idv7BYd0Tw kUHm28E64HwL6KUi5fPEKPGJe+aW3dWCqlScqDIaBEsAfVsq30W0EYemkfhRTHvz3AGT EguQgnRvND5lLN4gfg44tUljj+iOszA+IioRhKgVK9W2KbYhYhOAdVMbFoytnj03dCAE sDM/ODvqR72Rj/GfAgkcqmPbt+L4/bX+AGGb7uH0zWxoackDUi2tZudw4Gd1YXXTfyRx sCAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=H69m4og5; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id n11-20020a05640205cb00b0046cb58e978csi6037548edx.264.2022.12.24.11.01.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Dec 2022 11:01:37 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=H69m4og5; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 34F15385B505 for ; Sat, 24 Dec 2022 19:01:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 34F15385B505 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1671908496; bh=uxj7i1zD+d8y659i6Xp/eD8VIbA/TEvU34baespoyUw=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=H69m4og5+ReTk/RaQPM7wb4NQhne+dnP+YucXZlhDrw9k6gqDp+Gxpo3MEk7lKmx+ b50FguAKc2gVUVaFz9MtMjKdZsJONv1RUFJPlZ03HZNZH1yirRWdllNlw/vTY9h5/f LbIkn62LqO/9hlr4R6+fQpMP9fE0UKGEbVugQA1U= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by sourceware.org (Postfix) with ESMTPS id C2CDD3858D1E for ; Sat, 24 Dec 2022 19:00:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C2CDD3858D1E Received: by mail-wm1-x334.google.com with SMTP id b24-20020a05600c4a9800b003d21efdd61dso5495611wmp.3 for ; Sat, 24 Dec 2022 11:00:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=uxj7i1zD+d8y659i6Xp/eD8VIbA/TEvU34baespoyUw=; b=b27KPdZ3+M5CWXbn8RFF02GvWcrFJ+gfVikJfZ+MGJIP26T49JL2YZjzXWsgQjazxR 1pGUkQEq/yg5oZkl2RZQi6mnMVy8+1qRdN0f68HtDofqvPabeh0vyHk8Uo4bbuDkClpv QWDMNx6cVOGemRqnqNs+ngAnaL21iA0qA3M/Sf/WAfDRtI6SFCsdZZRG4w5SyGyMDvJY afOtOsHejYwX7SVgQ6WqKTLL34NvR0VA5jqkKThhSTTco3HRsuA8qvVJPqWgAsaBpDfQ h7T7Y3LjX011nd/APWzVRPSkL45Ac6gPyc0PYgA9aaDRAmDzdEU9tKDHFGuISXK+sBGu PJmw== X-Gm-Message-State: AFqh2kq9sCerH/GH4FB8S79AWsZCPNu7WsU4eFM+rOmZWW7/roZyXfnY WANHAbwgaPmJYHyL+2pCkeKI/gVpoDk= X-Received: by 2002:a05:600c:41d1:b0:3d2:3d7b:6118 with SMTP id t17-20020a05600c41d100b003d23d7b6118mr10039409wmh.24.1671908450285; Sat, 24 Dec 2022 11:00:50 -0800 (PST) Received: from localhost.localdomain (host81-138-1-83.in-addr.btopenworld.com. [81.138.1.83]) by smtp.gmail.com with ESMTPSA id bh12-20020a05600c3d0c00b003cfa81e2eb4sm8622963wmb.38.2022.12.24.11.00.49 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sat, 24 Dec 2022 11:00:49 -0800 (PST) X-Google-Original-From: Iain Sandoe To: gcc-patches@gcc.gnu.org Subject: [PATCH] Ada, Darwin: Do not link libgcc statically on Darwin [PR108202]. Date: Sat, 24 Dec 2022 19:00:49 +0000 Message-Id: <20221224190049.99806-1-iain@sandoe.co.uk> X-Mailer: git-send-email 2.37.1 (Apple Git-137.1) MIME-Version: 1.0 X-Spam-Status: No, score=-8.3 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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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 , charlet@adacore.com Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1753123124776305719?= X-GMAIL-MSGID: =?utf-8?q?1753123124776305719?= Tested on i686, x86-64 darwin, x86_64-linux (with a 32b multilib). OK for trunk? Iain --- 8< --- Normally, GCC executables are built with -static-libstdc++ -static-libgcc on Darwin. This is fine in most cases, because GCC executables typically do not use exceptions. However gnat1 does use exceptions and also pulls in system libraries that are linked against the installed shared libgcc which contains the system unwinder. This means that gnat1 effectively has two unwinder instances (which does not work reliably since the unwinders have global state). A recent change in the initialization of FDEs has made this a hard error now on Darwin versions with libgcc installed in /usr/lib (gnat1 now hangs when an exception is thrown). The solution is to link libgcc dynamically, picking up the installed system version. To do this we strip -static-libgcc from the link flags. PR ada/108202 gcc/ada/ChangeLog: * gcc-interface/Make-lang.in (GCC_LINKERFLAGS, GCC_LDFLAGS): Versions of ALL_LINKERFLAGS, LDFLAGS with -Werror and -static-libgcc filtered out for Darwin (-Werror only for other hosts). --- gcc/ada/gcc-interface/Make-lang.in | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index 2acd195017e..64273c3bdb4 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -261,10 +261,20 @@ else endif # Strip -Werror during linking for the LTO bootstrap + +ifneq ($(findstring darwin,$(host)),) +# gnat1 uses exceptions which is incompatible with statically-linked libgcc +# on Darwin, since gnat1 also pulls in libraries linked with the system +# unwinder. +GCC_LINKERFLAGS = $(filter-out -Werror -static-libgcc, $(ALL_LINKERFLAGS)) +GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS)) +else GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) +GCC_LDFLAGS = $(LDFLAGS) +endif -GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(LDFLAGS) -GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(LDFLAGS) +GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(GCC_LDFLAGS) +GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(GCC_LDFLAGS) # Lists of files for various purposes.