- Do not perform ifunc relocations together with other PLT relocations in PLT. Instead, do it during an additional pass over the init list, so that ifuncs are resolved in the order of dso dependencies. This allows the ifuncs resolvers to call info depended libs. init list now includes all objects instead of only objects with init/fini callables,
- Disable relro protection around bind_now ifunc relocations.
- Provide memset() and bzero() internal implementations. This will be needed when the functions in libc are converted to ifuncs. To be committed separately.
I considered calling ifunc resolvers of dso after initializers of all dependencies are processed, and decided that this is wrong/should not be supported. The order now is normal relocations for all objects->ifunc resolution in init order->initializers, where each step does complete pass over all loaded objects before moving to the next step.