discard dso descriptors after performing relocations

eventually (once dlopen exists) this behavior will be conditional on
dlopen/dlsym not being reachable.
This commit is contained in:
Rich Felker
2011-06-25 00:47:28 -04:00
parent 368ba4a0a9
commit e8dbf00a78
+12
View File
@@ -322,6 +322,16 @@ static void reloc_all(struct dso *p)
}
}
static void free_all(struct dso *p)
{
struct dso *n;
while (p) {
n = p->next;
if (p->map) free(p);
p = n;
}
}
void *__dynlink(int argc, char **argv, size_t *got)
{
size_t *auxv, aux[AUX_CNT] = {0};
@@ -387,6 +397,8 @@ void *__dynlink(int argc, char **argv, size_t *got)
reloc_all(head);
free_all(head);
errno = 0;
return (void *)aux[AT_ENTRY];
}