Refactor '-ldl' handling for libgomp proper and plugins
Commit Message
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
Comments
On Thu, May 12, 2022 at 02:39:14PM +0200, Thomas Schwinge wrote:
> 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.)
Ok.
> 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) <PLUGIN_NVPTX_DYNAMIC>: Likewise.
> * Makefile.in: Regenerate.
> * config.h.in: Likewise.
> * configure: Likewise.
> * testsuite/Makefile.in: Likewise.
Jakub
From 223f9e18819bce6b51642c8aebb7272655d12e6f Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
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) <PLUGIN_NVPTX_DYNAMIC>: 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(-)
@@ -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)
@@ -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
@@ -51,9 +51,6 @@
/* Define to 1 if you have the <inttypes.h> 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
@@ -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
# <http://www.gnu.org/licenses/>.
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
@@ -26,6 +26,8 @@
# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
# <http://www.gnu.org/licenses/>.
+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
@@ -27,7 +27,9 @@
# <http://www.gnu.org/licenses/>.
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
@@ -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