Get rid of prefixes in GD TLS for x86_64-nacl

Standard GD TLS sequence contains commands prefixed with 0x6666, inserted by compiler with .byte directive. Our asm does not know how to move it around, and thus 0x6666 may cross bundle boundary and confuse the validator.

As we do not rewrite GD TLS access pattern at the moment, we can afford changing the standard sequence. Simply removing prefixes make still working code that does not suffer from the issues described above.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1685
TEST=disassemble object file from any source accessing __thread variable - it should not have 0x6666 any more

Review URL: http://codereview.chromium.org/6878043
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 59c02d0..8dc1bdd 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -16450,7 +16450,11 @@
    (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
 	      UNSPEC_TLS_GD)]
   "TARGET_64BIT"
-  { return ".byte\t0x66\n\tlea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\n" ASM_SHORT "0x6666\n\trex64\n\tcall\t%P2"; }
+{
+  if (TARGET_NACL)
+    return "\tlea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\n\tcall\t%P2";
+  return ".byte\t0x66\n\tlea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\n" ASM_SHORT "0x6666\n\trex64\n\tcall\t%P2";
+}
   [(set_attr "type" "multi")
    (set_attr "length" "16")])