summaryrefslogtreecommitdiffstats
path: root/gas/doc/c-alpha.texi
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-05-30 22:34:41 +0000
committerRichard Henderson <rth@redhat.com>2002-05-30 22:34:41 +0000
commit1c5cec28bb58d3d36dcb53c3f502b0594f62209e (patch)
treeceea85b1ee86c137157533c0adb7902f3d1cd51f /gas/doc/c-alpha.texi
parentf7ea7ef2eed8efae7057e12e512857b163689f5d (diff)
downloadppe42-binutils-1c5cec28bb58d3d36dcb53c3f502b0594f62209e.tar.gz
ppe42-binutils-1c5cec28bb58d3d36dcb53c3f502b0594f62209e.zip
* doc/c-alpha.texi: Add docs for tls relocations.
Diffstat (limited to 'gas/doc/c-alpha.texi')
-rw-r--r--gas/doc/c-alpha.texi54
1 files changed, 54 insertions, 0 deletions
diff --git a/gas/doc/c-alpha.texi b/gas/doc/c-alpha.texi
index f3c18884e4..f067668951 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
OpenPOWER on IntegriCloud