PIE support for i386

This commit is contained in:
Rich Felker 2012-05-02 21:01:55 -04:00
parent c9dea48f84
commit 83023d1b50
3 changed files with 25 additions and 1 deletions

View File

@ -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

0
crt/Scrt1.c Normal file
View File

24
crt/i386/Scrt1.s Normal file
View File

@ -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