dynamic linker bootstrap overhaul
[musl] / arch / i386 / crt_arch.h
index ae694f9..43c8477 100644 (file)
@@ -1,13 +1,16 @@
-__asm__("\
-.text \n\
-.global _start \n\
-_start: \n\
-       xor %ebp,%ebp \n\
-       mov %esp,%eax \n\
-       and $-16,%esp \n\
-       push %eax \n\
-       push %eax \n\
-       push %eax \n\
-       push %eax \n\
-       call __cstart \n\
-");
+__asm__(
+".text\n"
+".weak _DYNAMIC \n"
+".hidden _DYNAMIC \n"
+".global " START "\n"
+START ":\n"
+"      xor %ebp,%ebp \n"
+"      mov %esp,%eax \n"
+"      and $-16,%esp \n"
+"      push %eax \n"
+"      push %eax \n"
+"      call 1f \n"
+"1:    addl $_DYNAMIC-1b,(%esp) \n"
+"      push %eax \n"
+"      call " START "_c \n"
+);