From a6b4a3d646319636cf6be0b291e7172fe60b4cb5 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Mon, 24 Aug 2009 22:26:16 +0000 Subject: [PATCH] PR4766: Don't pass -static to 'as' on x86_64 on Darwin. Also, do pass -static even with -dynamic on i386. llvm-svn: 79948 --- clang/lib/Driver/Tools.cpp | 6 +++--- clang/test/Driver/darwin-as.c | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 clang/test/Driver/darwin-as.c diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9c8d9401b0c0..1fb161ae208d 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1277,10 +1277,10 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Args.MakeArgString(getToolChain().getArchName().c_str())); CmdArgs.push_back("-force_cpusubtype_ALL"); - if ((Args.hasArg(options::OPT_mkernel) || + if (getToolChain().getTriple().getArch() != llvm::Triple::x86_64 && + (Args.hasArg(options::OPT_mkernel) || Args.hasArg(options::OPT_static) || - Args.hasArg(options::OPT_fapple_kext)) && - !Args.hasArg(options::OPT_dynamic)) + Args.hasArg(options::OPT_fapple_kext))) CmdArgs.push_back("-static"); Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, diff --git a/clang/test/Driver/darwin-as.c b/clang/test/Driver/darwin-as.c new file mode 100644 index 000000000000..24c7cd2fd9ab --- /dev/null +++ b/clang/test/Driver/darwin-as.c @@ -0,0 +1,10 @@ +// RUN: clang -ccc-host-triple i386-apple-darwin10 -### -x assembler -c %s -static -dynamic 2>%t && +// RUN: FileCheck -check-prefix=STATIC_AND_DYNAMIC-32 --input-file %t %s + +// CHECK-STATIC_AND_DYNAMIC-32: as" "-arch" "i386" "-force_cpusubtype_ALL" "-static" "-o" + +// RUN: clang -ccc-host-triple x86_64-apple-darwin10 -### -x assembler -c %s -static 2>%t && +// RUN: FileCheck -check-prefix=STATIC-64 --input-file %t %s + +// CHECK-STATIC-64: as" "-arch" "x86_64" "-force_cpusubtype_ALL" "-o" +