|
@@ -1,209 +0,0 @@
|
|
- .section ".note.openbsd.ident", "a"
|
|
|
|
- .p2align 2
|
|
|
|
- .long 8
|
|
|
|
- .long 4
|
|
|
|
- .long 1
|
|
|
|
- .ascii "OpenBSD\0"
|
|
|
|
- .long 0
|
|
|
|
- .previous
|
|
|
|
- .file "crt0.c"
|
|
|
|
-gcc2_compiled.:
|
|
|
|
- .globl __progname
|
|
|
|
- .section .rodata
|
|
|
|
-.LC0:
|
|
|
|
- .string ""
|
|
|
|
- .section .data.rel.local,"aw",@progbits
|
|
|
|
- .align 4
|
|
|
|
- .type __progname, @object
|
|
|
|
- .size __progname, 4
|
|
|
|
-__progname:
|
|
|
|
- .long .LC0
|
|
|
|
-#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
|
|
|
|
- .globl ___start
|
|
|
|
- .type ___start, @function
|
|
|
|
-___start:
|
|
|
|
- pushl %ebp
|
|
|
|
- movl %esp, %ebp
|
|
|
|
- pushl %ebx
|
|
|
|
- subl $36, %esp
|
|
|
|
- call __i686.get_pc_thunk.bx
|
|
|
|
- addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
|
|
- movl environ@GOT(%ebx), %edx
|
|
|
|
- movl 16(%ebp), %eax
|
|
|
|
- movl %eax, (%edx)
|
|
|
|
- movl operatingsystem_parameter_envp@GOT(%ebx), %edx
|
|
|
|
- movl 16(%ebp), %eax
|
|
|
|
- movl %eax, (%edx)
|
|
|
|
- movl operatingsystem_parameter_argc@GOT(%ebx), %edx
|
|
|
|
- movl 8(%ebp), %eax
|
|
|
|
- movl %eax, (%edx)
|
|
|
|
- movl operatingsystem_parameter_argv@GOT(%ebx), %edx
|
|
|
|
- movl 12(%ebp), %eax
|
|
|
|
- movl %eax, (%edx)
|
|
|
|
- movl 12(%ebp), %eax
|
|
|
|
- movl (%eax), %eax
|
|
|
|
- movl %eax, -8(%ebp)
|
|
|
|
- cmpl $0, -8(%ebp)
|
|
|
|
- je .L2
|
|
|
|
- movl $47, 4(%esp)
|
|
|
|
- movl -8(%ebp), %eax
|
|
|
|
- movl %eax, (%esp)
|
|
|
|
- call _strrchr
|
|
|
|
- movl %eax, %edx
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl %edx, (%eax)
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl (%eax), %eax
|
|
|
|
- testl %eax, %eax
|
|
|
|
- jne .L4
|
|
|
|
- movl __progname@GOT(%ebx), %edx
|
|
|
|
- movl -8(%ebp), %eax
|
|
|
|
- movl %eax, (%edx)
|
|
|
|
- jmp .L6
|
|
|
|
-.L4:
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl (%eax), %eax
|
|
|
|
- leal 1(%eax), %edx
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl %edx, (%eax)
|
|
|
|
-.L6:
|
|
|
|
- movl __progname_storage@GOT(%ebx), %eax
|
|
|
|
- movl %eax, -12(%ebp)
|
|
|
|
- jmp .L7
|
|
|
|
-.L8:
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl (%eax), %ecx
|
|
|
|
- movzbl (%ecx), %edx
|
|
|
|
- movl -12(%ebp), %eax
|
|
|
|
- movb %dl, (%eax)
|
|
|
|
- addl $1, -12(%ebp)
|
|
|
|
- leal 1(%ecx), %edx
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl %edx, (%eax)
|
|
|
|
-.L7:
|
|
|
|
- movl __progname@GOT(%ebx), %eax
|
|
|
|
- movl (%eax), %eax
|
|
|
|
- movzbl (%eax), %eax
|
|
|
|
- testb %al, %al
|
|
|
|
- je .L9
|
|
|
|
- movl __progname_storage@GOT(%ebx), %eax
|
|
|
|
- leal 255(%eax), %eax
|
|
|
|
- cmpl %eax, -12(%ebp)
|
|
|
|
- jb .L8
|
|
|
|
-.L9:
|
|
|
|
- movl -12(%ebp), %eax
|
|
|
|
- movb $0, (%eax)
|
|
|
|
- movl __progname@GOT(%ebx), %edx
|
|
|
|
- movl __progname_storage@GOT(%ebx), %eax
|
|
|
|
- movl %eax, (%edx)
|
|
|
|
-.L2:
|
|
|
|
- call __init@PLT
|
|
|
|
- movl environ@GOT(%ebx), %eax
|
|
|
|
- movl (%eax), %eax
|
|
|
|
- movl %eax, 8(%esp)
|
|
|
|
- movl 12(%ebp), %eax
|
|
|
|
- movl %eax, 4(%esp)
|
|
|
|
- movl 8(%ebp), %eax
|
|
|
|
- movl %eax, (%esp)
|
|
|
|
- call main@PLT
|
|
|
|
-# pushl environ
|
|
|
|
-# pushl %esi
|
|
|
|
-# pushl 8(%ebp)
|
|
|
|
- finit
|
|
|
|
- fwait
|
|
|
|
- fldcw ___fpucw
|
|
|
|
- xorl %ebp,%ebp
|
|
|
|
- call main
|
|
|
|
- pushl %eax
|
|
|
|
- call exit
|
|
|
|
- .p2align 2,0x90
|
|
|
|
-
|
|
|
|
-# movl %eax, (%esp)
|
|
|
|
-# call exit@PLT
|
|
|
|
- .size ___start, .-___start
|
|
|
|
-
|
|
|
|
-.globl _haltproc
|
|
|
|
-.type _haltproc,@function
|
|
|
|
-
|
|
|
|
-_haltproc:
|
|
|
|
- mov $1,%eax
|
|
|
|
- call __i686.get_pc_thunk.bx
|
|
|
|
- addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
|
|
- movl operatingsystem_result@GOT(%ebx), %esi
|
|
|
|
- movzwl (%esi),%edx
|
|
|
|
- pushl %edx
|
|
|
|
- call .Lactualsyscall
|
|
|
|
- addl $4,%esp
|
|
|
|
- jmp _haltproc
|
|
|
|
-
|
|
|
|
-.Lactualsyscall:
|
|
|
|
- int $0x80
|
|
|
|
- jb .LErrorcode
|
|
|
|
- xor %ebx,%ebx
|
|
|
|
- ret
|
|
|
|
-.LErrorcode:
|
|
|
|
- mov %eax,%ebx
|
|
|
|
- mov $-1,%eax
|
|
|
|
- ret
|
|
|
|
- .type _strrchr, @function
|
|
|
|
-_strrchr:
|
|
|
|
- pushl %ebp
|
|
|
|
- movl %esp, %ebp
|
|
|
|
- subl $12, %esp
|
|
|
|
- movl 12(%ebp), %eax
|
|
|
|
- movb %al, -9(%ebp)
|
|
|
|
- movl $0, -4(%ebp)
|
|
|
|
-.L13:
|
|
|
|
- movl 8(%ebp), %edx
|
|
|
|
- movzbl (%edx), %eax
|
|
|
|
- cmpb -9(%ebp), %al
|
|
|
|
- jne .L14
|
|
|
|
- movl 8(%ebp), %eax
|
|
|
|
- movl %eax, -4(%ebp)
|
|
|
|
-.L14:
|
|
|
|
- movl 8(%ebp), %edx
|
|
|
|
- movzbl (%edx), %eax
|
|
|
|
- testb %al, %al
|
|
|
|
- jne .L16
|
|
|
|
- movl -4(%ebp), %eax
|
|
|
|
- movl %eax, -8(%ebp)
|
|
|
|
- jmp .L12
|
|
|
|
-.L16:
|
|
|
|
- addl $1, 8(%ebp)
|
|
|
|
- jmp .L13
|
|
|
|
-.L12:
|
|
|
|
- movl -8(%ebp), %eax
|
|
|
|
- leave
|
|
|
|
- ret
|
|
|
|
- .size _strrchr, .-_strrchr
|
|
|
|
- .comm environ,4,4
|
|
|
|
- .comm operatingsystem_parameter_envp,4,4
|
|
|
|
- .comm operatingsystem_parameter_argc,4,4
|
|
|
|
- .comm operatingsystem_parameter_argv,4,4
|
|
|
|
- .comm __progname_storage,256,32
|
|
|
|
- .ident "GCC: (GNU) 4.2.1 20070719 "
|
|
|
|
- .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
|
|
|
|
- .globl __i686.get_pc_thunk.bx
|
|
|
|
- .hidden __i686.get_pc_thunk.bx
|
|
|
|
- .type __i686.get_pc_thunk.bx, @function
|
|
|
|
-__i686.get_pc_thunk.bx:
|
|
|
|
- movl (%esp), %ebx
|
|
|
|
- ret
|
|
|