#define RESTORE_REG_PAIR(x, y, slot) \
ldp x, y, [sp, #((slot) * 8)]; \
.cfi_restore x; \
.cfi_restore y; \
// On entry, x0 is the address of a TlsDynamicResolverArg object rather than
// the TlsDescriptor address passed to the original resolver function.
ENTRY_PRIVATE(tlsdesc_resolver_dynamic_slow_path) sub sp, sp, #(8 * 84)
.cfi_def_cfa_offset (8 * 84)
SAVE_GPR_PAIR(fp, lr, 0)
mov fp, sp
// Avoid leaking the contents of the shadow call stack register (x18) into
// memory. x19 through x29 (fp) are callee-save registers, so we do not need
// to save them.
SAVE_GPR_PAIR(x1, x2, 2)
SAVE_GPR_PAIR(x3, x4, 4)
SAVE_GPR_PAIR(x5, x6, 6)
SAVE_GPR_PAIR(x7, x8, 8)
SAVE_GPR_PAIR(x9, x10, 10)
SAVE_GPR_PAIR(x11, x12, 12)
SAVE_GPR_PAIR(x13, x14, 14)
SAVE_GPR_PAIR(x15, x16, 16)
SAVE_REG(x17, 18)
// The address of an unresolved weak TLS symbol evaluates to NULL with TLSDESC.
// The value returned by this function is added to the thread pointer, so return
// a negated thread pointer to cancel it out.
ENTRY_PRIVATE(tlsdesc_resolver_unresolved_weak)
str x19, [sp, #-16]!
.cfi_def_cfa_offset 16
.cfi_rel_offset x19, 0
ldr x19, [x0, #8]
mrs x0, tpidr_el0 // __get_tls() sub x0, x19, x0
ldr x19, [sp], #16
.cfi_def_cfa_offset 0
.cfi_restore x19
ret
END(tlsdesc_resolver_unresolved_weak)
NOTE_GNU_PROPERTY()
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet am 2026-06-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.