4 ms·
It only works in a dynamically-linked binary, because the dynamic linker needs to be loaded.
by immibis 11mo ago
It only works in a dynamically-linked binary, because the dynamic linker needs to be loaded.
- CGamesPlay 11mo agoThat makes sense. Some digging turns up some workarounds; the best I found was https://github.com/jart/cosmopolitan/releases/tag/3.1 https://github.com/jart/cosmopolitan/releases/tag/3.1
- immibis 11mo agoYou can write your own dynamic loader, or port the one from libc, or attempt to statically link it (against its wishes). Nothing stops you opening a .so file and mmapping the appropriate sections - that's what the dynamic loader does, and it's just normal user-space code, after all. However, the libc dynamic loader definitely prefers to be your program's entry point. You're swimming against the current by doing it any other way.