summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Katzman <dougk@google.com>2015-10-02 18:39:08 +0000
committerDouglas Katzman <dougk@google.com>2015-10-02 18:39:08 +0000
commit9e31cb9ea7be1a7f5c8690e36d827f483f5d7ae1 (patch)
tree4c720f67285228ce1ff142f8b53a9d401b62d70c
parent4b5507a037af420b28600a792bab1e6850b5cc73 (diff)
downloadbcm5719-llvm-9e31cb9ea7be1a7f5c8690e36d827f483f5d7ae1.tar.gz
bcm5719-llvm-9e31cb9ea7be1a7f5c8690e36d827f483f5d7ae1.zip
[Myriad]: Accept '-nostdlib' option
llvm-svn: 249166
-rw-r--r--clang/lib/Driver/Tools.cpp40
-rw-r--r--clang/test/Driver/myriad-toolchain.c4
2 files changed, 27 insertions, 17 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 932122236b5..f20e5cd8ef8 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -9760,6 +9760,8 @@ void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const llvm::Triple &T = TC.getTriple();
ArgStringList CmdArgs;
bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+ bool UseDefaultLibs = !Args.hasArg(options::OPT_nostdlib) &&
+ !Args.hasArg(options::OPT_nodefaultlibs);
std::string StartFilesDir, BuiltinLibDir;
TC.getCompilerSupportDir(StartFilesDir);
@@ -9796,27 +9798,31 @@ void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
options::OPT_e, options::OPT_s, options::OPT_t,
options::OPT_Z_Flag, options::OPT_r});
- // The linker doesn't use these builtin paths unless directed to,
- // because it was not compiled for support with sysroots, nor does
- // it have a default of little-endian with FPU.
- CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
- CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
+ if (UseDefaultLibs) {
+ // The linker doesn't use these builtin paths unless directed to,
+ // because it was not compiled for support with sysroots, nor does
+ // it have a default of little-endian with FPU.
+ CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
+ CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
+ }
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
- if (T.getOS() == llvm::Triple::RTEMS) {
- CmdArgs.push_back("--start-group");
- CmdArgs.push_back("-lc");
- // You must provide your own "-L" option to enable finding these.
- CmdArgs.push_back("-lrtemscpu");
- CmdArgs.push_back("-lrtemsbsp");
- CmdArgs.push_back("--end-group");
- } else {
- CmdArgs.push_back("-lc");
+ if (UseDefaultLibs) {
+ if (T.getOS() == llvm::Triple::RTEMS) {
+ CmdArgs.push_back("--start-group");
+ CmdArgs.push_back("-lc");
+ // You must provide your own "-L" option to enable finding these.
+ CmdArgs.push_back("-lrtemscpu");
+ CmdArgs.push_back("-lrtemsbsp");
+ CmdArgs.push_back("--end-group");
+ } else {
+ CmdArgs.push_back("-lc");
+ }
+ if (C.getDriver().CCCIsCXX())
+ CmdArgs.push_back("-lstdc++");
+ CmdArgs.push_back("-lgcc");
}
- if (C.getDriver().CCCIsCXX())
- CmdArgs.push_back("-lstdc++");
- CmdArgs.push_back("-lgcc");
if (UseStartfiles) {
CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtend.o"));
CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtn.o"));
diff --git a/clang/test/Driver/myriad-toolchain.c b/clang/test/Driver/myriad-toolchain.c
index 9760d7b2f44..9db62f5f8e1 100644
--- a/clang/test/Driver/myriad-toolchain.c
+++ b/clang/test/Driver/myriad-toolchain.c
@@ -53,3 +53,7 @@
// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
// RUN: | FileCheck %s -check-prefix=MDMF
// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
+
+// RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s --check-prefix=NOSTDLIB
+//
+// NOSTDLIB-NOT: "-lc"
OpenPOWER on IntegriCloud