Skip to content

Commit

Permalink
Darwin: Partial reversion of fixes to libtool command line handling.
Browse files Browse the repository at this point in the history
The 12.2r0 release includes a fix that correctly passes options through
to libtool (previously they were siliently ignored).

One of the options concerned was "-nodefaultexport" which suppresses the
automatic addition of emulated TLS symbols to dylibs and modules.

Unfortunately, this bug-fix now means that some of the runtimes no longer
re-export the emulated TLS symbols and, therefore, existing code that
happened to link to those will not find the symbols (even though, of course
they are present in libgcc_s.)

This patch drops the '-nodefaultexport' from the libtool lines, so that
once again (albeit incorrectly) the libraries concerned re-export the symbols
from libgcc_s.

Since the emulated TLS implementations are all weak, this should not cause
any actual runtime issue, it is just unfortunate and untidy.
  • Loading branch information
iains committed Aug 27, 2022
1 parent e05bde3 commit 398c061
Show file tree
Hide file tree
Showing 24 changed files with 34 additions and 28 deletions.
2 changes: 1 addition & 1 deletion libatomic/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ libatomic_version_dep =
endif
libatomic_version_info = -version-info $(libtool_VERSION)
if ENABLE_DARWIN_AT_RPATH
libatomic_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libatomic_darwin_rpath = -Wc,-nodefaultrpaths
libatomic_darwin_rpath += -Wl,-rpath,@loader_path
endif

Expand Down
3 changes: 2 additions & 1 deletion libatomic/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,8 @@ noinst_LTLIBRARIES = libatomic_convenience.la
@LIBAT_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@libatomic_version_dep = $(top_srcdir)/libatomic.map
@LIBAT_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@libatomic_version_dep = libatomic.map-sun
libatomic_version_info = -version-info $(libtool_VERSION)
@ENABLE_DARWIN_AT_RPATH_TRUE@libatomic_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libatomic_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
$(lt_host_flags) $(libatomic_darwin_rpath)
Expand Down
6 changes: 3 additions & 3 deletions libcc1/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ marshall_cxx_source = marshall-cp.hh

libcc1plugin_la_LDFLAGS = -module -export-symbols $(srcdir)/libcc1plugin.sym
if ENABLE_DARWIN_AT_RPATH
libcc1plugin_la_LDFLAGS += -Wc,-nodefaultrpaths,-nodefaultexport
libcc1plugin_la_LDFLAGS += -Wc,-nodefaultrpaths
libcc1plugin_la_LDFLAGS += -Wl,-rpath,@loader_path
endif
libcc1plugin_la_SOURCES = libcc1plugin.cc context.cc context.hh \
Expand All @@ -70,7 +70,7 @@ libcc1plugin_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \

libcp1plugin_la_LDFLAGS = -module -export-symbols $(srcdir)/libcp1plugin.sym
if ENABLE_DARWIN_AT_RPATH
libcp1plugin_la_LDFLAGS += -Wc,-nodefaultrpaths,-nodefaultexport
libcp1plugin_la_LDFLAGS += -Wc,-nodefaultrpaths
libcp1plugin_la_LDFLAGS += -Wl,-rpath,@loader_path
endif
libcp1plugin_la_SOURCES = libcp1plugin.cc context.cc context.hh \
Expand All @@ -85,7 +85,7 @@ libcp1plugin_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
libcc1_la_LDFLAGS = -module -export-symbols $(srcdir)/libcc1.sym
if ENABLE_DARWIN_AT_RPATH
libcc1_la_LDFLAGS += -Wc,-nodefaultrpaths,-nodefaultexport
libcc1_la_LDFLAGS += -Wc,-nodefaultrpaths
libcc1_la_LDFLAGS += -Wl,-rpath,@loader_path
endif
libcc1_la_SOURCES = findcomp.cc libcc1.cc libcp1.cc \
Expand Down
6 changes: 3 additions & 3 deletions libcc1/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
@DARWIN_DYNAMIC_LOOKUP_TRUE@am__append_1 = -Wl,-undefined,dynamic_lookup
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_2 = -Wc,-nodefaultrpaths,-nodefaultexport \
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_2 = -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_3 = -Wc,-nodefaultrpaths,-nodefaultexport \
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_3 = -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_4 = -Wc,-nodefaultrpaths,-nodefaultexport \
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_4 = -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
Expand Down
2 changes: 1 addition & 1 deletion libgfortran/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ version_dep =
endif
extra_darwin_ldflags_libgfortran = @extra_ldflags_libgfortran@
if ENABLE_DARWIN_AT_RPATH
extra_darwin_ldflags_libgfortran += -Wc,-nodefaultexport,-nodefaultrpaths
extra_darwin_ldflags_libgfortran += -Wc,-nodefaultrpaths
extra_darwin_ldflags_libgfortran += -Wl,-rpath,@loader_path
endif

Expand Down
2 changes: 1 addition & 1 deletion libgfortran/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
@LIBGFOR_MINIMAL_TRUE@am__append_2 = -DLIBGFOR_MINIMAL
@LIBGFOR_MINIMAL_FALSE@am__append_3 = \
Expand Down
2 changes: 1 addition & 1 deletion libgomp/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ endif

libgomp_version_info = -version-info $(libtool_VERSION)
if ENABLE_DARWIN_AT_RPATH
libgomp_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libgomp_darwin_rpath = -Wc,-nodefaultrpaths
libgomp_darwin_rpath += -Wl,-rpath,@loader_path
endif
libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) \
Expand Down
3 changes: 2 additions & 1 deletion libgomp/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,8 @@ nodist_toolexeclib_HEADERS = libgomp.spec
@LIBGOMP_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = libgomp.ver
@LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@libgomp_version_dep = libgomp.ver-sun
libgomp_version_info = -version-info $(libtool_VERSION)
@ENABLE_DARWIN_AT_RPATH_TRUE@libgomp_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libgomp_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) \
$(lt_host_flags) $(libgomp_darwin_rpath)
Expand Down
2 changes: 1 addition & 1 deletion libitm/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ libitm_version_info = -version-info $(libtool_VERSION)
libitm_la_DEPENDENCIES = $(libitm_version_dep)
libitm_la_LINK = $(LINK) $(libitm_la_LDFLAGS)
if ENABLE_DARWIN_AT_RPATH
libitm_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libitm_darwin_rpath = -Wc,-nodefaultrpaths
libitm_darwin_rpath += -Wl,-rpath,@loader_path
endif
libitm_la_LDFLAGS = $(libitm_version_info) $(libitm_version_script) \
Expand Down
3 changes: 2 additions & 1 deletion libitm/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -481,7 +481,8 @@ libitm_version_info = -version-info $(libtool_VERSION)
# want or need libstdc++.
libitm_la_DEPENDENCIES = $(libitm_version_dep)
libitm_la_LINK = $(LINK) $(libitm_la_LDFLAGS)
@ENABLE_DARWIN_AT_RPATH_TRUE@libitm_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libitm_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libitm_la_LDFLAGS = $(libitm_version_info) $(libitm_version_script) \
$(libitm_darwin_rpath)
Expand Down
1 change: 0 additions & 1 deletion libobjc/configure
Original file line number Diff line number Diff line change
Expand Up @@ -11211,7 +11211,6 @@ case "${host}" in
# obsolete.
extra_ldflags_libobjc='$(lt_host_flags)'
if test "x$enable_darwin_at_rpath" = "xyes"; then
extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wc,-nodefaultexport"
extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wc,-nodefaultrpaths"
extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wl,-rpath,@loader_path"
fi
Expand Down
1 change: 0 additions & 1 deletion libobjc/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,6 @@ case "${host}" in
# obsolete.
extra_ldflags_libobjc='$(lt_host_flags)'
if test "x$enable_darwin_at_rpath" = "xyes"; then
extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wc,-nodefaultexport"
extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wc,-nodefaultrpaths"
extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wl,-rpath,@loader_path"
fi
Expand Down
2 changes: 1 addition & 1 deletion libquadmath/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ toolexeclib_LTLIBRARIES = libquadmath.la
libquadmath_la_LIBADD =

if ENABLE_DARWIN_AT_RPATH
libquadmath_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libquadmath_darwin_rpath = -Wc,-nodefaultrpaths
libquadmath_darwin_rpath += -Wl,-rpath,@loader_path
endif
libquadmath_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
Expand Down
2 changes: 1 addition & 1 deletion libquadmath/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@ AUTOMAKE_OPTIONS = foreign info-in-builddir
@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_dep = quadmath.map-sun
@BUILD_LIBQUADMATH_TRUE@toolexeclib_LTLIBRARIES = libquadmath.la
@BUILD_LIBQUADMATH_TRUE@libquadmath_la_LIBADD =
@BUILD_LIBQUADMATH_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@libquadmath_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@BUILD_LIBQUADMATH_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@libquadmath_darwin_rpath = -Wc,-nodefaultrpaths \
@BUILD_LIBQUADMATH_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
@BUILD_LIBQUADMATH_TRUE@libquadmath_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
@BUILD_LIBQUADMATH_TRUE@ $(version_arg) $(lt_host_flags) $(LIBM) $(libquadmath_darwin_rpath)
Expand Down
2 changes: 1 addition & 1 deletion libsanitizer/asan/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ endif
libasan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)

if ENABLE_DARWIN_AT_RPATH
libasan_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libasan_darwin_rpath = -Wc,-nodefaultrpaths
libasan_darwin_rpath += -Wl,-rpath,@loader_path
endif
libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
Expand Down
3 changes: 2 additions & 1 deletion libsanitizer/asan/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,8 @@ libasan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(top_builddir)/lsan/libsanitizer_lsan.la $(am__append_2) \
$(am__append_3) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
@ENABLE_DARWIN_AT_RPATH_TRUE@libasan_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libasan_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(link_libasan) $(libasan_darwin_rpath)
Expand Down
2 changes: 1 addition & 1 deletion libsanitizer/lsan/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ liblsan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
liblsan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
if ENABLE_DARWIN_AT_RPATH
liblsan_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
liblsan_darwin_rpath = -Wc,-nodefaultrpaths
liblsan_darwin_rpath += -Wl,-rpath,@loader_path
endif
liblsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
Expand Down
3 changes: 2 additions & 1 deletion libsanitizer/lsan/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,8 @@ liblsan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(top_builddir)/interception/libinterception.la \
$(am__append_1) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
@ENABLE_DARWIN_AT_RPATH_TRUE@liblsan_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@liblsan_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
liblsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(link_liblsan) $(liblsan_darwin_rpath)
Expand Down
2 changes: 1 addition & 1 deletion libsanitizer/ubsan/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ libubsan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
libubsan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
if ENABLE_DARWIN_AT_RPATH
libubsan_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libubsan_darwin_rpath = -Wc,-nodefaultrpaths
libubsan_darwin_rpath += -Wl,-rpath,@loader_path
endif
libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
Expand Down
3 changes: 2 additions & 1 deletion libsanitizer/ubsan/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,8 @@ libubsan_la_SOURCES = $(ubsan_files)
libubsan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(am__append_1) $(am__append_2) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
@ENABLE_DARWIN_AT_RPATH_TRUE@libubsan_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libubsan_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(link_libubsan) $(libubsan_darwin_rpath)
Expand Down
2 changes: 1 addition & 1 deletion libssp/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ libssp_la_SOURCES = \
libssp_la_LIBADD =
libssp_la_DEPENDENCIES = $(version_dep) $(libssp_la_LIBADD)
if ENABLE_DARWIN_AT_RPATH
libssp_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libssp_darwin_rpath = -Wc,-nodefaultrpaths
libssp_darwin_rpath += -Wl,-rpath,@loader_path
endif
libssp_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
Expand Down
3 changes: 2 additions & 1 deletion libssp/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,8 @@ libssp_la_SOURCES = \

libssp_la_LIBADD =
libssp_la_DEPENDENCIES = $(version_dep) $(libssp_la_LIBADD)
@ENABLE_DARWIN_AT_RPATH_TRUE@libssp_darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libssp_darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libssp_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(version_arg) $(lt_host_flags) $(libssp_darwin_rpath)
Expand Down
2 changes: 1 addition & 1 deletion libstdc++-v3/src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ libstdc___la_DEPENDENCIES = \
$(top_builddir)/src/c++20/libc++20convenience.la

if ENABLE_DARWIN_AT_RPATH
libstdc___darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths
libstdc___darwin_rpath = -Wc,-nodefaultrpaths
libstdc___darwin_rpath += -Wl,-rpath,@loader_path
endif

Expand Down
3 changes: 2 additions & 1 deletion libstdc++-v3/src/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,8 @@ libstdc___la_DEPENDENCIES = \
$(top_builddir)/src/c++17/libc++17convenience.la \
$(top_builddir)/src/c++20/libc++20convenience.la

@ENABLE_DARWIN_AT_RPATH_TRUE@libstdc___darwin_rpath = -Wc,-nodefaultexport,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@libstdc___darwin_rpath = \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
libstdc___la_LDFLAGS = \
-version-info $(libtool_VERSION) ${version_arg} -lm $(libstdc___darwin_rpath)
Expand Down

0 comments on commit 398c061

Please sign in to comment.