From patchwork Thu May 12 12:39:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 53840 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 D3A253839C41 for ; Thu, 12 May 2022 12:39:41 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id B43E1385627A for ; Thu, 12 May 2022 12:39:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B43E1385627A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.91,219,1647331200"; d="scan'208,223";a="75811077" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 12 May 2022 04:39:23 -0800 IronPort-SDR: 8w9ZD54022uLnUwb68HqPjgV6TabdIyoEHNOB1D246gIEpGQenU4Gq3soI7sicSV9BRXhD45xm 1b1k80cs3SdCgeMRT0G/4QM//Q7G0UQC4+q6UHQ5H7oueY5b/Nkb57aNa+OP+UBNtNzwxdc+be LwRi3DjzM0m4WOuxfenRsgbcUFt/4eh5zHVBW8Fxu2LbiSEZBM61408JTl+ZUZMi0FuYwqZA8E gPWkxA8w7O/7ANHLzEQFpOv+GJ/Up+9XO+t0S82aC1YLiIHofElHYctkC4mKgYfygtZSMM/x/6 nbc= From: Thomas Schwinge To: , Jakub Jelinek Subject: Refactor '-ldl' handling for libgomp proper and plugins User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/27.1 (x86_64-pc-linux-gnu) Date: Thu, 12 May 2022 14:39:14 +0200 Message-ID: <87zgjnrklp.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, 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: , Cc: Julian Brown , Andrew Stubbs Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi! Again, no change in behavior, just refactoring, making things more explicit, in preparation for other changes. OK to push the attached "Refactor '-ldl' handling for libgomp proper and plugins"? By the way, this might also qualify as a first preparational step to support dynamic loading schemes different from 'dl.so'/'dlopen'. ;-) (But I'm not working on that.) Grüße Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 From 223f9e18819bce6b51642c8aebb7272655d12e6f Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 5 May 2022 23:01:36 +0200 Subject: [PATCH] Refactor '-ldl' handling for libgomp proper and plugins Instead of implicit global 'LIBS="-ldl $LIBS"' via 'AC_CHECK_LIB', make '-ldl' explicit for libgomp proper, and clean up 'PLUGIN_GCN_LIBS', 'PLUGIN_NVPTX_LIBS' accordingly. libgomp/ * Makefile.am (libgomp_la_LIBADD): Initialize. * plugin/configfrag.ac (DL_LIBS): New. (PLUGIN_GCN_LIBS): Remove. (PLUGIN_NVPTX_LIBS): Don't set in the 'PLUGIN_NVPTX_DYNAMIC' case. * plugin/Makefrag.am (libgomp_la_LIBADD) (libgomp_plugin_gcn_la_LIBADD): Consider '$(DL_LIBS)'. (libgomp_plugin_nvptx_la_LIBADD) : Likewise. * Makefile.in: Regenerate. * config.h.in: Likewise. * configure: Likewise. * testsuite/Makefile.in: Likewise. --- libgomp/Makefile.am | 1 + libgomp/Makefile.in | 8 ++++---- libgomp/config.h.in | 3 --- libgomp/configure | 16 ++++------------ libgomp/plugin/Makefrag.am | 8 ++++++-- libgomp/plugin/configfrag.ac | 9 +++------ libgomp/testsuite/Makefile.in | 2 +- 7 files changed, 19 insertions(+), 28 deletions(-) diff --git a/libgomp/Makefile.am b/libgomp/Makefile.am index f8b2a06d63e..428f7a9dab5 100644 --- a/libgomp/Makefile.am +++ b/libgomp/Makefile.am @@ -56,6 +56,7 @@ endif libgomp_version_info = -version-info $(libtool_VERSION) libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) \ $(lt_host_flags) +libgomp_la_LIBADD = libgomp_la_DEPENDENCIES = $(libgomp_version_dep) libgomp_la_LINK = $(LINK) $(libgomp_la_LDFLAGS) diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index 51252b89462..c47b6bd6153 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -125,7 +125,7 @@ target_triplet = @target@ @PLUGIN_NVPTX_DYNAMIC_FALSE@@PLUGIN_NVPTX_TRUE@ -DPLUGIN_NVPTX_LINK_LIBCUDA # 'dlopen'ing the CUDA Driver library vs. linking it. -@PLUGIN_NVPTX_DYNAMIC_TRUE@@PLUGIN_NVPTX_TRUE@am__append_3 = $(PLUGIN_NVPTX_LIBS) +@PLUGIN_NVPTX_DYNAMIC_TRUE@@PLUGIN_NVPTX_TRUE@am__append_3 = $(DL_LIBS) @PLUGIN_NVPTX_DYNAMIC_FALSE@@PLUGIN_NVPTX_TRUE@am__append_4 = $(PLUGIN_NVPTX_LIBS) @PLUGIN_GCN_TRUE@am__append_5 = libgomp-plugin-gcn.la @USE_FORTRAN_TRUE@am__append_6 = openacc.f90 @@ -219,7 +219,6 @@ libgomp_plugin_nvptx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgomp_plugin_nvptx_la_LDFLAGS) $(LDFLAGS) -o $@ @PLUGIN_NVPTX_TRUE@am_libgomp_plugin_nvptx_la_rpath = -rpath \ @PLUGIN_NVPTX_TRUE@ $(toolexeclibdir) -libgomp_la_LIBADD = @USE_FORTRAN_TRUE@am__objects_1 = openacc.lo am_libgomp_la_OBJECTS = alloc.lo atomic.lo barrier.lo critical.lo \ env.lo error.lo icv.lo icv-device.lo iter.lo iter_ull.lo \ @@ -384,6 +383,7 @@ CUDA_DRIVER_LIB = @CUDA_DRIVER_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -441,7 +441,6 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PLUGIN_GCN_LIBS = @PLUGIN_GCN_LIBS@ PLUGIN_NVPTX_CPPFLAGS = @PLUGIN_NVPTX_CPPFLAGS@ PLUGIN_NVPTX_LDFLAGS = @PLUGIN_NVPTX_LDFLAGS@ PLUGIN_NVPTX_LIBS = @PLUGIN_NVPTX_LIBS@ @@ -553,6 +552,7 @@ libgomp_version_info = -version-info $(libtool_VERSION) libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) \ $(lt_host_flags) +libgomp_la_LIBADD = $(DL_LIBS) libgomp_la_DEPENDENCIES = $(libgomp_version_dep) libgomp_la_LINK = $(LINK) $(libgomp_la_LDFLAGS) libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \ @@ -586,7 +586,7 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \ @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \ @PLUGIN_GCN_TRUE@ $(lt_host_flags) -@PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LIBADD = libgomp.la $(PLUGIN_GCN_LIBS) +@PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LIBADD = libgomp.la $(DL_LIBS) @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LIBTOOLFLAGS = --tag=disable-static nodist_noinst_HEADERS = libgomp_f.h nodist_libsubinclude_HEADERS = omp.h openacc.h acc_prof.h diff --git a/libgomp/config.h.in b/libgomp/config.h.in index d971ea38c46..46d3eac1e61 100644 --- a/libgomp/config.h.in +++ b/libgomp/config.h.in @@ -51,9 +51,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the `dl' library (-ldl). */ -#undef HAVE_LIBDL - /* Define to 1 if you have the `memalign' function. */ #undef HAVE_MEMALIGN diff --git a/libgomp/configure b/libgomp/configure index 0df47cf96e3..66dface222e 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -675,12 +675,12 @@ offload_additional_lib_paths offload_additional_options offload_targets offload_plugins -PLUGIN_GCN_LIBS PLUGIN_NVPTX_LIBS PLUGIN_NVPTX_LDFLAGS PLUGIN_NVPTX_CPPFLAGS CUDA_DRIVER_LIB CUDA_DRIVER_INCLUDE +DL_LIBS libtool_VERSION ac_ct_FC FCFLAGS @@ -15057,6 +15057,8 @@ _ACEOF # . plugin_support=yes +DL_LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5 $as_echo_n "checking for dlsym in -ldl... " >&6; } if ${ac_cv_lib_dl_dlsym+:} false; then : @@ -15094,12 +15096,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5 $as_echo "$ac_cv_lib_dl_dlsym" >&6; } if test "x$ac_cv_lib_dl_dlsym" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 -_ACEOF - - LIBS="-ldl $LIBS" - + DL_LIBS=-ldl else plugin_support=no fi @@ -15221,8 +15218,6 @@ PLUGIN_NVPTX_DYNAMIC=0 PLUGIN_GCN=0 -PLUGIN_GCN_LIBS= - # Parse '--enable-offload-targets', figure out the corresponding libgomp # plugins, and configure to find the corresponding offload compilers. @@ -15295,7 +15290,6 @@ rm -f core conftest.err conftest.$ac_objext \ && (test "x$CUDA_DRIVER_LIB" = x \ || test "x$CUDA_DRIVER_LIB" = xno); then PLUGIN_NVPTX=1 - PLUGIN_NVPTX_LIBS='-ldl' PLUGIN_NVPTX_DYNAMIC=1 else PLUGIN_NVPTX=0 @@ -15321,8 +15315,6 @@ rm -f core conftest.err conftest.$ac_objext \ ;; *) tgt_plugin=gcn - PLUGIN_GCN=$tgt - PLUGIN_GCN_LIBS="-ldl" PLUGIN_GCN=1 ;; esac diff --git a/libgomp/plugin/Makefrag.am b/libgomp/plugin/Makefrag.am index 3eeb3419f9c..3e453ff6fee 100644 --- a/libgomp/plugin/Makefrag.am +++ b/libgomp/plugin/Makefrag.am @@ -26,6 +26,8 @@ # see the files COPYING3 and COPYING.RUNTIME respectively. If not, see # . +libgomp_la_LIBADD += $(DL_LIBS) + if PLUGIN_NVPTX # Nvidia PTX OpenACC plugin. libgomp_plugin_nvptx_version_info = -version-info $(libtool_VERSION) @@ -46,7 +48,7 @@ endif # 'dlopen'ing the CUDA Driver library vs. linking it. if PLUGIN_NVPTX_DYNAMIC -libgomp_plugin_nvptx_la_LIBADD += $(PLUGIN_NVPTX_LIBS) +libgomp_plugin_nvptx_la_LIBADD += $(DL_LIBS) else libgomp_plugin_nvptx_la_CPPFLAGS += -DPLUGIN_NVPTX_LINK_LIBCUDA libgomp_plugin_nvptx_la_LIBADD += $(PLUGIN_NVPTX_LIBS) @@ -62,6 +64,8 @@ libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \ -D_GNU_SOURCE libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \ $(lt_host_flags) -libgomp_plugin_gcn_la_LIBADD = libgomp.la $(PLUGIN_GCN_LIBS) +libgomp_plugin_gcn_la_LIBADD = libgomp.la libgomp_plugin_gcn_la_LIBTOOLFLAGS = --tag=disable-static + +libgomp_plugin_gcn_la_LIBADD += $(DL_LIBS) endif diff --git a/libgomp/plugin/configfrag.ac b/libgomp/plugin/configfrag.ac index c16224104e3..14203048bdb 100644 --- a/libgomp/plugin/configfrag.ac +++ b/libgomp/plugin/configfrag.ac @@ -27,7 +27,9 @@ # . plugin_support=yes -AC_CHECK_LIB(dl, dlsym, , [plugin_support=no]) +DL_LIBS= +AC_SUBST(DL_LIBS) +AC_CHECK_LIB(dl, dlsym, [DL_LIBS=-ldl], [plugin_support=no]) if test x"$plugin_support" = xyes; then AC_DEFINE(PLUGIN_SUPPORT, 1, [Define if all infrastructure, needed for plugins, is supported.]) @@ -91,8 +93,6 @@ AC_SUBST(PLUGIN_NVPTX_LDFLAGS) AC_SUBST(PLUGIN_NVPTX_LIBS) PLUGIN_GCN=0 -PLUGIN_GCN_LIBS= -AC_SUBST(PLUGIN_GCN_LIBS) # Parse '--enable-offload-targets', figure out the corresponding libgomp # plugins, and configure to find the corresponding offload compilers. @@ -154,7 +154,6 @@ if test x"$enable_offload_targets" != x; then && (test "x$CUDA_DRIVER_LIB" = x \ || test "x$CUDA_DRIVER_LIB" = xno); then PLUGIN_NVPTX=1 - PLUGIN_NVPTX_LIBS='-ldl' PLUGIN_NVPTX_DYNAMIC=1 else PLUGIN_NVPTX=0 @@ -180,8 +179,6 @@ if test x"$enable_offload_targets" != x; then ;; *) tgt_plugin=gcn - PLUGIN_GCN=$tgt - PLUGIN_GCN_LIBS="-ldl" PLUGIN_GCN=1 ;; esac diff --git a/libgomp/testsuite/Makefile.in b/libgomp/testsuite/Makefile.in index 2d1bf8f20d7..048844f0a40 100644 --- a/libgomp/testsuite/Makefile.in +++ b/libgomp/testsuite/Makefile.in @@ -152,6 +152,7 @@ CUDA_DRIVER_LIB = @CUDA_DRIVER_LIB@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -209,7 +210,6 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ -PLUGIN_GCN_LIBS = @PLUGIN_GCN_LIBS@ PLUGIN_NVPTX_CPPFLAGS = @PLUGIN_NVPTX_CPPFLAGS@ PLUGIN_NVPTX_LDFLAGS = @PLUGIN_NVPTX_LDFLAGS@ PLUGIN_NVPTX_LIBS = @PLUGIN_NVPTX_LIBS@ -- 2.35.1