diff options
| author | Douglas Katzman <dougk@google.com> | 2015-10-02 18:39:08 +0000 |
|---|---|---|
| committer | Douglas Katzman <dougk@google.com> | 2015-10-02 18:39:08 +0000 |
| commit | 9e31cb9ea7be1a7f5c8690e36d827f483f5d7ae1 (patch) | |
| tree | 4c720f67285228ce1ff142f8b53a9d401b62d70c | |
| parent | 4b5507a037af420b28600a792bab1e6850b5cc73 (diff) | |
| download | bcm5719-llvm-9e31cb9ea7be1a7f5c8690e36d827f483f5d7ae1.tar.gz bcm5719-llvm-9e31cb9ea7be1a7f5c8690e36d827f483f5d7ae1.zip | |
[Myriad]: Accept '-nostdlib' option
llvm-svn: 249166
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 40 | ||||
| -rw-r--r-- | clang/test/Driver/myriad-toolchain.c | 4 |
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" |

