struct TlsdescIndirect
Defined at line 48 of file ../../sdk/lib/c/dlfcn/dl/test/../tlsdesc-runtime-dynamic.h
For dynamic TLS modules, each thread's copy of each dynamic PT_TLS segment
is found in by index into an array of pointers. That array itself is found
as a normal thread_local variable dl::_dl_tlsdesc_runtime_dynamic_blocks
(owned by libdl) using a normal IE access. These TLSDESC hooks take two
values: an index into that array, and an offset within that PT_TLS segment.
They compute `_dl_tlsdesc_runtime_dynamic_blocks[index] + offset - $tp`.
The TLSDESC ABI provides for one address-sized word to encode the argument
to the TLSDESC hook (TlsDescGot::value). There are two TLSDESC hooks that
encode those two values in different ways:
* The "split" version encodes both values directly in the word by splitting
it in half bitwise. The index is found in the high bits. The offset is
found in the low bits. This version is used whenever each value fits
into half the bits of the word.
* The "indirect" version uses the word as a pointer to an allocated data
structure containing the index and offset (TlsdescIndirect).
**NOTE:** There is no special provision for synchronization so far. These
entry points assume that the current thread's blocks vector pointer is valid
for any index they can be passed.
Public Members
size_t index
size_t offset