From 802c7d3ac886b8df885bc74417795663de0b6032 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 14 Jul 2005 00:04:54 +0000 Subject: import the rest of the glibc start.S so PIE works --- libc/sysdeps/linux/x86_64/crt1.S | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'libc/sysdeps/linux/x86_64') diff --git a/libc/sysdeps/linux/x86_64/crt1.S b/libc/sysdeps/linux/x86_64/crt1.S index f6e76cd02..f6c1eb1e7 100644 --- a/libc/sysdeps/linux/x86_64/crt1.S +++ b/libc/sysdeps/linux/x86_64/crt1.S @@ -106,6 +106,17 @@ _start: which grow downwards). */ pushq %rsp +#if defined(L_Scrt1) + /* Give address for main() */ + movq main@GOTPCREL(%rip), %rdi + + /* setup init/fini address */ + movq _init@GOTPCREL(%rip), %rcx + movq _fini@GOTPCREL(%rip), %r8 + + /* start the fun */ + call __uClibc_main@PLT +#else /* Give address for main() */ movq $main, %rdi @@ -113,20 +124,9 @@ _start: movq $_init, %rcx movq $_fini, %r8 -/************** - * START TODO */ -#if defined(L_Scrt1) - call .L0 -.L0: - popq %rbx - addq $_GLOBAL_OFFSET_TABLE_+[.-.L0],%rbx - - call *__uClibc_main@GOT(%rip) -#else + /* start the fun */ call __uClibc_main #endif -/* END TODO * - ************/ hlt /* Crash if somehow `exit' does return. */ .size _start,.-_start -- cgit v1.2.3