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>