Handle compat support for EABI/old APCS compatibility on NetBSD/ARM.

llvm-svn: 200665
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index d477a6a..cc0f779 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -6117,6 +6117,23 @@
     CmdArgs.push_back("elf_i386");
   }
 
+  // On ARM, the linker can generate either EABI or the older APCS.
+  // Instruct it to use the correct emulation.
+  if (getToolChain().getArch() == llvm::Triple::arm) {
+    CmdArgs.push_back("-m");
+    switch (getToolChain().getTriple().getEnvironment()) {
+    case llvm::Triple::EABI:
+    case llvm::Triple::EABIHF:
+    case llvm::Triple::GNUEABI:
+    case llvm::Triple::GNUEABIHF:
+      CmdArgs.push_back("armelf_nbsd_eabi");
+      break;
+    default:
+      CmdArgs.push_back("armelf_nbsd");
+      break;
+    }
+  }
+
   if (Output.isFilename()) {
     CmdArgs.push_back("-o");
     CmdArgs.push_back(Output.getFilename());