There is one final detail required to use newlib. The startup code must call _libc_init_array(void) before main. This ensures that any required data structures are correctly initialized. In our startup code, we provide a “weak” default implementation for the case where we compile without libc.