diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2019-02-14 17:47:49 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2019-02-14 17:47:49 +0000 |
commit | 0b6e3127e8a003ad01b9cfb6896dee14c637701b (patch) | |
tree | 2ab850aa2d7c3b37ace2470ebaae57ae9a799012 /gcc/d/d-spec.cc | |
parent | 323694e9a2c535d56a81bcfc84fb0fd5b6155b34 (diff) | |
download | gcc-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.cc | 9 |
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; |