cprt0.as 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. .section ".note.openbsd.ident", "a"
  2. .p2align 2
  3. .long 8
  4. .long 4
  5. .long 1
  6. .ascii "OpenBSD\0"
  7. .long 0
  8. .previous
  9. .file "crt0.c"
  10. gcc2_compiled.:
  11. .data
  12. .align 32
  13. .type rcsid , @object
  14. .size rcsid , 58
  15. rcsid:
  16. .string "$OpenBSD: crt0.c,v 1.11 2003/06/27 22:30:38 deraadt Exp $"
  17. .globl __progname
  18. .section .rodata
  19. .LC0:
  20. .string ""
  21. .data
  22. .align 4
  23. .type __progname , @object
  24. .size __progname , 4
  25. __progname:
  26. .long .LC0
  27. .global __progname_storage
  28. .type __progname_storage, @ object
  29. .size __progname_storage, 256
  30. .align 4
  31. ___fpucw:
  32. .long 0x1332
  33. .globl ___fpc_brk_addr /* heap management */
  34. .type ___fpc_brk_addr,@object
  35. .size ___fpc_brk_addr,4
  36. ___fpc_brk_addr:
  37. .long 0
  38. #APP
  39. .text
  40. .align 4
  41. .globl __start
  42. .globl _start
  43. _start:
  44. __start:
  45. pushl %ebx #ps_strings
  46. pushl %ecx # obj
  47. pushl %edx # cleanup
  48. movl 12(%esp),%eax
  49. leal 20(%esp,%eax,4),%ecx
  50. leal 16(%esp),%edx
  51. pushl %ecx
  52. pushl %edx
  53. pushl %eax
  54. call ___start
  55. #NO_APP
  56. .text
  57. .align 4
  58. .globl ___start
  59. .type ___start , @function
  60. ___start:
  61. pushl %ebp
  62. movl %esp,%ebp
  63. subl $16,%esp
  64. pushl %esi
  65. pushl %ebx
  66. movl 12(%ebp),%esi
  67. movl 16(%ebp),%eax
  68. movl %eax,environ
  69. movl %eax,operatingsystem_parameter_envp
  70. movl (%esi),%ebx
  71. testl %ebx,%ebx
  72. je .L3
  73. addl $-8,%esp
  74. pushl $47
  75. pushl %ebx
  76. call _strrchr
  77. movl %eax,__progname
  78. addl $16,%esp
  79. testl %eax,%eax
  80. jne .L4
  81. movl %ebx,__progname
  82. jmp .L5
  83. .p2align 4,,7
  84. .L4:
  85. incl %eax
  86. movl %eax,__progname
  87. .L5:
  88. movl $__progname_storage,%edx
  89. jmp .L12
  90. .p2align 4,,7
  91. .L9:
  92. movb (%eax),%al
  93. movb %al,(%edx)
  94. incl __progname
  95. incl %edx
  96. .L12:
  97. movl __progname,%eax
  98. cmpb $0,(%eax)
  99. je .L7
  100. cmpl $__progname_storage+255,%edx
  101. jb .L9
  102. .L7:
  103. movb $0,(%edx)
  104. movl $__progname_storage,__progname
  105. .L3:
  106. # call __init
  107. subl $16,%esp
  108. pushl %eax
  109. movl 8(%ebp),%eax
  110. movl %eax,operatingsystem_parameter_argc
  111. movl %esi,operatingsystem_parameter_argv
  112. popl %eax
  113. # pushl environ
  114. # pushl %esi
  115. # pushl 8(%ebp)
  116. finit
  117. fwait
  118. fldcw ___fpucw
  119. xorl %ebp,%ebp
  120. call main
  121. pushl %eax
  122. call exit
  123. .p2align 2,0x90
  124. .globl _haltproc
  125. .type _haltproc,@function
  126. _haltproc:
  127. mov $1,%eax
  128. movzwl operatingsystem_result,%ebx
  129. pushl %ebx
  130. call .Lactualsyscall
  131. addl $4,%esp
  132. jmp _haltproc
  133. .Lactualsyscall:
  134. int $0x80
  135. jb .LErrorcode
  136. xor %ebx,%ebx
  137. ret
  138. .LErrorcode:
  139. mov %eax,%ebx
  140. mov $-1,%eax
  141. ret
  142. .p2align 2,0x90
  143. .Lfe1:
  144. .size ___start , . - ___start
  145. .align 4
  146. .type _strrchr , @function
  147. _strrchr:
  148. pushl %ebp
  149. movl %esp,%ebp
  150. pushl %ebx
  151. movl 8(%ebp),%eax
  152. movb 12(%ebp),%bl
  153. xorl %ecx,%ecx
  154. .p2align 4,,7
  155. .L14:
  156. movb (%eax),%dl
  157. cmpb %bl,%dl
  158. jne .L17
  159. movl %eax,%ecx
  160. .L17:
  161. testb %dl,%dl
  162. je .L16
  163. incl %eax
  164. jmp .L14
  165. .p2align 4,,7
  166. .L16:
  167. movl %ecx,%eax
  168. popl %ebx
  169. leave
  170. ret
  171. .size _strrchr , . - _strrchr
  172. .comm environ,4,4
  173. .comm __progname_storage,256,32
  174. .comm operatingsystem_parameter_envp,4,4
  175. .comm operatingsystem_parameter_argc,4,4
  176. .comm operatingsystem_parameter_argv,4,4