From patchwork Fri Jul 21 14:50:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iain Sandoe X-Patchwork-Id: 1810977 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=AxWp1t4U; dkim-atps=neutral Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R6sv915wDz1yYc for ; Sat, 22 Jul 2023 00:51:14 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 413A6385DC0B for ; Fri, 21 Jul 2023 14:51:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 413A6385DC0B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1689951072; bh=olpVG+iz4yBV8OlKqAHDZ/r4k0/Je0dZsjyuGNNXzi8=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=AxWp1t4Us8Td08DLNrFsGO2X+tWJxchaVLZ9oH8vl2QOaEphlHwQRfga0+xoshcRL YQhyZ96ek/+pboRZavu6qTlBBy0I+xgH3G4reJDiBxDUtlrv692XSalAxtGzHtzlrq /FUrjacd3gNg8de3L7XmQ4Qbmxwm+pfv1Qx0B0Hs= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by sourceware.org (Postfix) with ESMTPS id 4865A3858409 for ; Fri, 21 Jul 2023 14:50:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4865A3858409 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-316f589549cso1607053f8f.1 for ; Fri, 21 Jul 2023 07:50:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689951048; x=1690555848; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=olpVG+iz4yBV8OlKqAHDZ/r4k0/Je0dZsjyuGNNXzi8=; b=fzDDXzaSMIr/652vUatx8QeGud04g33FacUAm6u7fDYXePYX2tqOxOcWhywxpMsVzO 6HhDslKwKtHD5heqc98/SydSsQvbykEo2zClNJynZTo3LHg6596In5N+SucnYOUmhPW7 RYUCsSvdB0AzjsjvgY/hwm6f/ZCQSPDdBMz+e2Md1+wX0dAUa02jBBWlRfhm9P7dkZC9 9Yk0oGdP42MqRGi98ZSlBVntZLh5RgsrxR2S+hqFJGh7rzXOgI7R24tfYNI/vpZKBdfq ub769WXIYuHHsGgbfNG7RRfDBmRvzfbmPFWP3JtxMKHKvWhAJFRgV5ozfLBTA9N78gaj qc6g== X-Gm-Message-State: ABy/qLYFrXJAvuWP1fIjpkM2MoC9IGL4coU6SQ+JvDkr1na226s0DJ6p w3OevJ5r1e7nUy7J0HiAii0wyhxpGT4= X-Google-Smtp-Source: APBJJlFwx+5/hgTcrfVn88GmCEaXgK3vwqp7elf1++UOoMDiH2KaJ3+1noffmmrkgWR52UIztimRjQ== X-Received: by 2002:a5d:6188:0:b0:30f:bb83:e6f4 with SMTP id j8-20020a5d6188000000b0030fbb83e6f4mr1414731wru.0.1689951047591; Fri, 21 Jul 2023 07:50:47 -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 f3-20020a0560001b0300b0030e52d4c1bcsm4410811wrz.71.2023.07.21.07.50.47 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 21 Jul 2023 07:50:47 -0700 (PDT) X-Google-Original-From: Iain Sandoe To: gcc-patches@gcc.gnu.org Subject: [pushed] Darwin: Handle linker '-demangle' option. Date: Fri, 21 Jul 2023 15:50:46 +0100 Message-Id: <20230721145046.93041-1-iain@sandoe.co.uk> X-Mailer: git-send-email 2.39.2 (Apple Git-143) MIME-Version: 1.0 X-Spam-Status: No, score=-8.4 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, T_SCC_BODY_TEXT_LINE 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 Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" Tested with Darwin linker versions that do/do not support the option and on x86_64-linux-gnu, pushed to trunk, thanks Iain --- 8< --- Most of the Darwin linkers in use support this option which we will now pass by default (matching the Xcode clang impl.)> Signed-off-by: Iain Sandoe gcc/ChangeLog: * config.in: Regenerate. * config/darwin.h (DARWIN_LD_DEMANGLE): New. (LINK_COMMAND_SPEC_A): Add demangle handling. * configure: Regenerate. * configure.ac: Detect linker support for '-demangle'. --- gcc/config.in | 9 ++++++++- gcc/config/darwin.h | 7 +++++++ gcc/configure | 19 +++++++++++++++++++ gcc/configure.ac | 14 ++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/gcc/config.in b/gcc/config.in index 0e62b9fbfc9..5cf51bc1b01 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -2178,6 +2178,12 @@ #endif +/* Define to 1 if ld64 supports '-demangle'. */ +#ifndef USED_FOR_TARGET +#undef LD64_HAS_DEMANGLE +#endif + + /* Define to 1 if ld64 supports '-export_dynamic'. */ #ifndef USED_FOR_TARGET #undef LD64_HAS_EXPORT_DYNAMIC @@ -2239,7 +2245,8 @@ #endif -/* Define to the sub-directory where libtool stores uninstalled libraries. */ +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ #ifndef USED_FOR_TARGET #undef LT_OBJDIR #endif diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 1b538c73593..e0e8672a455 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -270,6 +270,12 @@ extern GTY(()) int darwin_ms_struct; "%&6; } gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_major" >&5 $as_echo "$gcc_cv_ld64_major" >&6; } + if test "$gcc_cv_ld64_major" -ge 97; then + gcc_cv_ld64_demangle=1 + fi if test "$gcc_cv_ld64_major" -ge 236; then gcc_cv_ld64_export_dynamic=1 fi @@ -30517,6 +30521,15 @@ $as_echo_n "checking linker version... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_version" >&5 $as_echo "$gcc_cv_ld64_version" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for -demangle support" >&5 +$as_echo_n "checking linker for -demangle support... " >&6; } + gcc_cv_ld64_demangle=1 + if $gcc_cv_ld -demangle < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then + gcc_cv_ld64_demangle=0 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_demangle" >&5 +$as_echo "$gcc_cv_ld64_demangle" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for -export_dynamic support" >&5 $as_echo_n "checking linker for -export_dynamic support... " >&6; } gcc_cv_ld64_export_dynamic=1 @@ -30545,6 +30558,12 @@ _ACEOF fi +cat >>confdefs.h <<_ACEOF +#define LD64_HAS_DEMANGLE $gcc_cv_ld64_demangle +_ACEOF + + + cat >>confdefs.h <<_ACEOF #define LD64_HAS_EXPORT_DYNAMIC $gcc_cv_ld64_export_dynamic _ACEOF diff --git a/gcc/configure.ac b/gcc/configure.ac index e91073ba831..46e58a27661 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -6211,6 +6211,7 @@ if test x"$ld64_flag" = x"yes"; then # Set defaults for possibly untestable items. gcc_cv_ld64_export_dynamic=0 gcc_cv_ld64_platform_version=0 + gcc_cv_ld64_demangle=0 if test "$build" = "$host"; then darwin_try_test=1 @@ -6232,6 +6233,9 @@ if test x"$ld64_flag" = x"yes"; then AC_MSG_CHECKING(ld64 specified version) gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'` AC_MSG_RESULT($gcc_cv_ld64_major) + if test "$gcc_cv_ld64_major" -ge 97; then + gcc_cv_ld64_demangle=1 + fi if test "$gcc_cv_ld64_major" -ge 236; then gcc_cv_ld64_export_dynamic=1 fi @@ -6246,6 +6250,13 @@ if test x"$ld64_flag" = x"yes"; then fi AC_MSG_RESULT($gcc_cv_ld64_version) + AC_MSG_CHECKING(linker for -demangle support) + gcc_cv_ld64_demangle=1 + if $gcc_cv_ld -demangle < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then + gcc_cv_ld64_demangle=0 + fi + AC_MSG_RESULT($gcc_cv_ld64_demangle) + AC_MSG_CHECKING(linker for -export_dynamic support) gcc_cv_ld64_export_dynamic=1 if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then @@ -6266,6 +6277,9 @@ if test x"$ld64_flag" = x"yes"; then [Define to ld64 version.]) fi + AC_DEFINE_UNQUOTED(LD64_HAS_DEMANGLE, $gcc_cv_ld64_demangle, + [Define to 1 if ld64 supports '-demangle'.]) + AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic, [Define to 1 if ld64 supports '-export_dynamic'.])