*libc->prev->next = *libc;
libc = libc->prev->next;
if (libc->next) libc->next->prev = libc;
+ if (tail == &lib) tail = libc;
} else {
free_all(head);
free(sys_path);
}
p = load_library(file);
- if (!p) return 0;
+ if (!p) goto end;
/* First load handling */
if (!p->deps) {
p->global = 1;
}
+end:
pthread_rwlock_unlock(&lock);
-
return p;
}
size_t i;
uint32_t h;
Sym *sym;
- if (p == head) return find_sym(head, s, 0);
+ if (p == head || p == RTLD_DEFAULT)
+ return find_sym(head, s, 0);
h = hash(s);
sym = lookup(s, h, p->syms, p->hashtab, p->strings);
if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))