From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 032CE383A821 for ; Fri, 25 Jun 2021 16:13:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 032CE383A821 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15PGAZgO001339 for ; Fri, 25 Jun 2021 16:13:51 GMT Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 39d24a9s8k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 25 Jun 2021 16:13:51 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 15PGBosY163792 for ; Fri, 25 Jun 2021 16:13:50 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2105.outbound.protection.outlook.com [104.47.55.105]) by aserp3030.oracle.com with ESMTP id 39d2pye3cy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 25 Jun 2021 16:13:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N0SgNrL3dLIX3tVJccthuiTJFZmKSW4fsst8YL+RRMIx5jTWfRaOo79cHa8WRYou74wOh8kJGGiYnH1DpPorN8m+11nxQ06OcXifuv4alJj1SpAPEfS1lynhC7grN6x0lFDB0/TNuAyT3GfuvVZtHlvXUK6XBGdn/rvXhM1NqNIziXe2l1HQGxXivGsFA/PAPwOy17+chKQki4kTob1GIYhI9sP4G+A89hQR7Ece4BI8NhI4kCMSW4tcOPYB55zwJ3WlibU2hayP1VlgJ42XC2b3MTUoEbryxptI4VdsKVnllNi75K1ucGIHs5YI1PpetFTB/MV+POid7Kt29puazQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hP2Yb+etHclot/wpSE/0JJnnexr/kU4cB1wNWUE9LmA=; b=itpCKwoFF0U1jxLj4+/GGyxCa8JDWdVHxhd8SGpCoRq6r5W3hYlTAVf4Qaq9hLaZbSAR81VJkj2JwEJERV5eqit0X6HYLGWCmjK6LbOhNbY8Su5h4676RYDgk4O6sXOZmVHkh5aKtX6UJA5JdrNPpN/zcBf3svjbLk+edVnOBB+Ea5X8EP5LnxRsrkLCNX5dgXuQvJacvRdfumipou3IpK08ORLVyTrdGUGjAzRTlLMG9osqqvzhGDftjG2Rh3Ws8LaBBspOWImTYpdgGZxZuUKIcMUlbaa0k0WyHwEacoaNsBqNHrGSqJnXeKQvuvXbkdU88veJ6W+gStoI47srPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from SA2PR10MB4715.namprd10.prod.outlook.com (2603:10b6:806:fb::10) by SA2PR10MB4699.namprd10.prod.outlook.com (2603:10b6:806:118::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Fri, 25 Jun 2021 16:13:48 +0000 Received: from SA2PR10MB4715.namprd10.prod.outlook.com ([fe80::9ded:a005:f4da:7741]) by SA2PR10MB4715.namprd10.prod.outlook.com ([fe80::9ded:a005:f4da:7741%9]) with mapi id 15.20.4264.023; Fri, 25 Jun 2021 16:13:48 +0000 From: Nick Alcock To: binutils@sourceware.org Subject: [PATCH 3/4] libctf: try several possibilities for linker versioning flags Date: Fri, 25 Jun 2021 17:13:34 +0100 Message-Id: <20210625161335.4831-4-nick.alcock@oracle.com> X-Mailer: git-send-email 2.32.0.255.gd9b1d14a2a In-Reply-To: <20210625161335.4831-1-nick.alcock@oracle.com> References: <20210625161335.4831-1-nick.alcock@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [2001:8b0:1101:10::2] X-ClientProxiedBy: LO2P265CA0213.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::33) To SA2PR10MB4715.namprd10.prod.outlook.com (2603:10b6:806:fb::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from loom.srvr.nix (2001:8b0:1101:10::2) by LO2P265CA0213.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.19 via Frontend Transport; Fri, 25 Jun 2021 16:13:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c16cc756-27dd-4c05-4ed7-08d937f436c4 X-MS-TrafficTypeDiagnostic: SA2PR10MB4699: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QtdKsPAWL1vdQWKW+g+cDMyilhXxWLO1C7E5xh/iZUkzHlaZ1e1IaCji+4VIrYz58ti+N4nbjcuAwq2gY+7RJg0BO2kA1Q1lQl7vMFcsGQ1gZaG9FTBvSd2rV9qsZ8E2fZLqUK5FylP5NkzlVExSCtRMmIZF9wSBwfAMuMJKzyTr0QS27Ip843Sq+IHRMA3YkIt18H30iVUqBm/A/ZJTcW6mforACIpq6XZNLs9I7hzYI1iFxomz/FABax73CiBaT4Y+Y0wPpFDkNV5zmB0j6lYwMTZhkxdT7/skuI3Hkih7iwo7+9hxHQ9K06Qa7Y7Y7w0t/5rZ3b7tcJNQsxmcz9QmVRLly6nqf+z/z1Q4n5O1Z0lQlitPLbuDlqWNgre6ReTQm/p5lkK6Kiqe4pZG/IWxmrqrSYik9UORPe1LKncMIOIiZe8VTQnzAXeTuFDkdhfgd93z++khY+04Egz6WEGVkOCZ2am6hyXZ67fhy6mV5cxrPQcnThEeQhHqhoFDZdM6ZdllA15S6CL6CgdsB0F9RW38CMq3A7sCeP9qNQthzOVmZF5nvJ/y2ukSY2JebyLYdAYhS5MbwOiaH//Sl0oYK/ig8cA7TrRN8MeOyTE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA2PR10MB4715.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(366004)(136003)(346002)(376002)(396003)(6916009)(8676002)(6486002)(478600001)(2616005)(38100700002)(8936002)(83380400001)(2906002)(6666004)(44832011)(6512007)(316002)(6506007)(16526019)(186003)(66946007)(66476007)(66556008)(52116002)(1076003)(36756003)(86362001)(5660300002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qUiNvSLtKTWJxPB8Dss6X5XhOSg4wAq7LiZG9G2bAKJu7LfIqrSNUIZnkvq0?= =?us-ascii?Q?ipNbkKkglJV8L3eM7hEw6VBiMjJ8rHCN2tWbuOa3VcEOWEuhbVz/8vL0rH1z?= =?us-ascii?Q?36c1fZwTrKdyLcm5NmOH4gKpIxPaxOXoFmaK/GIDYBs1YuTGy6Nl03LZqX/K?= =?us-ascii?Q?XFWaJFITZSvmioa9FMuve9EpRo/mrpGTv15ylM6zsSWH5ec/+93KWPAA66k+?= =?us-ascii?Q?sOp9AMEum6VOTDtS6qUVYxob+sEMVRWBNbRkMH4IPZfkpg4E2sQuyJLuSp61?= =?us-ascii?Q?BfHdwKJbXIb7Xah854VMQ2ABj1SJGqTzfwFl7ZMaWzzmHO1VY65XwtS+ny1W?= =?us-ascii?Q?giPqyNjvWTVPZ49N+sfGoDWoVIwUHScvQVtmsm01iq3zl/Z0JuUJOxihcpl2?= =?us-ascii?Q?+cOq3CeHnaamyS3ondIL43IcAl5nF0POUquY4IKVpB42r8httDv6wqyPcRg4?= =?us-ascii?Q?sV8NtnVJDynmzsnsAEiw/YnnStjWEsvVZfx/3AH7vmBXprh21lYQKuEOVpSi?= =?us-ascii?Q?q0yGrZ8vBaKFwCyEnEVqi/wVfGFZyCQ07r4+2eh/SQR509e97zrGc2L11aVI?= =?us-ascii?Q?hNLS3KBMRufdJbM4JoNLRUJ/GHho1rNV3LWaZGgJ7/ij5LxkPXbQT6Z6Ju5e?= =?us-ascii?Q?nkptpvxaoTeNPuYE0XcOotdjXXJZEwQAbtX1d8/QvGeJ/EsjO8cNWA09du4w?= =?us-ascii?Q?fjc4yWlX3TgWT30zZLPdO33Cbe4OVtJOhLo4FmnnYDnmI6IKXaDNBMP3G2gG?= =?us-ascii?Q?QD0hQrR4VuMJdaJ0u7W4WOgJ/8ZT7y9hq/Pveq9eoIPS0hYop5A2oviM6t8m?= =?us-ascii?Q?FGcpXgcMIUqm1MKtIgBtwvo4i/FASA2sIDqivrTHsbOLTZMLKaXTozHd+tHo?= =?us-ascii?Q?N2T0LtQBhPwEnto1zZB5xTQLZ4htHbTxny1X9ZgdtvnuPtKh0c+hZiVsUMfj?= =?us-ascii?Q?EeaV14BkCJhRXX3m7y5mWWauvUKZHCLQttfhmSgMR7biQSelYqsmYXf+hYt0?= =?us-ascii?Q?KGGMfJv6AP+uSp11YGzH5e6xl2aOnMjU7rrmG/duVZ6yd9flV3o0qxZivbfQ?= =?us-ascii?Q?OcrCarATfSdtQPUhTiFscpIKbC/23RSEz0c3xR+G+Rvv14DNykwbTjNf4/fK?= =?us-ascii?Q?3PLR4Yh0111+RqgW+yq/bbJf8AA1gTIT5ETpz5M3aztALkaZnOB6iTvbqsRt?= =?us-ascii?Q?ox20oZfRWHWcsWjpXr6opl+4F0d1sZ2ZAA6Z8NlgWpz6Co4jpaFwreSKDYPr?= =?us-ascii?Q?KOHFnBS11ZNH8Fte8+dveSWUgnDwtmkeWHG5LU3iYQ8EvEhMShDpvHFZZQxX?= =?us-ascii?Q?h2Teh6LDBWRvIHttUASiM9OpD5C48wht4vp5glmF9JaDig=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c16cc756-27dd-4c05-4ed7-08d937f436c4 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4715.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jun 2021 16:13:48.1044 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: w9WtWlnvhI0HsHAJRu/GJm/IpW5guJAcLtjMx09DRratC3ZFTRu0WTqDrqN5BUtgJzpkX5+ogb0avlki52f3HQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4699 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10026 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 bulkscore=0 suspectscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106250095 X-Proofpoint-GUID: NQr7b_wzgVGaEEiFEVkDH2Hf7tHcIIVV X-Proofpoint-ORIG-GUID: NQr7b_wzgVGaEEiFEVkDH2Hf7tHcIIVV X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Jun 2021 16:13:54 -0000 Checking for linker versioning by just grepping ld --help output for mentions of --version-script is inadequate now that Solaris 11.4 implements a --version-script with different semantics. Try linking a test program with a small wildcard-using version script with each supported set of flags in turn, to make sure that linker versioning is not only advertised but actually works. The Solaris "GNU-compatible" linker versioning is not quite GNU-compatible enough, but we can work around the differences by generating a new version script that removes the comments from the original (Solaris ld requires #-style comments), and making another version script for libctf-nonbfd in particular which doesn't mention any of the symbols that appear in libctf.la, to avoid Solaris ld introducing corresponding new NOTYPE symbols to match the version script. libctf/ChangeLog 2021-06-22 Nick Alcock PR libctf/27482 * configure.ac (VERSION_FLAGS): Replace with... (ac_cv_libctf_version_script): ... this multiple test. (VERSION_FLAGS_NOBFD): Substitute this too. * Makefile.am (libctf_nobfd_la_LDFLAGS): Use it. Split out... (libctf_ldflags_nover): ... non-versioning flags here. (libctf_la_LDFLAGS): Use it. * libctf.ver: Give every symbol not in libctf-nobfd a comment on the same line noting as much. --- libctf/Makefile.am | 5 +++-- libctf/configure.ac | 46 ++++++++++++++++++++++++++++++++++++++++++--- libctf/libctf.ver | 10 ++++------ 3 files changed, 50 insertions(+), 11 deletions(-) diff --git a/libctf/Makefile.am b/libctf/Makefile.am index 308daa9a03c..38d86bc4f9d 100644 --- a/libctf/Makefile.am +++ b/libctf/Makefile.am @@ -42,7 +42,8 @@ noinst_LTLIBRARIES = libctf.la libctf-nobfd.la endif libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB) -libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@ +libctf_ldflags_nover = -version-info 0:0:0 @SHARED_LDFLAGS@ +libctf_nobfd_la_LDFLAGS = $(libctf_ldflags_nover) @VERSION_FLAGS_NOBFD@ libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1 libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \ ctf-hash.c ctf-labels.c ctf-dedup.c ctf-link.c ctf-lookup.c \ @@ -58,7 +59,7 @@ endif # references in there get picked up. libctf_la_LIBADD = @CTF_LIBADD@ ../bfd/libbfd.la $(libctf_nobfd_la_LIBADD) libctf_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=0 -libctf_la_LDFLAGS = $(libctf_nobfd_la_LDFLAGS) +libctf_la_LDFLAGS = $(libctf_ldflags_nover) @VERSION_FLAGS@ libctf_la_SOURCES = $(libctf_nobfd_la_SOURCES) ctf-open-bfd.c # Setup the testing framework, if you have one diff --git a/libctf/configure.ac b/libctf/configure.ac index 80644b89d67..4e12a4fa8f6 100644 --- a/libctf/configure.ac +++ b/libctf/configure.ac @@ -219,11 +219,51 @@ fi` AM_CONDITIONAL(TCL_TRY, test "${ac_cv_libctf_tcl_try}" = yes) # Use a version script, if possible, or an -export-symbols-regex otherwise. -VERSION_FLAGS='-export-symbols-regex ctf_.*' -if $LD --help 2>&1 | grep -- --version-script >/dev/null; then - VERSION_FLAGS="-Wl,--version-script='$srcdir/libctf.ver'" +decommented_version_script= +AC_CACHE_CHECK([for linker versioning flags], [ac_cv_libctf_version_script], + [echo 'FOO { global: mai*; local: ctf_fo*; };' > conftest.ver + old_LDFLAGS="$LDFLAGS" + old_CFLAGS="$CFLAGS" + LDFLAGS="$LDFLAGS -shared -Wl,--version-script=conftest.ver" + CFLAGS="$CFLAGS -fPIC" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int ctf_foo (void) { return 0; } + int main (void) { return ctf_foo(); }]])], + [ac_cv_libctf_version_script="-Wl,--version-script='$srcdir/libctf.ver'"], + []) + LDFLAGS="$old_LDFLAGS" + + if test -z "$ac_cv_libctf_version_script"; then + LDFLAGS="$LDFLAGS -shared -Wl,-B,local -Wl,-z,gnu-version-script=conftest.ver" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int ctf_foo (void) { return 0; } + int main (void) { return ctf_foo(); }]])], + [ac_cv_libctf_version_script="-Wl,-B,local -Wl,-z,gnu-version-script" + decommented_version_script=t], + []) + LDFLAGS="$old_LDFLAGS" + fi + CFLAGS="$old_CFLAGS" + + if test -z "$ac_cv_libctf_version_script"; then + ac_cv_libctf_version_script='-export-symbols-regex ctf_.*' + fi + rm -f conftest.ver]) +if test -n "$decommented_version_script"; then + # Solaris's version scripts use shell-style comments rather than the C-style + # used by GNU ld. Use cpp to strip the comments out. (cpp exists under this + # name on all platforms that support ld -z gnu-version-script.) + # Also ensure that no symbols exist in the version script for libctf-nobfd.so + # that do not exist in the shared library itself, since some linkers add such + # symbols with type NOTYPE. + /lib/cpp < $srcdir/libctf.ver > libctf-decommented.ver + grep -v 'libctf only' $srcdir/libctf.ver | /lib/cpp > libctf-nobfd-decommented.ver + VERSION_FLAGS="$ac_cv_libctf_version_script='libctf-decommented.ver'" + VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd-decommented.ver'" +else + VERSION_FLAGS="$ac_cv_libctf_version_script" + VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script" fi AC_SUBST(VERSION_FLAGS) +AC_SUBST(VERSION_FLAGS_NOBFD) AC_CONFIG_FILES(Makefile) AC_CONFIG_HEADERS(config.h) diff --git a/libctf/libctf.ver b/libctf/libctf.ver index 0b182f37228..602c13fba17 100644 --- a/libctf/libctf.ver +++ b/libctf/libctf.ver @@ -165,12 +165,10 @@ LIBCTF_1.0 { ctf_link_shuffle_syms; ctf_link_write; - /* In libctf alone. */ - - ctf_fdopen; - ctf_open; - ctf_bfdopen; - ctf_bfdopen_ctfsect; + ctf_fdopen; /* libctf only. */ + ctf_open; /* libctf only. */ + ctf_bfdopen; /* libctf only. */ + ctf_bfdopen_ctfsect; /* libctf only. */ local: *; }; -- 2.32.0.255.gd9b1d14a2a