diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | crt/Scrt1.c | 0 | ||||
| -rw-r--r-- | crt/i386/Scrt1.s | 24 | 
3 files changed, 25 insertions, 1 deletions
| @@ -39,7 +39,7 @@ ALL_INCLUDES = $(sort $(wildcard include/*.h include/*/*.h) $(GENH))  EMPTY_LIB_NAMES = m rt pthread crypt util xnet resolv dl  EMPTY_LIBS = $(EMPTY_LIB_NAMES:%=lib/lib%.a) -CRT_LIBS = lib/crt1.o lib/crti.o lib/crtn.o +CRT_LIBS = lib/crt1.o lib/Scrt1.o lib/crti.o lib/crtn.o  STATIC_LIBS = lib/libc.a  SHARED_LIBS = lib/libc.so  TOOL_LIBS = lib/musl-gcc.specs diff --git a/crt/Scrt1.c b/crt/Scrt1.c new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/crt/Scrt1.c diff --git a/crt/i386/Scrt1.s b/crt/i386/Scrt1.s new file mode 100644 index 00000000..b0fbe104 --- /dev/null +++ b/crt/i386/Scrt1.s @@ -0,0 +1,24 @@ +.weak _init +.weak _fini +.text +.global _start +_start: +	xorl %ebp,%ebp +	popl %ecx +	movl %esp,%eax +	andl $-16,%esp +	pushl %esp +	pushl %esp +	pushl %edx +	call 1f +1:	addl $_GLOBAL_OFFSET_TABLE_,(%esp) +	pop %ebx +	call 1f +1:	addl $[_fini-.],(%esp) +	call 1f +1:	addl $[_init-.],(%esp) +	pushl %eax +	pushl %ecx +	pushl main@GOT(%ebx) +	call __libc_start_main@plt +1:	jmp 1b | 
