123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- .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
|