* Szabolcs Nagy [2015-11-29 16:30:51 +0100]: > -extern void (*const __init_array_start)(void), (*const __init_array_end)(void); > +extern void (*const __init_array_start[])(void), (*const __init_array_end[])(void); Alexander Monakov pointed out that the compiler may consider arrays to be separate objects and then f<__init_array_end would be ub. attached an updated version, the same code is generated on x86_64 as before, except there is no xor %eax,%eax now before the call (because there is prototype).