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