struct debug *_dl_debug_addr = &debug;
-#define AUX_CNT 24
+#define AUX_CNT 38
#define DYN_CNT 34
static void decode_vec(size_t *v, size_t *a, size_t cnt)
/* Add a shortname only if name arg was not an explicit pathname. */
if (pathname != name) p->shortname = strrchr(p->name, '/')+1;
if (p->tls_image) {
- if (!__pthread_self_init()) {
+ if (runtime && !__pthread_self_init()) {
free(p);
munmap(map, map_len);
return 0;
}
}
-static void free_all(struct dso *p)
-{
- struct dso *n;
- while (p) {
- n = p->next;
- if (p->map && p!=libc && p!=head) free(p);
- p = n;
- }
-}
-
static size_t find_dyn(Phdr *ph, size_t cnt, size_t stride)
{
for (; cnt--; ph = (void *)((char *)ph + stride))
debug.state = 0;
_dl_debug_state();
- if (ssp_used) __init_ssp(auxv);
+ if (ssp_used) __init_ssp((void *)aux[AT_RANDOM]);
atexit(do_fini);
do_init_fini(tail);