prt0.as 2.7 KB

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