When an L4 task is starting, the services (l4rm, l4thread, l4semaphore) are get initialized and the program sections of the binary and dynamic libraries are attached. After all the basic initialization is done, the multiboot_main() function is called. If the binary does not provides such a function, the main() function is called instead.