From 5cfc55e49fefec6fae6ebbd1b99a84aa439c9eb8 Mon Sep 17 00:00:00 2001 From: Bob Wilson Date: Sat, 1 Feb 2014 21:06:21 +0000 Subject: Fix an assertion failure when building for the iOS simulator. rdar://15959009 When building for i386 or x86_64 with IPHONEOS_DEPLOYMENT_TARGET set in the environment, the toolchain correctly recognizes that the target platform is the iOS simulator. The code in Darwin::addMinVersionArgs was not updated for svn 197148, where isTargetIPhoneOS() was widely replaced by isTargetIOSBased(). This is kind of a strange case, though, because we probably ought to be passing -ios_simulator_version_min to the linker, but according to the FIXME in the code, we intentionally avoid that unless the -mios-simulator-version-min option was used. I don't know whether it is safe to change that yet, so for now, I am just fixing the assertion failure. llvm-svn: 200618 --- clang/lib/Driver/ToolChains.cpp | 2 +- clang/test/Driver/darwin-ld.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index b2ccb7879d1..2a1521f7c67 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -991,7 +991,7 @@ void Darwin::addMinVersionArgs(const llvm::opt::ArgList &Args, // it. if (Args.hasArg(options::OPT_mios_simulator_version_min_EQ)) CmdArgs.push_back("-ios_simulator_version_min"); - else if (isTargetIPhoneOS()) + else if (isTargetIOSBased()) CmdArgs.push_back("-iphoneos_version_min"); else { assert(isTargetMacOS() && "unexpected target"); diff --git a/clang/test/Driver/darwin-ld.c b/clang/test/Driver/darwin-ld.c index 25b28d6e7db..6318ead41da 100644 --- a/clang/test/Driver/darwin-ld.c +++ b/clang/test/Driver/darwin-ld.c @@ -173,3 +173,11 @@ // // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}} // LINK_X86_64H_MULTIARCH: "x86_64h" + +// Check that clang passes -iphoneos_version_min to the linker when building +// for the iOS simulator but when -mios-simulator-version-min is not +// explicitly specified (). +// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \ +// RUN: %clang -target i386-apple-darwin -### %t.o 2> %t.log +// RUN: FileCheck -check-prefix=LINK_IPHONEOS_VERSION_MIN %s < %t.log +// LINK_IPHONEOS_VERSION_MIN: -iphoneos_version_min -- cgit v1.2.3