diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-03-31 17:12:33 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-03-31 17:12:33 +0000 |
commit | ebc34dff1838a5a9b4cd00cab61bd9a3e4e6d52c (patch) | |
tree | fdd481d9d336f9f2d6001b694b9cd814f6a3ab13 /clang/lib/Driver | |
parent | 22c5560bc8da2c7a4df1fd002ba1b9b097f9ecc6 (diff) | |
download | bcm5719-llvm-ebc34dff1838a5a9b4cd00cab61bd9a3e4e6d52c.tar.gz bcm5719-llvm-ebc34dff1838a5a9b4cd00cab61bd9a3e4e6d52c.zip |
Driver/Darwin: Tweak link logic for simulator.
llvm-svn: 128641
Diffstat (limited to 'clang/lib/Driver')
-rw-r--r-- | clang/lib/Driver/ToolChains.h | 10 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 5 |
2 files changed, 14 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h index ec16737f0d1..9c567b61916 100644 --- a/clang/lib/Driver/ToolChains.h +++ b/clang/lib/Driver/ToolChains.h @@ -103,6 +103,16 @@ public: return TargetIsIPhoneOS; } + bool isTargetIOSSimulator() const { + // In GCC, the simulator historically was treated as being OS X in some + // contexts, like determining the link logic, despite generally being called + // with an iOS deployment target. For compatibility, we detect the + // simulator is iOS + x86, and treat it differently in a few contexts. + return isTargetIPhoneOS() && + (getTriple().getArch() == llvm::Triple::x86 || + getTriple().getArch() == llvm::Triple::x86_64); + } + bool isTargetInitialized() const { return TargetInitialized; } void getTargetVersion(unsigned (&Res)[3]) const { diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 8ac68ed9520..659b1194312 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -2885,7 +2885,10 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-lcrt0.o"); } else { // Derived from darwin_crt1 spec. - if (getDarwinToolChain().isTargetIPhoneOS()) { + if (getDarwinToolChain().isTargetIOSSimulator()) { + // The simulator doesn't have a versioned crt1 file. + CmdArgs.push_back("-lcrt1.o"); + } else if (getDarwinToolChain().isTargetIPhoneOS()) { if (getDarwinToolChain().isIPhoneOSVersionLT(3, 1)) CmdArgs.push_back("-lcrt1.o"); else |