mirror of git://git.musl-libc.org/musl
fix broken copy relocations from dynamic linker cleanup
this issue affected programs which use global variables exported by non-libc libraries.
This commit is contained in:
parent
e12fe65c92
commit
fd7015d0c2
|
@ -563,10 +563,13 @@ void *__dynlink(int argc, char **argv)
|
||||||
ehdr->e_phentsize, ehdr->e_phnum);
|
ehdr->e_phentsize, ehdr->e_phnum);
|
||||||
|
|
||||||
/* Load preload/needed libraries, add their symbols to the global
|
/* Load preload/needed libraries, add their symbols to the global
|
||||||
* namespace, and perform all remaining relocations. */
|
* namespace, and perform all remaining relocations. The main
|
||||||
|
* program must be relocated LAST since it may contain copy
|
||||||
|
* relocations which depend on libraries' relocations. */
|
||||||
if (env_preload) load_preload(env_preload);
|
if (env_preload) load_preload(env_preload);
|
||||||
load_deps(app);
|
load_deps(app);
|
||||||
make_global(app);
|
make_global(app);
|
||||||
|
reloc_all(app->next);
|
||||||
reloc_all(app);
|
reloc_all(app);
|
||||||
|
|
||||||
/* Switch to runtime mode: any further failures in the dynamic
|
/* Switch to runtime mode: any further failures in the dynamic
|
||||||
|
|
Loading…
Reference in New Issue