diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index e6f76e598e61825e630eab7387138cfd4498e444..714d3d5cc0d15fd79b591ea6cc1d976387c47dd3 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -217,8 +217,7 @@ extern GTY(()) int darwin_ms_struct;
   "%{image_base*:-Xlinker -image_base -Xlinker %*} %<image_base*",	\
   "%{init*:-Xlinker -init -Xlinker %*} %<init*",			\
   "%{multi_module:-Xlinker -multi_module} %<multi_module",		\
-  "%{multiply_defined*:-Xlinker -multiply_defined -Xlinker %*} \
-     %<multiply_defined* ",						\
+  "%{multiply_defined*:-Xlinker -multiply_defined -Xlinker %*} ",	\
   "%{multiplydefinedunused*:\
      -Xlinker -multiply_defined_unused -Xlinker %*} \
      %<multiplydefinedunused* ",					\
@@ -294,7 +293,7 @@ extern GTY(()) int darwin_ms_struct;
    %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }"
 
 #define DARWIN_CC1_SPEC							\
-  "%<dynamic %<dynamiclib %<force_cpusubtype_ALL "
+  "%<dynamic %<dynamiclib %<force_cpusubtype_ALL %<multiply_defined* "
 
 #define SUBSUBTARGET_OVERRIDE_OPTIONS					\
   do {									\
diff --git a/gcc/testsuite/lib/g++.exp b/gcc/testsuite/lib/g++.exp
index e759f76b3f88c2e34a0aa65bf0f8debeeca62bc4..db6e5b8fa05a7537310bf3eeb3c0bde8142f1c76 100644
--- a/gcc/testsuite/lib/g++.exp
+++ b/gcc/testsuite/lib/g++.exp
@@ -285,10 +285,6 @@ proc g++_init { args } {
     set gcc_warning_prefix "warning:"
     set gcc_error_prefix "(fatal )?error:"
 
-    if { [istarget *-*-darwin*] } {
-	lappend ALWAYS_CXXFLAGS "ldflags=-multiply_defined suppress"
-       }
-
     verbose -log "ALWAYS_CXXFLAGS set to $ALWAYS_CXXFLAGS"
 
     verbose "g++ is initialized" 3
diff --git a/gcc/testsuite/lib/obj-c++.exp b/gcc/testsuite/lib/obj-c++.exp
index 51268fd64aecff65dc66b0a03972fb70d2fe5f45..98f1e5c6a044d5c4e83b455ce2b243a188313884 100644
--- a/gcc/testsuite/lib/obj-c++.exp
+++ b/gcc/testsuite/lib/obj-c++.exp
@@ -277,10 +277,6 @@ proc obj-c++_init { args } {
     set gcc_warning_prefix "warning:"
     set gcc_error_prefix "(fatal )?error:"
 
-    if { [istarget *-*-darwin*] } {
-	lappend ALWAYS_OBJCXXFLAGS "ldflags=-multiply_defined suppress"
-    }
-
     verbose -log "ALWAYS_OBJCXXFLAGS set to $ALWAYS_OBJCXXFLAGS"
 
     verbose "obj-c++ is initialized" 3
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index c83147ce99adc1b171d3997d8acc8b840079c1d8..9f3e896751ab4ed4075ac95894af6fdf075fd653 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -133,9 +133,6 @@ proc libstdc++_init { testfile } {
     if ![info exists DEFAULT_CXXFLAGS] then {
 	set DEFAULT_CXXFLAGS ""
 	# Host specific goo here.
-	if { [string match "powerpc-*-darwin*" $target_triplet] } {
-	    append DEFAULT_CXXFLAGS " -multiply_defined suppress"
-	}
 	if { [string match "powerpc-ibm-aix*" $target_triplet] } {
 	    append DEFAULT_CXXFLAGS " -Wl,-bmaxdata:0x20000000"
 	}