PATCH: PR target/47715: [x32] TLS doesn't work
Uros Bizjak
ubizjak@gmail.com
Thu Jul 28 07:44:00 GMT 2011
On Thu, Jul 28, 2011 at 4:55 AM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> TLS on X32 is almost identical to TLS on x86-64. The only difference is
> x32 address space is 32bit. That means TLS symbols can be in either
> SImode or DImode with upper 32bit zero. This patch updates
> tls_global_dynamic_64 to support x32. OK for trunk?
> 2011-07-27 H.J. Lu <hongjiu.lu@intel.com>
>
> PR target/47715
> * config/i386/i386.md (PTR64): New.
> (*tls_global_dynamic_64): Rename to ...
> (*tls_global_dynamic_64_<mode>): This. Put PTR64 on operand 1.
> (tls_global_dynamic_64): Rename to ...
> (tls_global_dynamic_64_<mode>): This. Put PTR64 on operand 1.
> * config/i386/i386.c (legitimize_tls_address): Updated.
Just remove mode check, so:
(unspec:DI [(match_operand 1 "tls_symbolic_operand" "")]
at both sites.
- fputs (ASM_BYTE "0x66\n", asm_out_file);
+ if (!TARGET_X32)
+ fputs (ASM_BYTE "0x66\n", asm_out_file);
Are you sure? There are some scary comments in binutils that these
sequences have to be written _exactly_ as shown to enable certain
linker relaxations w.r.t. TLS relocs.
Uros.
More information about the Gcc-patches
mailing list