From 0b6e3127e8a003ad01b9cfb6896dee14c637701b Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Thu, 14 Feb 2019 17:47:49 +0000 Subject: Provide __start_minfo/__stop_minfo for linkers that don't (PR d/87864) libphobos: PR d/87864 * configure.ac (DRTSTUFF_SPEC): New variable. Substitute it. * libdruntime/m4/druntime/os.m4 (DRUNTIME_OS_MINFO_BRACKETING): New automake conditional. * configure: Regenerate. * libdruntime/gcc/drtstuff.c: New file. * libdruntime/Makefile.am [!DRUNTIME_OS_MINFO_BRACKETING] (DRTSTUFF, toolexeclib_DATA): New variables. (gcc/drtbegin.lo, gcc/drtend.lo): New rules. (libgdruntime_la_LDFLAGS): Use -Wc instead of -Xcompiler. Add -dstartfiles -B../src -Bgcc. (libgdruntime_la_DEPENDENCIES): New variable. (unittest_static_LDFLAGS): Use -Wc instead of -Xcompiler. (libgdruntime_t_la_LDFLAGS): Likewise. (unittest_LDFLAGS): Likewise. * src/Makefile.am (libgphobos_la_LDFLAGS): Use -Wc instead of -Xcompiler. Add -dstartfiles -B../libdruntime/gcc. (unittest_static_LDFLAGS): Use -Wc instead of -Xcompiler. (libgphobos_t_la_LDFLAGS): Likewise. (unittest_LDFLAGS): Likewise. * libdruntime/Makefile.in, src/Makefile.in: Regenerate. * Makefile.in, testsuite/Makefile.in: Regenerate. * libdruntime/rt/sections_elf_shared.d (Minfo_Bracketing): Don't assert. * libdruntime/gcc/config.d.in (Minfo_Bracketing): Remove. * src/drtstuff.spec: New file. * src/libgphobos.spec.in (DRTSTUFF_SPEC): Substitute. (*lib): Only pass SPEC_PHOBOS_DEPS without -debuglib, -defaultlib, -nophoboslib. * testsuite/testsuite_flags.in <--gdcldflags> (GDCLDFLAGS): Add -B${BUILD_DIR}/libdruntime/gcc. gcc/d: PR d/87864 * lang.opt (dstartfiles): New option. * d-spec.cc (need_spec): New variable. (lang_specific_driver) : Enable need_spec. (lang_specific_pre_link): Also load libgphobos.spec if need_spec. gcc/testsuite: PR d/87864 * lib/gdc.exp (gdc_link_flags): Add path to drtbegin.o/drtend.o if present. From-SVN: r268886 --- libphobos/src/Makefile.am | 9 +++++---- libphobos/src/Makefile.in | 10 ++++++---- libphobos/src/drtstuff.spec | 5 +++++ libphobos/src/libgphobos.spec.in | 4 +++- 4 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 libphobos/src/drtstuff.spec (limited to 'libphobos/src') diff --git a/libphobos/src/Makefile.am b/libphobos/src/Makefile.am index 30896df..51fd11e 100644 --- a/libphobos/src/Makefile.am +++ b/libphobos/src/Makefile.am @@ -57,14 +57,15 @@ toolexeclib_DATA = libgphobos.spec toolexeclib_LTLIBRARIES = libgphobos.la libgphobos_la_SOURCES = $(ALL_PHOBOS_SOURCES) $(ZLIB_SRC) libgphobos_la_LIBTOOLFLAGS = -libgphobos_la_LDFLAGS = -Xcompiler -nophoboslib -version-info $(libtool_VERSION) +libgphobos_la_LDFLAGS = -Wc,-nophoboslib,-dstartfiles,-B../libdruntime/gcc \ + -version-info $(libtool_VERSION) libgphobos_la_LIBADD = ../libdruntime/libgdruntime.la libgphobos_la_DEPENDENCIES = libgphobos.spec # For static unittest, link objects directly unittest_static_SOURCES = ../testsuite/test_runner.d $(ZLIB_SRC) unittest_static_LIBTOOLFLAGS = -unittest_static_LDFLAGS = -Xcompiler -nophoboslib -static-libtool-libs +unittest_static_LDFLAGS = -Wc,-nophoboslib -static-libtool-libs unittest_static_LDADD = $(PHOBOS_TEST_OBJECTS) \ ../libdruntime/libgdruntime.la EXTRA_unittest_static_DEPENDENCIES = $(PHOBOS_TEST_OBJECTS) @@ -72,7 +73,7 @@ EXTRA_unittest_static_DEPENDENCIES = $(PHOBOS_TEST_OBJECTS) # For unittest with dynamic library libgphobos_t_la_SOURCES = $(ZLIB_SRC) libgphobos_t_la_LIBTOOLFLAGS = -libgphobos_t_la_LDFLAGS = -Xcompiler -nophoboslib -rpath /foo -shared +libgphobos_t_la_LDFLAGS = -Wc,-nophoboslib -rpath /foo -shared libgphobos_t_la_LIBADD = $(PHOBOS_TEST_LOBJECTS) \ ../libdruntime/libgdruntime.la EXTRA_libgphobos_t_la_DEPENDENCIES = $(PHOBOS_TEST_LOBJECTS) @@ -80,7 +81,7 @@ EXTRA_libgphobos_t_la_DEPENDENCIES = $(PHOBOS_TEST_LOBJECTS) # For unittest unittest_SOURCES = ../testsuite/test_runner.d unittest_LIBTOOLFLAGS = -unittest_LDFLAGS = -Xcompiler -nophoboslib -shared +unittest_LDFLAGS = -Wc,-nophoboslib -shared unittest_LDADD = libgphobos_t.la ../libdruntime/libgdruntime.la # Extra install and clean rules. diff --git a/libphobos/src/Makefile.in b/libphobos/src/Makefile.in index a349fa7..3dffa6f 100644 --- a/libphobos/src/Makefile.in +++ b/libphobos/src/Makefile.in @@ -696,14 +696,16 @@ toolexeclib_DATA = libgphobos.spec toolexeclib_LTLIBRARIES = libgphobos.la libgphobos_la_SOURCES = $(ALL_PHOBOS_SOURCES) $(ZLIB_SRC) libgphobos_la_LIBTOOLFLAGS = -libgphobos_la_LDFLAGS = -Xcompiler -nophoboslib -version-info $(libtool_VERSION) +libgphobos_la_LDFLAGS = -Wc,-nophoboslib,-dstartfiles,-B../libdruntime/gcc \ + -version-info $(libtool_VERSION) + libgphobos_la_LIBADD = ../libdruntime/libgdruntime.la libgphobos_la_DEPENDENCIES = libgphobos.spec # For static unittest, link objects directly unittest_static_SOURCES = ../testsuite/test_runner.d $(ZLIB_SRC) unittest_static_LIBTOOLFLAGS = -unittest_static_LDFLAGS = -Xcompiler -nophoboslib -static-libtool-libs +unittest_static_LDFLAGS = -Wc,-nophoboslib -static-libtool-libs unittest_static_LDADD = $(PHOBOS_TEST_OBJECTS) \ ../libdruntime/libgdruntime.la @@ -712,7 +714,7 @@ EXTRA_unittest_static_DEPENDENCIES = $(PHOBOS_TEST_OBJECTS) # For unittest with dynamic library libgphobos_t_la_SOURCES = $(ZLIB_SRC) libgphobos_t_la_LIBTOOLFLAGS = -libgphobos_t_la_LDFLAGS = -Xcompiler -nophoboslib -rpath /foo -shared +libgphobos_t_la_LDFLAGS = -Wc,-nophoboslib -rpath /foo -shared libgphobos_t_la_LIBADD = $(PHOBOS_TEST_LOBJECTS) \ ../libdruntime/libgdruntime.la @@ -721,7 +723,7 @@ EXTRA_libgphobos_t_la_DEPENDENCIES = $(PHOBOS_TEST_LOBJECTS) # For unittest unittest_SOURCES = ../testsuite/test_runner.d unittest_LIBTOOLFLAGS = -unittest_LDFLAGS = -Xcompiler -nophoboslib -shared +unittest_LDFLAGS = -Wc,-nophoboslib -shared unittest_LDADD = libgphobos_t.la ../libdruntime/libgdruntime.la # Zlib sources when not using system libz diff --git a/libphobos/src/drtstuff.spec b/libphobos/src/drtstuff.spec new file mode 100644 index 0000000..951a91b --- /dev/null +++ b/libphobos/src/drtstuff.spec @@ -0,0 +1,5 @@ +%rename startfile startfile_orig +*startfile: %(startfile_orig) drtbegin.o%s + +%rename endfile endfile_orig +*endfile: %(endfile_orig) drtend.o%s diff --git a/libphobos/src/libgphobos.spec.in b/libphobos/src/libgphobos.spec.in index 0a33e83..ff93896 100644 --- a/libphobos/src/libgphobos.spec.in +++ b/libphobos/src/libgphobos.spec.in @@ -4,5 +4,7 @@ # order. # +@DRTSTUFF_SPEC@ + %rename lib liborig_gdc_renamed -*lib: @SPEC_PHOBOS_DEPS@ %(liborig_gdc_renamed) +*lib: %{debuglib|defaultlib|nophoboslib: ; :@SPEC_PHOBOS_DEPS@} %(liborig_gdc_renamed) -- cgit v1.1