mirror of git://git.musl-libc.org/musl
for executing init array functions, use function type with prototype
this is for consistency with the way it's done in in the dynamic linker, avoiding a deprecated C feature (non-prototype function types), and improving code generation. GCC unnecessarily uses the variadic calling convention (e.g. clearing rax on x86_64) when making a call where the argument types are not known for compatibility with wrong code which calls variadic functions this way. (C on the other hand is clear that such calls have undefined behavior.)
This commit is contained in:
parent
e364774d7c
commit
b3516058eb
|
@ -58,7 +58,7 @@ static void libc_start_init(void)
|
|||
_init();
|
||||
uintptr_t a = (uintptr_t)&__init_array_start;
|
||||
for (; a<(uintptr_t)&__init_array_end; a+=sizeof(void(*)()))
|
||||
(*(void (**)())a)();
|
||||
(*(void (**)(void))a)();
|
||||
}
|
||||
|
||||
weak_alias(libc_start_init, __libc_start_init);
|
||||
|
|
Loading…
Reference in New Issue