dllprt0.as 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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. .globl __progname
  11. .section .rodata
  12. .LC0:
  13. .string ""
  14. .section .data.rel.local,"aw",@progbits
  15. .align 8
  16. .type __progname, @object
  17. .size __progname, 8
  18. __progname:
  19. .quad .LC0
  20. #APP
  21. .text
  22. .align 8
  23. .globl __start
  24. .globl _start
  25. _start:
  26. __start:
  27. movq %rbx,%r9
  28. movq %rcx,%r8
  29. movq %rdx,%rcx
  30. movq (%rsp),%rdi
  31. leaq 16(%rsp,%rdi,8),%rdx
  32. leaq 8(%rsp),%rsi
  33. subq $8,%rsp
  34. andq $~15,%rsp
  35. addq $8,%rsp
  36. jmp ___start
  37. #NO_APP
  38. .text
  39. .globl ___start
  40. .type ___start, @function
  41. ___start:
  42. .LFB9:
  43. pushq %rbp
  44. .LCFI0:
  45. movq %rsp, %rbp
  46. .LCFI1:
  47. subq $64, %rsp
  48. .LCFI2:
  49. movl %edi, -20(%rbp)
  50. movq %rsi, -32(%rbp)
  51. movq %rdx, -40(%rbp)
  52. movq %rcx, -48(%rbp)
  53. movq %r8, -56(%rbp)
  54. movq %r9, -64(%rbp)
  55. movq environ@GOTPCREL(%rip), %rdx
  56. movq -40(%rbp), %rax
  57. movq %rax, (%rdx)
  58. movq operatingsystem_parameter_envp@GOTPCREL(%rip), %rdx
  59. movq -40(%rbp), %rax
  60. movq %rax, (%rdx)
  61. movl -20(%rbp), %eax
  62. movslq %eax,%rdx
  63. movq operatingsystem_parameter_argc@GOTPCREL(%rip), %rax
  64. movq %rdx, (%rax)
  65. movq operatingsystem_parameter_argv@GOTPCREL(%rip), %rdx
  66. movq -32(%rbp), %rax
  67. movq %rax, (%rdx)
  68. movq -32(%rbp), %rax
  69. movq (%rax), %rax
  70. movq %rax, -8(%rbp)
  71. cmpq $0, -8(%rbp)
  72. je .L2
  73. movq -8(%rbp), %rdi
  74. movl $47, %esi
  75. call _strrchr
  76. movq %rax, %rdx
  77. movq __progname@GOTPCREL(%rip), %rax
  78. movq %rdx, (%rax)
  79. movq __progname@GOTPCREL(%rip), %rax
  80. movq (%rax), %rax
  81. testq %rax, %rax
  82. jne .L4
  83. movq __progname@GOTPCREL(%rip), %rdx
  84. movq -8(%rbp), %rax
  85. movq %rax, (%rdx)
  86. jmp .L6
  87. .L4:
  88. movq __progname@GOTPCREL(%rip), %rax
  89. movq (%rax), %rax
  90. leaq 1(%rax), %rdx
  91. movq __progname@GOTPCREL(%rip), %rax
  92. movq %rdx, (%rax)
  93. .L6:
  94. movq __progname_storage@GOTPCREL(%rip), %rax
  95. movq %rax, -16(%rbp)
  96. jmp .L7
  97. .L8:
  98. movq __progname@GOTPCREL(%rip), %rax
  99. movq (%rax), %rcx
  100. movzbl (%rcx), %edx
  101. movq -16(%rbp), %rax
  102. movb %dl, (%rax)
  103. addq $1, -16(%rbp)
  104. leaq 1(%rcx), %rdx
  105. movq __progname@GOTPCREL(%rip), %rax
  106. movq %rdx, (%rax)
  107. .L7:
  108. movq __progname@GOTPCREL(%rip), %rax
  109. movq (%rax), %rax
  110. movzbl (%rax), %eax
  111. testb %al, %al
  112. je .L9
  113. movq __progname_storage@GOTPCREL(%rip), %rax
  114. leaq 255(%rax), %rax
  115. cmpq %rax, -16(%rbp)
  116. jb .L8
  117. .L9:
  118. movq -16(%rbp), %rax
  119. movb $0, (%rax)
  120. movq __progname@GOTPCREL(%rip), %rdx
  121. movq __progname_storage@GOTPCREL(%rip), %rax
  122. movq %rax, (%rdx)
  123. .L2:
  124. movl $0, %eax
  125. call _init@PLT
  126. movq environ@GOTPCREL(%rip), %rax
  127. movq (%rax), %rdx
  128. movq -32(%rbp), %rsi
  129. movl -20(%rbp), %edi
  130. movl $0, %eax
  131. call main@PLT
  132. # movl %eax, %edi
  133. # call exit
  134. jmp _haltproc@PLT
  135. .p2align 2,0x90
  136. .globl _haltproc
  137. .type _haltproc,@function
  138. _haltproc:
  139. movq $1,%rax
  140. movzwq operatingsystem_result(%rip),%rbx
  141. pushq %rbx
  142. call .Lactualsyscall
  143. addq $8,%rsp
  144. jmp _haltproc
  145. .Lactualsyscall:
  146. int $0x80
  147. jb .LErrorcode
  148. xor %rbx,%rbx
  149. ret
  150. .LErrorcode:
  151. movq %rax,%rbx
  152. movq $-1,%rax
  153. ret
  154. .LFE9:
  155. .size ___start, .-___start
  156. .type _strrchr, @function
  157. _strrchr:
  158. .LFB10:
  159. pushq %rbp
  160. .LCFI3:
  161. movq %rsp, %rbp
  162. .LCFI4:
  163. movq %rdi, -24(%rbp)
  164. movb %sil, -25(%rbp)
  165. movq $0, -8(%rbp)
  166. .L13:
  167. movq -24(%rbp), %rdx
  168. movzbl (%rdx), %eax
  169. cmpb -25(%rbp), %al
  170. jne .L14
  171. movq -24(%rbp), %rax
  172. movq %rax, -8(%rbp)
  173. .L14:
  174. movq -24(%rbp), %rdx
  175. movzbl (%rdx), %eax
  176. testb %al, %al
  177. jne .L16
  178. movq -8(%rbp), %rax
  179. movq %rax, -16(%rbp)
  180. jmp .L12
  181. .L16:
  182. addq $1, -24(%rbp)
  183. jmp .L13
  184. .L12:
  185. movq -16(%rbp), %rax
  186. leave
  187. ret
  188. .LFE10:
  189. .size _strrchr, .-_strrchr
  190. .comm environ,8,8
  191. .comm operatingsystem_parameter_envp,8,8
  192. .comm operatingsystem_parameter_argc,8,8
  193. .comm operatingsystem_parameter_argv,8,8
  194. .comm __progname_storage,256,32
  195. .section .eh_frame,"a",@progbits
  196. .Lframe1:
  197. .long .LECIE1-.LSCIE1
  198. .LSCIE1:
  199. .long 0x0
  200. .byte 0x1
  201. .string "zR"
  202. .uleb128 0x1
  203. .sleb128 -8
  204. .byte 0x10
  205. .uleb128 0x1
  206. .byte 0x1b
  207. .byte 0xc
  208. .uleb128 0x7
  209. .uleb128 0x8
  210. .byte 0x90
  211. .uleb128 0x1
  212. .align 8
  213. .LECIE1:
  214. .LSFDE1:
  215. .long .LEFDE1-.LASFDE1
  216. .LASFDE1:
  217. .long .LASFDE1-.Lframe1
  218. .long .LFB9-.
  219. .long .LFE9-.LFB9
  220. .uleb128 0x0
  221. .byte 0x4
  222. .long .LCFI0-.LFB9
  223. .byte 0xe
  224. .uleb128 0x10
  225. .byte 0x86
  226. .uleb128 0x2
  227. .byte 0x4
  228. .long .LCFI1-.LCFI0
  229. .byte 0xd
  230. .uleb128 0x6
  231. .align 8
  232. .LEFDE1:
  233. .LSFDE3:
  234. .long .LEFDE3-.LASFDE3
  235. .LASFDE3:
  236. .long .LASFDE3-.Lframe1
  237. .long .LFB10-.
  238. .long .LFE10-.LFB10
  239. .uleb128 0x0
  240. .byte 0x4
  241. .long .LCFI3-.LFB10
  242. .byte 0xe
  243. .uleb128 0x10
  244. .byte 0x86
  245. .uleb128 0x2
  246. .byte 0x4
  247. .long .LCFI4-.LCFI3
  248. .byte 0xd
  249. .uleb128 0x6
  250. .align 8
  251. .LEFDE3:
  252. .ident "GCC: (GNU) 4.2.1 20070719 "