From: Douglas Katzman Date: Fri, 2 Oct 2015 18:39:08 +0000 (+0000) Subject: [Myriad]: Accept '-nostdlib' option X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fa376cc4006140bdf7794272f241b1e37fa73645;p=clang [Myriad]: Accept '-nostdlib' option git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249166 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 932122236b..f20e5cd8ef 100644 --- a/lib/Driver/Tools.cpp +++ b/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/test/Driver/myriad-toolchain.c b/test/Driver/myriad-toolchain.c index 9760d7b2f4..9db62f5f8e 100644 --- a/test/Driver/myriad-toolchain.c +++ b/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"