diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index f1a84b4..281dfa7 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -63,9 +63,10 @@
 // Defines specific to certain operating systems.
 //===----------------------------------------------------------------------===//
 
-static void getSolarisDefines(std::vector<char> &Defs) {
-  Define(Defs, "__SUN__");
-  Define(Defs, "__SOLARIS__");
+static void getSolarisDefines(const LangOptions &Opts, std::vector<char> &Defs) {
+  DefineStd(Defs, "sun", Opts);
+  DefineStd(Defs, "unix", Opts);
+  Define(Defs, "__ELF__", "1");
 }
 
 static void getFreeBSDDefines(const LangOptions &Opts, bool is64Bit,
@@ -886,6 +887,23 @@
 } // end anonymous namespace
 
 namespace {
+// x86-32 Solaris target
+class SolarisX86_32TargetInfo : public X86_32TargetInfo {
+public:
+  SolarisX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) {
+    UserLabelPrefix = "";
+    WCharType = WCharType = SignedLong;    
+  }
+  virtual void getTargetDefines(const LangOptions &Opts,
+                                std::vector<char> &Defines) const {
+    X86_32TargetInfo::getTargetDefines(Opts, Defines);
+    getSolarisDefines(Opts, Defines);
+  }
+};
+} // end anonymous namespace
+
+
+namespace {
 // x86-32 Windows target
 class WindowsX86_32TargetInfo : public X86_32TargetInfo {
 public:
@@ -967,6 +985,22 @@
 } // end anonymous namespace
 
 namespace {
+// x86-64 Solaris target
+class SolarisX86_64TargetInfo : public X86_64TargetInfo {
+public:
+  SolarisX86_64TargetInfo(const std::string& triple) : X86_64TargetInfo(triple) {
+    UserLabelPrefix = "";
+    WCharType = WCharType = SignedLong;
+  }
+  virtual void getTargetDefines(const LangOptions &Opts,
+                                std::vector<char> &Defines) const {
+    X86_64TargetInfo::getTargetDefines(Opts, Defines);
+    getSolarisDefines(Opts, Defines);
+  }
+};
+} // end anonymous namespace
+
+namespace {
 // x86-64 Darwin (OS X) target
 class DarwinX86_64TargetInfo : public X86_64TargetInfo {
 public:
@@ -1246,7 +1280,7 @@
   virtual void getTargetDefines(const LangOptions &Opts,
                                 std::vector<char> &Defines) const {
     SparcV8TargetInfo::getTargetDefines(Opts, Defines);
-    getSolarisDefines(Defines);
+    getSolarisDefines(Opts, Defines);
   }
 };
 } // end anonymous namespace.
@@ -1420,6 +1454,8 @@
       return new LinuxX86_64TargetInfo(T);
     if (isFreeBSD)
       return new FreeBSDX86_64TargetInfo(T);
+    if (isSolaris)
+      return new SolarisX86_64TargetInfo(T);
     return new X86_64TargetInfo(T);
   }
 
@@ -1438,6 +1474,8 @@
       return new DragonFlyX86_32TargetInfo(T);
     if (isFreeBSD)
       return new FreeBSDX86_32TargetInfo(T);
+    if (isSolaris)
+      return new SolarisX86_32TargetInfo(T);
     if (isWindows)
       return new WindowsX86_32TargetInfo(T);
     return new X86_32TargetInfo(T);
