summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
Diffstat (limited to 'libc')
-rw-r--r--libc/sysdeps/linux/i386/crt1.S16
1 files changed, 6 insertions, 10 deletions
diff --git a/libc/sysdeps/linux/i386/crt1.S b/libc/sysdeps/linux/i386/crt1.S
index fa9174f3e..b5c684998 100644
--- a/libc/sysdeps/linux/i386/crt1.S
+++ b/libc/sysdeps/linux/i386/crt1.S
@@ -89,14 +89,14 @@ _start:
#if defined L_Scrt1
/* Load PIC register. */
- call 1f
- addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ call .L0
+.L0:
+ pop %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-.L0],%ebx
/* Push address of our own entry points to .fini and .init. */
- leal _fini@GOTOFF(%ebx), %eax
- pushl %eax
- leal _init@GOTOFF(%ebx), %eax
- pushl %eax
+ pushl _fini@GOT(%ebx)
+ pushl _init@GOT(%ebx)
pushl %ecx /* Push second argument: argv. */
pushl %esi /* Push first argument: argc. */
@@ -123,10 +123,6 @@ _start:
hlt /* Crash if somehow `exit' does return. */
-#if defined L_Scrt1
-1: movl (%esp), %ebx
- ret
-#endif
/* Define a symbol for the first piece of initialized data. */
.data
.globl __data_start