TLS_TCB_SIZE
extra_size = tcbsize - TLS_TCB_SIZE;
post_size = roundup2(TLS_TCB_SIZE, libc_tls_init_align) - TLS_TCB_SIZE;
if (oldtcb != NULL && tcbsize == TLS_TCB_SIZE)
extra_size = tcbsize - TLS_TCB_SIZE;
post_size = roundup2(TLS_TCB_SIZE, libc_tls_init_align) - TLS_TCB_SIZE;
tls = (char *)tcb + TLS_TCB_SIZE + post_size;
tls = _rtld_allocate_tls(NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN);
tcb = _rtld_allocate_tls(NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN);
_rtld_free_tls(tcb, TLS_TCB_SIZE, TLS_TCB_ALIGN);
_tcb_set(allocate_tls(objs, NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN));
round(TLS_TCB_SIZE, align) - TLS_TCB_SIZE
addr = allocate_tls(objs, 0, TLS_TCB_SIZE, TLS_TCB_ALIGN);
_tcb_set(allocate_tls(objs, NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN));
round(TLS_TCB_SIZE, align) - TLS_TCB_SIZE
tls = allocate_tls(objs, NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN);
+ defobj->tlsoffset - TLS_TP_OFFSET - TLS_TCB_SIZE);
_tcb_set(allocate_tls(list, NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN));
TLS_TCB_SIZE
+ defobj->tlsoffset - TLS_TP_OFFSET - TLS_TCB_SIZE);
_tcb_set(allocate_tls(list, NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN));
TLS_TCB_SIZE
defobj->tlsoffset - TLS_TP_OFFSET - TLS_TCB_SIZE);
_tcb_set(allocate_tls(objs, NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN));
TLS_TCB_SIZE
extra_size = tcbsize - TLS_TCB_SIZE;
if (oldtcb != NULL && tcbsize == TLS_TCB_SIZE)
assert(tcbsize >= TLS_TCB_SIZE);
extra_size = tcbsize - TLS_TCB_SIZE;
tls_block_size += pre_size + tls_static_space - TLS_TCB_SIZE -
assert(tcbsize >= TLS_TCB_SIZE);
tlsstart = (uintptr_t)tcb + TLS_TCB_SIZE + post_size;
#define TLS_TCB_ALIGN TLS_TCB_SIZE
"r" ((uint8_t *)tcb + TLS_TP_OFFSET + TLS_TCB_SIZE));
"r" ((uint8_t *)tcb + TLS_TP_OFFSET + TLS_TCB_SIZE));
"i" (-(TLS_TP_OFFSET + TLS_TCB_SIZE)));
"i" (-(TLS_TP_OFFSET + TLS_TCB_SIZE)));
__asm __volatile("addi tp, %0, %1" :: "r" (tcb), "I" (TLS_TCB_SIZE));
__asm __volatile("addi %0, tp, %1" : "=r" (tcb) : "I" (-TLS_TCB_SIZE));