libc_init_static: apply relro earlier.
The dynamic linker applies relro before the preinit and init arrays are executed, so we should be consistent for statically linked executables. Change-Id: Ia0a49d0e981a6e8791f74eed00280edf576ba139
This commit is contained in:
parent
2c5153b043
commit
9fb48ac257
@ -101,6 +101,8 @@ __noreturn void __libc_init(uintptr_t *elfdata,
|
|||||||
/* Initialize the C runtime environment */
|
/* Initialize the C runtime environment */
|
||||||
__libc_init_common(elfdata);
|
__libc_init_common(elfdata);
|
||||||
|
|
||||||
|
apply_gnu_relro();
|
||||||
|
|
||||||
/* Several Linux ABIs don't pass the onexit pointer, and the ones that
|
/* Several Linux ABIs don't pass the onexit pointer, and the ones that
|
||||||
* do never use it. Therefore, we ignore it.
|
* do never use it. Therefore, we ignore it.
|
||||||
*/
|
*/
|
||||||
@ -122,6 +124,5 @@ __noreturn void __libc_init(uintptr_t *elfdata,
|
|||||||
if (structors->fini_array)
|
if (structors->fini_array)
|
||||||
__cxa_atexit(__libc_fini,structors->fini_array,NULL);
|
__cxa_atexit(__libc_fini,structors->fini_array,NULL);
|
||||||
|
|
||||||
apply_gnu_relro();
|
|
||||||
exit(slingshot(argc, argv, envp));
|
exit(slingshot(argc, argv, envp));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user