Hi, <br><br>The proposed patch adds Solaris x32/x64 support.<br><br>Thanks.<br><br>Index: Targets.cpp<br>
===================================================================<br>--- Targets.cpp    (revision 72221)<br>+++ Targets.cpp    (working copy)<br>@@ -63,9 +63,10 @@<br> // Defines specific to certain operating systems.<br>

 //===----------------------------------------------------------------------===//<br> <br>-static void getSolarisDefines(std::vector<char> &Defs) {<br>-  Define(Defs, "__SUN__");<br>-  Define(Defs, "__SOLARIS__");<br>

+static void getSolarisDefines(const LangOptions &Opts, std::vector<char> &Defs) {<br>+  DefineStd(Defs, "sun", Opts);<br>+  DefineStd(Defs, "unix", Opts);<br>+  Define(Defs, "__ELF__", "1");<br>

 }<br> <br> static void getFreeBSDDefines(const LangOptions &Opts, bool is64Bit,<br>@@ -886,6 +887,22 @@<br> } // end anonymous namespace<br> <br> namespace {<br>+// x86-32 Solaris target<br>+class SolarisX86_32TargetInfo : public X86_32TargetInfo {<br>

+public:<br>+  SolarisX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) {<br>+    UserLabelPrefix = "";<br>+  }<br>+  virtual void getTargetDefines(const LangOptions &Opts,<br>+                                std::vector<char> &Defines) const {<br>

+    X86_32TargetInfo::getTargetDefines(Opts, Defines);<br>+    getSolarisDefines(Opts, Defines);<br>+  }<br>+};<br>+} // end anonymous namespace<br>+<br>+<br>+namespace {<br> // x86-32 Windows target<br> class WindowsX86_32TargetInfo : public X86_32TargetInfo {<br>

 public:<br>@@ -967,6 +984,21 @@<br> } // end anonymous namespace<br> <br> namespace {<br>+// x86-64 Solaris target<br>+class SolarisX86_64TargetInfo : public X86_64TargetInfo {<br>+public:<br>+  SolarisX86_64TargetInfo(const std::string& triple) : X86_64TargetInfo(triple) {<br>

+    UserLabelPrefix = "";<br>+  }<br>+  virtual void getTargetDefines(const LangOptions &Opts,<br>+                                std::vector<char> &Defines) const {<br>+    X86_64TargetInfo::getTargetDefines(Opts, Defines);<br>

+    getSolarisDefines(Opts, Defines);<br>+  }<br>+};<br>+} // end anonymous namespace<br>+<br>+namespace {<br> // x86-64 Darwin (OS X) target<br> class DarwinX86_64TargetInfo : public X86_64TargetInfo {<br> public:<br>@@ -1246,7 +1278,7 @@<br>

   virtual void getTargetDefines(const LangOptions &Opts,<br>                                 std::vector<char> &Defines) const {<br>     SparcV8TargetInfo::getTargetDefines(Opts, Defines);<br>-    getSolarisDefines(Defines);<br>

+    getSolarisDefines(Opts, Defines);<br>   }<br> };<br> } // end anonymous namespace.<br>@@ -1420,6 +1452,8 @@<br>       return new LinuxX86_64TargetInfo(T);<br>     if (isFreeBSD)<br>       return new FreeBSDX86_64TargetInfo(T);<br>

+    if (isSolaris)<br>+      return new SolarisX86_64TargetInfo(T);<br>     return new X86_64TargetInfo(T);<br>   }<br> <br>@@ -1438,6 +1472,8 @@<br>       return new DragonFlyX86_32TargetInfo(T);<br>     if (isFreeBSD)<br>

       return new FreeBSDX86_32TargetInfo(T);<br>+    if (isSolaris)<br>+      return new SolarisX86_32TargetInfo(T);<br>     if (isWindows)<br>       return new WindowsX86_32TargetInfo(T);<br>     return new X86_32TargetInfo(T);<br>