projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove freeing of dynamic linker data when dlopen/dlsym are not used
[musl]
/
src
/
ldso
/
dynlink.c
diff --git
a/src/ldso/dynlink.c
b/src/ldso/dynlink.c
index
774ab84
..
8ff8e69
100644
(file)
--- a/
src/ldso/dynlink.c
+++ b/
src/ldso/dynlink.c
@@
-80,7
+80,6
@@
void *__install_initial_tls(void *);
static struct dso *head, *tail, *libc;
static char *env_path, *sys_path, *r_path;
static struct dso *head, *tail, *libc;
static char *env_path, *sys_path, *r_path;
-static int rtld_used;
static int ssp_used;
static int runtime;
static int ldd_mode;
static int ssp_used;
static int runtime;
static int ldd_mode;
@@
-182,13
+181,9
@@
static void *find_sym(struct dso *dso, const char *s, int need_def)
void *def = 0;
if (dso->ghashtab) {
gh = gnu_hash(s);
void *def = 0;
if (dso->ghashtab) {
gh = gnu_hash(s);
- if (gh == 0xf9040207 && !strcmp(s, "dlopen")) rtld_used = 1;
- if (gh == 0xf4dc4ae && !strcmp(s, "dlsym")) rtld_used = 1;
if (gh == 0x1f4039c9 && !strcmp(s, "__stack_chk_fail")) ssp_used = 1;
} else {
h = sysv_hash(s);
if (gh == 0x1f4039c9 && !strcmp(s, "__stack_chk_fail")) ssp_used = 1;
} else {
h = sysv_hash(s);
- if (h == 0x6b366be && !strcmp(s, "dlopen")) rtld_used = 1;
- if (h == 0x6b3afd && !strcmp(s, "dlsym")) rtld_used = 1;
if (h == 0x595a4cc && !strcmp(s, "__stack_chk_fail")) ssp_used = 1;
}
for (; dso; dso=dso->next) {
if (h == 0x595a4cc && !strcmp(s, "__stack_chk_fail")) ssp_used = 1;
}
for (; dso; dso=dso->next) {
@@
-862,12
+857,6
@@
void *__dynlink(int argc, char **argv)
do_init_fini(tail);
do_init_fini(tail);
- if (!rtld_used) {
- free_all(head);
- free(sys_path);
- reclaim((void *)builtin_dsos, 0, sizeof builtin_dsos);
- }
-
errno = 0;
return (void *)aux[AT_ENTRY];
}
errno = 0;
return (void *)aux[AT_ENTRY];
}