[Driver] Use -Bstatic/dynamic for libc++ on Fuchsia
authorPetr Hosek <phosek@chromium.org>
Sun, 4 Nov 2018 22:38:47 +0000 (22:38 +0000)
committerPetr Hosek <phosek@chromium.org>
Sun, 4 Nov 2018 22:38:47 +0000 (22:38 +0000)
-static relies on lld's behavior, but -Bstatic/dynamic is supported
across all linkers.

Differential Revision: https://reviews.llvm.org/D54082

llvm-svn: 346107

clang/lib/Driver/ToolChains/Fuchsia.cpp
clang/test/Driver/fuchsia.cpp

index f788f91..cfda9b4 100644 (file)
@@ -125,8 +125,10 @@ void fuchsia::Linker::ConstructJob(Compilation &C, const JobAction &JA,
         CmdArgs.push_back("--push-state");
         CmdArgs.push_back("--as-needed");
         if (OnlyLibstdcxxStatic)
-          CmdArgs.push_back("-static");
+          CmdArgs.push_back("-Bstatic");
         ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
+        if (OnlyLibstdcxxStatic)
+          CmdArgs.push_back("-Bdynamic");
         CmdArgs.push_back("-lm");
         CmdArgs.push_back("--pop-state");
       }
index 2d422ba..2c80ad0 100644 (file)
@@ -37,8 +37,9 @@
 // RUN:     | FileCheck %s -check-prefix=CHECK-STATIC
 // CHECK-STATIC: "--push-state"
 // CHECK-STATIC: "--as-needed"
-// CHECK-STATIC: "-static"
+// CHECK-STATIC: "-Bstatic"
 // CHECK-STATIC: "-lc++"
+// CHECK-STATIC: "-Bdynamic"
 // CHECK-STATIC: "-lm"
 // CHECK-STATIC: "--pop-state"
 // CHECK-STATIC: "-lc"