]> granicus.if.org Git - clang/commitdiff
Fix an assertion failure when building for the iOS simulator. rdar://15959009
authorBob Wilson <bob.wilson@apple.com>
Sat, 1 Feb 2014 21:06:21 +0000 (21:06 +0000)
committerBob Wilson <bob.wilson@apple.com>
Sat, 1 Feb 2014 21:06:21 +0000 (21:06 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200618 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains.cpp
test/Driver/darwin-ld.c

index b2ccb7879d1b02de27ab985e5b03aaeb5c4062b6..2a1521f7c67a1526addc15d872b6de2cbf54723e 100644 (file)
@@ -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");
index 25b28d6e7db4e9dc821a7bce0c387706fcdf5825..6318ead41dabd0bf3ef35296aeae25c54122a610 100644 (file)
 //
 // 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 (<rdar://problem/15959009>).
+// 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