|
@@ -0,0 +1,171 @@
|
|
|
+ .file "crt0.c"
|
|
|
+gcc2_compiled.:
|
|
|
+.data
|
|
|
+ .align 32
|
|
|
+ .type rcsid , @object
|
|
|
+ .size rcsid , 58
|
|
|
+rcsid:
|
|
|
+ .string "$OpenBSD: crt0.c,v 1.11 2003/06/27 22:30:38 deraadt Exp $"
|
|
|
+.globl __progname
|
|
|
+.section .rodata
|
|
|
+.LC0:
|
|
|
+ .string ""
|
|
|
+.data
|
|
|
+ .align 4
|
|
|
+ .type __progname , @object
|
|
|
+ .size __progname , 4
|
|
|
+__progname:
|
|
|
+ .long .LC0
|
|
|
+ .align 4
|
|
|
+___fpucw:
|
|
|
+ .long 0x1332
|
|
|
+
|
|
|
+ .globl ___fpc_brk_addr /* heap management */
|
|
|
+ .type ___fpc_brk_addr,@object
|
|
|
+ .size ___fpc_brk_addr,4
|
|
|
+___fpc_brk_addr:
|
|
|
+ .long 0
|
|
|
+
|
|
|
+#APP
|
|
|
+
|
|
|
+ .text
|
|
|
+ .align 4
|
|
|
+ .globl __start
|
|
|
+ .globl _start
|
|
|
+_start:
|
|
|
+__start:
|
|
|
+ pushl %ebx #ps_strings
|
|
|
+ pushl %ecx # obj
|
|
|
+ pushl %edx # cleanup
|
|
|
+ movl 12(%esp),%eax
|
|
|
+ leal 20(%esp,%eax,4),%ecx
|
|
|
+ leal 16(%esp),%edx
|
|
|
+ pushl %ecx
|
|
|
+ pushl %edx
|
|
|
+ pushl %eax
|
|
|
+ call ___start
|
|
|
+
|
|
|
+#NO_APP
|
|
|
+.text
|
|
|
+ .align 4
|
|
|
+.globl ___start
|
|
|
+ .type ___start , @function
|
|
|
+___start:
|
|
|
+ pushl %ebp
|
|
|
+ movl %esp,%ebp
|
|
|
+ subl $16,%esp
|
|
|
+ pushl %esi
|
|
|
+ pushl %ebx
|
|
|
+ movl 12(%ebp),%esi
|
|
|
+ movl 16(%ebp),%eax
|
|
|
+ movl %eax,environ
|
|
|
+ movl %eax,U_SYSTEM_ENVP
|
|
|
+ movl (%esi),%ebx
|
|
|
+ testl %ebx,%ebx
|
|
|
+ je .L3
|
|
|
+ addl $-8,%esp
|
|
|
+ pushl $47
|
|
|
+ pushl %ebx
|
|
|
+ call _strrchr
|
|
|
+ movl %eax,__progname
|
|
|
+ addl $16,%esp
|
|
|
+ testl %eax,%eax
|
|
|
+ jne .L4
|
|
|
+ movl %ebx,__progname
|
|
|
+ jmp .L5
|
|
|
+ .p2align 4,,7
|
|
|
+.L4:
|
|
|
+ incl %eax
|
|
|
+ movl %eax,__progname
|
|
|
+.L5:
|
|
|
+ movl $__progname_storage,%edx
|
|
|
+ jmp .L12
|
|
|
+ .p2align 4,,7
|
|
|
+.L9:
|
|
|
+ movb (%eax),%al
|
|
|
+ movb %al,(%edx)
|
|
|
+ incl __progname
|
|
|
+ incl %edx
|
|
|
+.L12:
|
|
|
+ movl __progname,%eax
|
|
|
+ cmpb $0,(%eax)
|
|
|
+ je .L7
|
|
|
+ cmpl $__progname_storage+255,%edx
|
|
|
+ jb .L9
|
|
|
+.L7:
|
|
|
+ movb $0,(%edx)
|
|
|
+ movl $__progname_storage,__progname
|
|
|
+.L3:
|
|
|
+# call __init
|
|
|
+ subl $16,%esp
|
|
|
+ pushl %eax
|
|
|
+ movl 8(%ebp),%eax
|
|
|
+ movl %eax,U_SYSTEM_ARGC
|
|
|
+ movl %esi,U_SYSTEM_ARGV
|
|
|
+ popl %eax
|
|
|
+# pushl environ
|
|
|
+# pushl %esi
|
|
|
+# pushl 8(%ebp)
|
|
|
+ finit
|
|
|
+ fwait
|
|
|
+ fldcw __fpucw
|
|
|
+ xorl %ebp,%ebp
|
|
|
+ call main
|
|
|
+# pushl %eax
|
|
|
+# call exit
|
|
|
+ jmp _haltproc
|
|
|
+ .p2align 2,0x90
|
|
|
+
|
|
|
+.globl _haltproc
|
|
|
+.type _haltproc,@function
|
|
|
+
|
|
|
+_haltproc:
|
|
|
+ mov $1,%eax
|
|
|
+ movzwl U_SYSTEM_EXITCODE,%ebx
|
|
|
+ pushl %ebx
|
|
|
+ call .Lactualsyscall
|
|
|
+ addl $4,%esp
|
|
|
+ jmp _haltproc
|
|
|
+
|
|
|
+.Lactualsyscall:
|
|
|
+ int $0x80
|
|
|
+ jb .LErrorcode
|
|
|
+ xor %ebx,%ebx
|
|
|
+ ret
|
|
|
+.LErrorcode:
|
|
|
+ mov %eax,%ebx
|
|
|
+ mov $-1,%eax
|
|
|
+ ret
|
|
|
+ .p2align 2,0x90
|
|
|
+.Lfe1:
|
|
|
+
|
|
|
+ .size ___start , . - ___start
|
|
|
+ .align 4
|
|
|
+ .type _strrchr , @function
|
|
|
+_strrchr:
|
|
|
+ pushl %ebp
|
|
|
+ movl %esp,%ebp
|
|
|
+ pushl %ebx
|
|
|
+ movl 8(%ebp),%eax
|
|
|
+ movb 12(%ebp),%bl
|
|
|
+ xorl %ecx,%ecx
|
|
|
+ .p2align 4,,7
|
|
|
+.L14:
|
|
|
+ movb (%eax),%dl
|
|
|
+ cmpb %bl,%dl
|
|
|
+ jne .L17
|
|
|
+ movl %eax,%ecx
|
|
|
+.L17:
|
|
|
+ testb %dl,%dl
|
|
|
+ je .L16
|
|
|
+ incl %eax
|
|
|
+ jmp .L14
|
|
|
+ .p2align 4,,7
|
|
|
+.L16:
|
|
|
+ movl %ecx,%eax
|
|
|
+ popl %ebx
|
|
|
+ leave
|
|
|
+ ret
|
|
|
+ .size _strrchr , . - _strrchr
|
|
|
+ .comm environ,4,4
|
|
|
+ .comm __progname_storage,256,32
|