This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: alpha tls support
- From: Richard Henderson <rth at redhat dot com>
- To: binutils at sources dot redhat dot com
- Date: Thu, 30 May 2002 15:35:42 -0700
- Subject: Re: alpha tls support
- References: <20020530150331.A29790@redhat.com>
Doh. Forgot the user documentation update.
r~
* doc/c-alpha.texi: Add docs for tls relocations.
Index: doc/c-alpha.texi
===================================================================
RCS file: /cvs/src/src/gas/doc/c-alpha.texi,v
retrieving revision 1.1
diff -c -p -d -r1.1 c-alpha.texi
*** doc/c-alpha.texi 10 Feb 2002 23:25:17 -0000 1.1
--- doc/c-alpha.texi 30 May 2002 22:33:54 -0000
*************** beq $27,is_undef !lituse_addr!1
*** 216,221 ****
--- 216,234 ----
jsr $26,($27),foo !lituse_jsr!1
@end example
+ @item !lituse_tlsgd!@var{N}
+ Used with a register branch format instruction to indicate that the
+ literal is the call to @code{__tls_get_addr} used to compute the
+ address of the thread-local storage variable whose descriptor was
+ loaded with @code{!tlsgd!@var{N}}.
+
+ @item !lituse_tlsldm!@var{N}
+ Used with a register branch format instruction to indicate that the
+ literal is the call to @code{__tls_get_addr} used to compute the
+ address of the base of the thread-local storage block for the current
+ module. The descriptor for the module must have been loaded with
+ @code{!tlsldm!@var{N}}.
+
@item !gpdisp!@var{N}
Used with @code{ldah} and @code{lda} to load the GP from the current
address, a-la the @code{ldgp} macro. The source register for the
*************** target address. The referenced symbol m
*** 248,253 ****
--- 261,307 ----
source object file, and it must be declared to either not use @code{$27}
or perform a standard GP load in the first two instructions via the
@code{.prologue} directive.
+
+ @item !tlsgd
+ @itemx !tlsgd!@var{N}
+ Used with an @code{lda} instruction to load the address of a TLS
+ descriptor for a symbol in the GOT.
+
+ The sequence number @var{N} is optional, and if present it used to
+ pair the descriptor load with both the @code{literal} loading the
+ address of the @code{__tls_get_addr} function and the @code{lituse_tlsgd}
+ marking the call to that function.
+
+ For proper relaxation, both the @code{tlsgd}, @code{literal} and
+ @code{lituse} relocations must be in the same extended basic block.
+ That is, the relocation with the lowest address must be executed
+ first at runtime.
+
+ @item !tlsldm
+ @itemx !tlsldm!@var{N}
+ Used with an @code{lda} instruction to load the address of a TLS
+ descriptor for the current module in the GOT.
+
+ Similar in other respects to @code{tlsgd}.
+
+ @item !gotdtprel
+ Used with an @code{ldq} instruction to load the offset of the TLS
+ symbol within its module's thread-local storage block. Also known
+ as the dynamic thread pointer offset or dtp-relative offset.
+
+ @item !dtprelhi
+ @itemx !dtprello
+ @itemx !dtprel
+ Like @code{gprel} relocations except they compute dtp-relative offsets.
+
+ @item !gottprel
+ Used with an @code{ldq} instruction to load the offset of the TLS
+ symbol from the thread pointer. Also known as the tp-relative offset.
+
+ @item !tprelhi
+ @itemx !tprello
+ @itemx !tprel
+ Like @code{gprel} relocations except they compute tp-relative offsets.
@end table
@node Alpha Floating Point