diff options
author | Richard Henderson <rth@redhat.com> | 2002-05-30 22:34:41 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2002-05-30 22:34:41 +0000 |
commit | 1c5cec28bb58d3d36dcb53c3f502b0594f62209e (patch) | |
tree | ceea85b1ee86c137157533c0adb7902f3d1cd51f /gas/doc/c-alpha.texi | |
parent | f7ea7ef2eed8efae7057e12e512857b163689f5d (diff) | |
download | binutils-1c5cec28bb58d3d36dcb53c3f502b0594f62209e.zip binutils-1c5cec28bb58d3d36dcb53c3f502b0594f62209e.tar.gz binutils-1c5cec28bb58d3d36dcb53c3f502b0594f62209e.tar.bz2 |
* doc/c-alpha.texi: Add docs for tls relocations.
Diffstat (limited to 'gas/doc/c-alpha.texi')
-rw-r--r-- | gas/doc/c-alpha.texi | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gas/doc/c-alpha.texi b/gas/doc/c-alpha.texi index f3c1888..f067668 100644 --- a/gas/doc/c-alpha.texi +++ b/gas/doc/c-alpha.texi @@ -216,6 +216,19 @@ beq $27,is_undef !lituse_addr!1 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 @@ -248,6 +261,47 @@ target address. The referenced symbol must have the same GP as the 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 |