blob: b97aaca96063c206375d41db6b564327d2b84aa5 [file] [log] [blame]
Each architecture needs a crt0.S file. The crt0.S assembly routine
typically corresponds to the following pseudo-C code. In addition,
each architecture needs any support routines that gcc-generated code
expects to find in the system library -- Alpha, for example, needs
divide subroutines.
The "getenvtest" test program is a very good test for proper crt0.S
functionality.
extern __noreturn __libc_init(void *, void *);
__noreturn _start(void)
{
void *elf_data = get_elf_data_address(); /* Usually the stack address */
void *atexit_ptr = get_atexit_ptr(); /* Usually in a register */
/* Some architectures need this for debugging to work */
setup_null_stack_frame_if_necessary();
__libc_init(elf_data, atexit_ptr);
}