#include extern int main(char **args); extern size_t start_ctors, end_ctors, start_dtors, end_dtors; void start(char **args) { size_t *call; for (call = &start_ctors; call < &end_ctors; call++) { ((void(*)(void))*call)(); } int ret = main(args); for (call = &start_dtors; call < &end_dtors; call++) { ((void(*)(void))*call)(); } process_exit(ret); }