[pushed] Darwin, D: Fix bootstrap when target does not support -Bstatic/dynamic.

Message ID 20211005195728.44175-1-iain@sandoe.co.uk
State Committed
Commit e24760533b62bb7068e63eb8da49dbca2837d38d
Headers
Series [pushed] Darwin, D: Fix bootstrap when target does not support -Bstatic/dynamic. |

Commit Message

Iain Sandoe Oct. 5, 2021, 7:57 p.m. UTC
  This fixes a bootstrap fail because saw_static_libcxx was unused for
targets without support for -Bstatic/dynamic.

The fix applied pushes the -static-libstdc++ back onto the command
line, which allows a target to substitute a static version of the
c++ standard library using specs.

tested on x86_64-darwin, pushed as bootstrap fix (it, or an alternate
will also be needed on open branches), thanks
Iain

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/d/ChangeLog:

	* d-spec.cc (lang_specific_driver): Push the -static-libstdc++
	option back onto the command line for targets without support
	for -Bstatic/dynamic.
---
 gcc/d/d-spec.cc | 6 ++++++
 1 file changed, 6 insertions(+)
  

Comments

Li, Pan2 via Gcc-patches Oct. 6, 2021, 1:10 p.m. UTC | #1
> On 05/10/2021 21:57 Iain Sandoe <iains.gcc@gmail.com> wrote:
> 
>  
> This fixes a bootstrap fail because saw_static_libcxx was unused for
> targets without support for -Bstatic/dynamic.
> 
> The fix applied pushes the -static-libstdc++ back onto the command
> line, which allows a target to substitute a static version of the
> c++ standard library using specs.
> 
> tested on x86_64-darwin, pushed as bootstrap fix (it, or an alternate
> will also be needed on open branches), thanks

Thanks, it will apply cleanly on the other branches, so feel free to backport.

Iain.
  

Patch

diff --git a/gcc/d/d-spec.cc b/gcc/d/d-spec.cc
index 5adc662c6f2..b12d28f1047 100644
--- a/gcc/d/d-spec.cc
+++ b/gcc/d/d-spec.cc
@@ -468,6 +468,12 @@  lang_specific_driver (cl_decoded_option **in_decoded_options,
 	  generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER,
 			   &new_decoded_options[j++]);
 	}
+#else
+      /* Push the -static-libstdc++ option back onto the command so that
+	 a target without LD_STATIC_DYNAMIC can use outfile substitution.  */
+      if (saw_static_libcxx && !static_link)
+	generate_option (OPT_static_libstdc__, NULL, 1, CL_DRIVER,
+			 &new_decoded_options[j++]);
 #endif
       if (saw_libcxx)
 	new_decoded_options[j++] = *saw_libcxx;