Lines Matching refs:be

24 architecture-specific thread pointer (TP) and can be accessed very efficiently -- typically just a
25 few instructions. TLS variables belonging to dlopen'ed shared objects, on the other hand, may be
45 if it hasn't been allocated yet). If the executable has a TLS segment, then it will always be module
46 1, and its storage will always be immediately after (or before) the TP. In variant 1, the TP is
66 A TLS variable may be in a different module than the reference.
153 (XXX: LD might be important for C++ `thread_local` variables -- even a single `thread_local`
159 object), then its offset from the TP is known at load-time. The variable can be accessed with a few
165 // tls_var could be defined in the executable, or it could be defined
187 part of the executable (and referenced from the executable), then a GOT access can be avoided. The
201 * Code compiled with `-fpic` could be in a shared object, so use GD/LD.
202 * The per-file default can be overridden with `-ftls-model=<model>`.
204 * A variable can be annotated with `__attribute__((tls_model(...)))`. Clang may still use a more
211 objects using static TLS can't be loaded with `dlopen` unless libc has reserved enough surplus
221 `dlopen` can initialize the new static TLS memory in all existing threads. A thread list could be
291 The resolver must be written in assembly, but in C, the function looks like so:
434 read past the end of an out-of-date DTV or access an unloaded module. To be robust, it needs to
533 (This should probably be removed.)
544 The prototype's `__tls_get_addr` might be async-signal safe. Making it AS-safe is a good idea if
566 > necessary. For instance, a loaded module might only be used by one thread of the many which make
567 > up the process. It would be a waste of memory and time to allocate the storage for all threads. A
578 most of it) also can't use ELF TLS. It might be possible to lift this restriction, perhaps with
598  ** and should not be used/included by user-serviceable parts of
640 example, it could be used to load an arm32 solib into an x86 Zygote.) The solib is translated
716 relocations should be able to accommodate a negative TP offset.
792 sequences be no larger than LD code sequences, which may not be the case on some architectures.
814 key, but apps segfault. Perhaps the Go runtime expects its "g" variable to be zero-initialized ([one
816 it is typically zero. After [Bionic's pthread key system was rewritten to be
817 lock-free][bionic-lockfree-keys] for Android M, though, it's not guaranteed, because a key could be
826 `/system/bin/app_process{32,64}` limits its use of TLS memory, then the pthread keys could be
835 find `pthread_internal_t`, though, rather than assume a fixed offset. (XXX: I think it could be
845 XXX: Maybe a sanitizer would want to intercept allocations of TLS memory, and that could be hard if