У меня стартап всегда свой. Там всего несколько строчек. Привык так
делать. // copy-init variables
extern char __etext[], __data_start__[], __data_len[];
memcpy(__data_start__, __etext, (int)__data_len);
// zero-init variables
extern char __bss_start__[], __bss_len[];
memset(__bss_start__, 0, (int)__bss_len);
extern int main();
(void)main();