projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
math: fix i386/expl.s with more precise x*log2e
[musl]
/
src
/
ldso
/
dynlink.c
diff --git
a/src/ldso/dynlink.c
b/src/ldso/dynlink.c
index
ba2f612
..
d564b8f
100644
(file)
--- a/
src/ldso/dynlink.c
+++ b/
src/ldso/dynlink.c
@@
-481,7
+481,7
@@
static struct dso *load_library(const char *name)
if (getline(&sys_path, (size_t[1]){0}, f) > 0) {
size_t l = strlen(sys_path);
if (l && sys_path[l-1]=='\n')
if (getline(&sys_path, (size_t[1]){0}, f) > 0) {
size_t l = strlen(sys_path);
if (l && sys_path[l-1]=='\n')
- sys_path[-1] = 0;
+ sys_path[
l
-1] = 0;
}
fclose(f);
}
}
fclose(f);
}
@@
-927,7
+927,8
@@
void *__dynlink(int argc, char **argv)
if (phdr->p_type == PT_LOAD)
vdso->base = (void *)(vdso_base - phdr->p_vaddr + phdr->p_offset);
}
if (phdr->p_type == PT_LOAD)
vdso->base = (void *)(vdso_base - phdr->p_vaddr + phdr->p_offset);
}
- vdso->name = vdso->shortname = "linux-gate.so.1";
+ vdso->name = "";
+ vdso->shortname = "linux-gate.so.1";
vdso->global = 1;
decode_dyn(vdso);
vdso->prev = lib;
vdso->global = 1;
decode_dyn(vdso);
vdso->prev = lib;
@@
-998,13
+999,16
@@
void *__dynlink(int argc, char **argv)
if (ssp_used) __init_ssp((void *)aux[AT_RANDOM]);
if (ssp_used) __init_ssp((void *)aux[AT_RANDOM]);
- atexit(do_fini);
- do_init_fini(tail);
-
errno = 0;
return (void *)aux[AT_ENTRY];
}
errno = 0;
return (void *)aux[AT_ENTRY];
}
+void __init_ldso_ctors(void)
+{
+ atexit(do_fini);
+ do_init_fini(tail);
+}
+
void *dlopen(const char *file, int mode)
{
struct dso *volatile p, *orig_tail, *next;
void *dlopen(const char *file, int mode)
{
struct dso *volatile p, *orig_tail, *next;