[mips] Fix ELF header flags.

As opposed to GCC/GAS the default ABI for Mips64 is n64.
Compatibility bit should be set if o32 ABI is used when targeting Mips64.

llvm-svn: 200332
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
index 0dec292..41b8ad6 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
@@ -137,7 +137,14 @@
     EFlags |= ELF::EF_MIPS_ARCH_32;
 
   if (T.isArch64Bit()) {
-    EFlags |= ELF::EF_MIPS_ABI2;
+    if (Features & Mips::FeatureN32)
+      EFlags |= ELF::EF_MIPS_ABI2;
+    else if (Features & Mips::FeatureO32) {
+      EFlags |= ELF::EF_MIPS_ABI_O32;
+      EFlags |= ELF::EF_MIPS_32BITMODE; /* Compatibility Mode */
+    }
+    // No need to set any bit for N64 which is the default ABI at the moment
+    // for 64-bit Mips architectures.
   } else {
     if (Features & Mips::FeatureMips64r2 || Features & Mips::FeatureMips64)
       EFlags |= ELF::EF_MIPS_32BITMODE;