ldso: load posix.lib.so first

Fixes #5027
This commit is contained in:
Christian Prochaska 2023-10-17 13:00:04 +02:00 committed by Christian Helmuth
parent d3e5e5c286
commit c4677042e1

View File

@ -84,6 +84,16 @@ void Linker::Dependency::preload(Env &env, Allocator &alloc,
void Linker::Dependency::load_needed(Env &env, Allocator &md_alloc,
Fifo<Dependency> &deps, Keep keep)
{
/*
* Load 'posix.lib.so' first, if it is a dependency, to satisfy
* the invariant of the libc fork/execve mechanism that this
* library and its dependencies are always loaded in the same
* order.
*/
_obj.dynamic().for_each_dependency([&] (char const *path) {
if (strcmp(path, "posix.lib.so") == 0)
_load(env, md_alloc, path, deps, keep); });
_obj.dynamic().for_each_dependency([&] (char const *path) {
_load(env, md_alloc, path, deps, keep); });
}