aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/d-spec.cc
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2019-02-14 17:47:49 +0000
committerRainer Orth <ro@gcc.gnu.org>2019-02-14 17:47:49 +0000
commit0b6e3127e8a003ad01b9cfb6896dee14c637701b (patch)
tree2ab850aa2d7c3b37ace2470ebaae57ae9a799012 /gcc/d/d-spec.cc
parent323694e9a2c535d56a81bcfc84fb0fd5b6155b34 (diff)
downloadgcc-0b6e3127e8a003ad01b9cfb6896dee14c637701b.zip
gcc-0b6e3127e8a003ad01b9cfb6896dee14c637701b.tar.gz
gcc-0b6e3127e8a003ad01b9cfb6896dee14c637701b.tar.bz2
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) <OPT_dstartfiles>: 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
Diffstat (limited to 'gcc/d/d-spec.cc')
-rw-r--r--gcc/d/d-spec.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/d/d-spec.cc b/gcc/d/d-spec.cc
index 724e5d2..3d491f5 100644
--- a/gcc/d/d-spec.cc
+++ b/gcc/d/d-spec.cc
@@ -72,6 +72,9 @@ static phobos_action phobos_library = PHOBOS_DEFAULT;
standard libraries. */
static bool need_phobos = true;
+/* If true, do load libgphobos.spec even if not needed otherwise. */
+static bool need_spec = false;
+
void
lang_specific_driver (cl_decoded_option **in_decoded_options,
unsigned int *in_decoded_options_count,
@@ -144,6 +147,10 @@ lang_specific_driver (cl_decoded_option **in_decoded_options,
switch (decoded_options[i].opt_index)
{
+ case OPT_dstartfiles:
+ need_spec = true;
+ break;
+
case OPT_nostdlib:
case OPT_nodefaultlibs:
phobos_library = PHOBOS_NOLINK;
@@ -491,7 +498,7 @@ lang_specific_driver (cl_decoded_option **in_decoded_options,
int
lang_specific_pre_link (void)
{
- if (phobos_library != PHOBOS_NOLINK && need_phobos)
+ if ((phobos_library != PHOBOS_NOLINK && need_phobos) || need_spec)
do_spec ("%:include(libgphobos.spec)");
return 0;