# # arch/i386/crt0.S # # Does arch-specific initialization and invokes __libc_init # with the appropriate arguments. # # See __static_init.c or __shared_init.c for the expected # arguments. # .text .align 4 .type _start,@function .globl _start _start: # Save the address of the ELF argument array movl %esp,%eax # Address of ELF arguments # Set up a faux stack frame for the benefit of gdb xorl %ebp,%ebp push %ebp # Keep gdb from getting confused push %ebp # Keep gdb from getting confused # Push the arguments and called __libc_init() #ifndef _REGPARM push %edx # atexit() function push %eax # ELF array #endif call __libc_init # If __libc_init returns, problem... hlt .size _start, .-_start