* doc/c-alpha.texi: Add docs for tls relocations.
authorRichard Henderson <rth@redhat.com>
Thu, 30 May 2002 22:34:41 +0000 (22:34 +0000)
committerRichard Henderson <rth@redhat.com>
Thu, 30 May 2002 22:34:41 +0000 (22:34 +0000)
gas/ChangeLog
gas/doc/c-alpha.texi

index d35f11573c76492a8bfdaf30d38dae07eb3115d8..6f3d2bddd8a0812377bae2a9d5ae12dd18ace79c 100644 (file)
@@ -23,6 +23,8 @@
        (emit_insn): Handle TLS relocations.
        (ldX_op): Remove.
 
+       * doc/c-alpha.texi: Add docs for tls relocations.
+
 2002-05-30  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
 
        * config/tc-mips.c (mips_gprel_offset): New variable.
index f3c18884e4a3974edd1c9c26ed08869f8d7fed6d..f0676689511acfc7216b432f737fefd9872419b0 100644 (file)
@@ -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