void tls_thread_free(tls_type_t tls_type, int index) { if (tls_type == TLS_TYPE_LDT) clear_ldt_entry(index); else if (tls_type == TLS_TYPE_GDT) { our_modify_ldt_t desc; clear_ldt_struct(&desc, index); DEBUG_DECLARE(int res = ) dynamorio_syscall(SYS_set_thread_area, 1, &desc); ASSERT(res >= 0); }
/* i#2089: we skip this for non-detach */ void tls_thread_free(tls_type_t tls_type, int index) { /* XXX i#107 (and i#2088): We need to restore the segment base the * app was using when we detach, instead of just clearing. */ if (tls_type == TLS_TYPE_LDT) clear_ldt_entry(index); else if (tls_type == TLS_TYPE_GDT) { our_modify_ldt_t desc; clear_ldt_struct(&desc, index); DEBUG_DECLARE(int res =) dynamorio_syscall(SYS_set_thread_area, 1, &desc); ASSERT(res >= 0); }