components/llvm/patches/029-solaris-LLVM-libTarget-X86.patch
changeset 6512 92717ce71105
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/llvm/patches/029-solaris-LLVM-libTarget-X86.patch	Thu Jul 28 16:25:34 2016 -0700
@@ -0,0 +1,53 @@
+# 22805043 implement the LLVM Intel Solaris native assembler
+# 3.9.X for upstream.
+--- lib/Target/X86/X86TargetMachine.cpp	2015-12-04 05:53:15.000000000 -0500
++++ lib/Target/X86/X86TargetMachine.cpp	2016-05-08 23:19:20.538430899 -0400
+@@ -50,6 +50,8 @@
+ 
+   if (TT.isOSLinux() || TT.isOSNaCl())
+     return make_unique<X86LinuxNaClTargetObjectFile>();
++  if (TT.isOSSolaris())
++    return make_unique<X86SolarisTargetObjectFile>();
+   if (TT.isOSBinFormatELF())
+     return make_unique<X86ELFTargetObjectFile>();
+   if (TT.isKnownWindowsMSVCEnvironment() || TT.isWindowsCoreCLREnvironment())
+--- lib/Target/X86/X86TargetObjectFile.cpp	2015-09-03 12:41:50.000000000 -0400
++++ lib/Target/X86/X86TargetObjectFile.cpp	2016-05-08 23:19:20.538430899 -0400
+@@ -67,6 +67,19 @@
+ }
+ 
+ void
++X86SolarisTargetObjectFile::Initialize(MCContext &Ctx,
++                                       const TargetMachine &TM) {
++  TargetLoweringObjectFileELF::Initialize(Ctx, TM);
++  InitializeELF(true);
++}
++
++const MCExpr *
++X86SolarisTargetObjectFile::getDebugThreadLocalSymbol(
++  const MCSymbol *Sym) const {
++  return MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_DTPOFF,
++                                 getContext());
++}
++void
+ X86LinuxNaClTargetObjectFile::Initialize(MCContext &Ctx,
+                                          const TargetMachine &TM) {
+   TargetLoweringObjectFileELF::Initialize(Ctx, TM);
+--- lib/Target/X86/X86TargetObjectFile.h	2015-07-16 02:04:17.000000000 -0400
++++ lib/Target/X86/X86TargetObjectFile.h	2016-05-08 23:19:20.538430899 -0400
+@@ -50,6 +50,15 @@
+     void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
+   };
+ 
++  /// X86SolarisTargetObjectFile - This implementation is used for Solaris
++  /// x86 and x86-64.
++  class X86SolarisTargetObjectFile : public TargetLoweringObjectFileELF {
++    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
++
++    /// \brief Describe a TLS variable address within debug info.
++    const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;
++  };
++
+   /// \brief This implementation is used for Windows targets on x86 and x86-64.
+   class X86WindowsTargetObjectFile : public TargetLoweringObjectFileCOFF {
+     const MCExpr *