diff options
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 22b14825ef..ffdb3d92f0 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -431,8 +431,6 @@ void Clang::AddARMTargetArgs(const ArgList &Args, // If unspecified, choose the default based on the platform. if (FloatABI.empty()) { - // FIXME: This is wrong for non-Darwin, we don't have a mechanism yet for - // distinguishing things like linux-eabi vs linux-elf. switch (getToolChain().getTriple().getOS()) { case llvm::Triple::Darwin: { // Darwin defaults to "softfp" for v6 and v7. @@ -446,6 +444,15 @@ void Clang::AddARMTargetArgs(const ArgList &Args, break; } + case llvm::Triple::Linux: { + llvm::StringRef Env = getToolChain().getTriple().getEnvironmentName(); + if (Env == "gnueabi") { + FloatABI = "softfp"; + break; + } + } + // fall through + default: // Assume "soft", but warn the user we are guessing. FloatABI = "soft"; |