Teach the driver on Linux to respect -nodefaultlibs.
Patch from Andrew C. Morrow. llvm-svn: 156771
This commit is contained in:
parent
31ee64d9dc
commit
94a3201179
|
@ -5313,7 +5313,9 @@ void linuxtools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
|
||||
|
||||
if (D.CCCIsCXX && !Args.hasArg(options::OPT_nostdlib)) {
|
||||
if (D.CCCIsCXX &&
|
||||
!Args.hasArg(options::OPT_nostdlib) &&
|
||||
!Args.hasArg(options::OPT_nodefaultlibs)) {
|
||||
bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
|
||||
!Args.hasArg(options::OPT_static);
|
||||
if (OnlyLibstdcxxStatic)
|
||||
|
@ -5328,22 +5330,23 @@ void linuxtools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
addAsanRTLinux(getToolChain(), Args, CmdArgs);
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib)) {
|
||||
if (Args.hasArg(options::OPT_static))
|
||||
CmdArgs.push_back("--start-group");
|
||||
if (!Args.hasArg(options::OPT_nodefaultlibs)) {
|
||||
if (Args.hasArg(options::OPT_static))
|
||||
CmdArgs.push_back("--start-group");
|
||||
|
||||
AddLibgcc(ToolChain.getTriple(), D, CmdArgs, Args);
|
||||
|
||||
if (Args.hasArg(options::OPT_pthread) ||
|
||||
Args.hasArg(options::OPT_pthreads))
|
||||
CmdArgs.push_back("-lpthread");
|
||||
|
||||
CmdArgs.push_back("-lc");
|
||||
|
||||
if (Args.hasArg(options::OPT_static))
|
||||
CmdArgs.push_back("--end-group");
|
||||
else
|
||||
AddLibgcc(ToolChain.getTriple(), D, CmdArgs, Args);
|
||||
|
||||
if (Args.hasArg(options::OPT_pthread) ||
|
||||
Args.hasArg(options::OPT_pthreads))
|
||||
CmdArgs.push_back("-lpthread");
|
||||
|
||||
CmdArgs.push_back("-lc");
|
||||
|
||||
if (Args.hasArg(options::OPT_static))
|
||||
CmdArgs.push_back("--end-group");
|
||||
else
|
||||
AddLibgcc(ToolChain.getTriple(), D, CmdArgs, Args);
|
||||
}
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostartfiles)) {
|
||||
const char *crtend;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2> %t
|
||||
// RUN: FileCheck < %t %s
|
||||
//
|
||||
// CHECK-NOT: start-group
|
||||
// CHECK-NOT: -lgcc
|
||||
// CHECK-NOT: -lc
|
||||
// CHECK: crtbegin
|
||||
// CHECK: crtend
|
Loading…
Reference in New Issue