https://gcc.gnu.org/g:086ec4412de833db482c8f5eea1540b4a28e568f
commit r17-5756-g086ec4412de833db482c8f5eea1540b4a28e568f Author: Thomas Schwinge <[email protected]> Date: Wed Oct 28 20:54:56 2026 +0100 Link libgomp plugins in the same way as libgomp proper In the x86_64-pc-linux-gnu configuration that I'm currently looking at, I noticed that libgomp is libtool-linked as follows: /bin/bash ./libtool --tag CC --mode=link [xgcc] ['AM_CFLAGS'] ['CFLAGS'] -Wl,-O1 -o libgomp.la -version-info 1:0:0 -Wl,--version-script,libgomp.ver -rpath [...] ['*.lo'] -ldl In contrast, libgomp's nvptx, gcn plugins are libtool-linked as follows: /bin/bash ./libtool --tag=CC --tag=disable-static --mode=link [xgcc] ['AM_CFLAGS'] ['CFLAGS'] -version-info 1:0:0 -o libgomp-plugin-nvptx.la -rpath [...] ['*.lo'] libgomp.la -ldl Certain differences between the two variants are intentional -- but not that the latter is missing '-Wl,-O1'. That's due to 'AM_LDFLAGS' missing, which consists of: - 'XLDFLAGS' (via 'libgomp/configure.tgt'; optional) - 'SECTION_LDFLAGS', 'OPT_LDFLAGS' (via 'libgomp/acinclude.m4:LIBGOMP_CHECK_LINKER_FEATURES'; optional) Align the libgomp plugins' linking by using new 'libgomp_plugin_LINK', similar to the 'libgomp/Makefile.am:LINK' used for libgomp proper. ('LINK' and its usage in 'libgomp_la_LINK' date back to 2009-09-11 Subversion r151627 (Git commit 878f62e5bdb9b1adb8f234c36af5c39292c23713) "Override all per-target *_LINK variables correctly". It may be the case that the approach used there isn't entirely correct, but looking into that further is for another day.) libgomp/ * plugin/Makefrag.am (libgomp_plugin_nvptx_la_LINK) (libgomp_plugin_gcn_la_LINK): Set, to use... (libgomp_plugin_LINK): ... this new variable. * Makefile.am (LINK): Cross-reference it. * Makefile.in: Regenerate. Diff: --- libgomp/Makefile.am | 1 + libgomp/Makefile.in | 35 +++++++++++++++++++++-------------- libgomp/plugin/Makefrag.am | 11 +++++++++++ 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/libgomp/Makefile.am b/libgomp/Makefile.am index de9cad6c7d3e..37422e19b5c9 100644 --- a/libgomp/Makefile.am +++ b/libgomp/Makefile.am @@ -88,6 +88,7 @@ endif LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) +# See also 'plugin/Makefrag.am:libgomp_plugin_LINK'. LINK = $(LIBTOOL) --tag CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@ diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index 61fb775d91f6..d1e0f6593b28 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -192,14 +192,6 @@ am__DEPENDENCIES_1 = @PLUGIN_GCN_TRUE@ libgomp_plugin_gcn_la-simple-allocator.lo \ @PLUGIN_GCN_TRUE@ libgomp_plugin_gcn_la-mutex.lo libgomp_plugin_gcn_la_OBJECTS = $(am_libgomp_plugin_gcn_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libgomp_plugin_gcn_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(libgomp_plugin_gcn_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libgomp_plugin_gcn_la_LDFLAGS) $(LDFLAGS) -o $@ @PLUGIN_GCN_TRUE@am_libgomp_plugin_gcn_la_rpath = -rpath \ @PLUGIN_GCN_TRUE@ $(toolexeclibdir) @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_DEPENDENCIES = libgomp.la \ @@ -208,10 +200,6 @@ libgomp_plugin_gcn_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @PLUGIN_NVPTX_TRUE@ libgomp_plugin_nvptx_la-plugin-nvptx.lo libgomp_plugin_nvptx_la_OBJECTS = \ $(am_libgomp_plugin_nvptx_la_OBJECTS) -libgomp_plugin_nvptx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(libgomp_plugin_nvptx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libgomp_plugin_nvptx_la_LDFLAGS) $(LDFLAGS) -o $@ @PLUGIN_NVPTX_TRUE@am_libgomp_plugin_nvptx_la_rpath = -rpath \ @PLUGIN_NVPTX_TRUE@ $(toolexeclibdir) @USE_FORTRAN_TRUE@am__objects_1 = openacc.lo @@ -243,6 +231,10 @@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/../depcomp am__depfiles_maybe = depfiles am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ @@ -580,6 +572,9 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \ @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBADD = libgomp.la \ @PLUGIN_NVPTX_TRUE@ $(DL_LIBS) @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBTOOLFLAGS = --tag=disable-static +@PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LINK = \ +@PLUGIN_NVPTX_TRUE@ $(libgomp_plugin_LINK) \ +@PLUGIN_NVPTX_TRUE@ $(libgomp_plugin_nvptx_la_LDFLAGS) # ... vs. linking it: #libgomp_plugin_nvptx_la_CPPFLAGS += -DPLUGIN_NVPTX_LINK_LIBCUDA #libgomp_plugin_nvptx_la_LDFLAGS += -L[CUDA]/lib64/stubs @@ -596,12 +591,24 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \ @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LIBADD = libgomp.la $(DL_LIBS) @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LIBTOOLFLAGS = --tag=disable-static +@PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LINK = $(libgomp_plugin_LINK) \ +@PLUGIN_GCN_TRUE@ $(libgomp_plugin_gcn_la_LDFLAGS) + +# Like '../Makefile.am:LINK', but with '$(AM_LIBTOOLFLAGS)' replaced by +# '$(libgomp_plugin_LIBTOOLFLAGS)' (equal for all libgomp plugins). +libgomp_plugin_LIBTOOLFLAGS = --tag=disable-static +libgomp_plugin_LINK = $(LIBTOOL) \ + --tag CC $(libgomp_plugin_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@ + nodist_noinst_HEADERS = libgomp_f.h nodist_libsubinclude_HEADERS = omp.h openacc.h acc_prof.h @USE_FORTRAN_TRUE@nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod \ @USE_FORTRAN_TRUE@ openacc_lib.h openacc.f90 openacc.mod openacc_kinds.mod LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) + +# See also 'plugin/Makefrag.am:libgomp_plugin_LINK'. LINK = $(LIBTOOL) --tag CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@ @@ -733,10 +740,10 @@ clean-toolexeclibLTLIBRARIES: } libgomp-plugin-gcn.la: $(libgomp_plugin_gcn_la_OBJECTS) $(libgomp_plugin_gcn_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_gcn_la_DEPENDENCIES) - $(AM_V_CCLD)$(libgomp_plugin_gcn_la_LINK) $(am_libgomp_plugin_gcn_la_rpath) $(libgomp_plugin_gcn_la_OBJECTS) $(libgomp_plugin_gcn_la_LIBADD) $(LIBS) + $(AM_V_GEN)$(libgomp_plugin_gcn_la_LINK) $(am_libgomp_plugin_gcn_la_rpath) $(libgomp_plugin_gcn_la_OBJECTS) $(libgomp_plugin_gcn_la_LIBADD) $(LIBS) libgomp-plugin-nvptx.la: $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_nvptx_la_DEPENDENCIES) - $(AM_V_CCLD)$(libgomp_plugin_nvptx_la_LINK) $(am_libgomp_plugin_nvptx_la_rpath) $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_LIBADD) $(LIBS) + $(AM_V_GEN)$(libgomp_plugin_nvptx_la_LINK) $(am_libgomp_plugin_nvptx_la_rpath) $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_LIBADD) $(LIBS) libgomp.la: $(libgomp_la_OBJECTS) $(libgomp_la_DEPENDENCIES) $(EXTRA_libgomp_la_DEPENDENCIES) $(AM_V_GEN)$(libgomp_la_LINK) -rpath $(toolexeclibdir) $(libgomp_la_OBJECTS) $(libgomp_la_LIBADD) $(LIBS) diff --git a/libgomp/plugin/Makefrag.am b/libgomp/plugin/Makefrag.am index a25ccaf5e259..c0b99ac113a7 100644 --- a/libgomp/plugin/Makefrag.am +++ b/libgomp/plugin/Makefrag.am @@ -38,6 +38,8 @@ libgomp_plugin_nvptx_la_LDFLAGS = $(libgomp_plugin_nvptx_version_info) \ $(lt_host_flags) libgomp_plugin_nvptx_la_LIBADD = libgomp.la libgomp_plugin_nvptx_la_LIBTOOLFLAGS = --tag=disable-static +libgomp_plugin_nvptx_la_LINK = $(libgomp_plugin_LINK) +libgomp_plugin_nvptx_la_LINK += $(libgomp_plugin_nvptx_la_LDFLAGS) # libgomp nvptx plugin developer's section. # @@ -64,6 +66,15 @@ libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \ $(lt_host_flags) libgomp_plugin_gcn_la_LIBADD = libgomp.la libgomp_plugin_gcn_la_LIBTOOLFLAGS = --tag=disable-static +libgomp_plugin_gcn_la_LINK = $(libgomp_plugin_LINK) +libgomp_plugin_gcn_la_LINK += $(libgomp_plugin_gcn_la_LDFLAGS) libgomp_plugin_gcn_la_LIBADD += $(DL_LIBS) endif + +# Like '../Makefile.am:LINK', but with '$(AM_LIBTOOLFLAGS)' replaced by +# '$(libgomp_plugin_LIBTOOLFLAGS)' (equal for all libgomp plugins). +libgomp_plugin_LIBTOOLFLAGS = --tag=disable-static +libgomp_plugin_LINK = $(LIBTOOL) \ + --tag CC $(libgomp_plugin_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
