crt0.s 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. .file "crt0.c"
  2. .globl __progname
  3. .section .rodata
  4. .LC0:
  5. .string ""
  6. .data
  7. .align 8
  8. .type __progname, @object
  9. .size __progname, 8
  10. __progname:
  11. .quad .LC0
  12. #APP
  13. .text ; .align 8 ; .globl __start ; .globl _start ;_start: ;__start: ; movq %rbx,%r9 ; movq %rcx,%r8 ; movq %rdx,%rcx ; movq (%rsp),%rdi ; leaq 16(%rsp,%rdi,8),%rdx ; leaq 8(%rsp),%rsi ; subq $8,%rsp ; andq $~15,%rsp ; addq $8,%rsp ; jmp ___start ;
  14. #NO_APP
  15. .text
  16. .globl ___start
  17. .type ___start, @function
  18. ___start:
  19. .LFB9:
  20. pushq %rbp
  21. .LCFI0:
  22. movq %rsp, %rbp
  23. .LCFI1:
  24. subq $64, %rsp
  25. .LCFI2:
  26. movl %edi, -20(%rbp)
  27. movq %rsi, -32(%rbp)
  28. movq %rdx, -40(%rbp)
  29. movq %rcx, -48(%rbp)
  30. movq %r8, -56(%rbp)
  31. movq %r9, -64(%rbp)
  32. movq -40(%rbp), %rax
  33. movq %rax, environ(%rip)
  34. movq -32(%rbp), %rax
  35. movq (%rax), %rax
  36. movq %rax, -8(%rbp)
  37. cmpq $0, -8(%rbp)
  38. je .L2
  39. movq -8(%rbp), %rdi
  40. movl $47, %esi
  41. call _strrchr
  42. movq %rax, __progname(%rip)
  43. movq __progname(%rip), %rax
  44. testq %rax, %rax
  45. jne .L4
  46. movq -8(%rbp), %rax
  47. movq %rax, __progname(%rip)
  48. jmp .L6
  49. .L4:
  50. movq __progname(%rip), %rax
  51. addq $1, %rax
  52. movq %rax, __progname(%rip)
  53. .L6:
  54. movq $__progname_storage, -16(%rbp)
  55. jmp .L7
  56. .L8:
  57. movq __progname(%rip), %rcx
  58. movzbl (%rcx), %edx
  59. movq -16(%rbp), %rax
  60. movb %dl, (%rax)
  61. addq $1, -16(%rbp)
  62. leaq 1(%rcx), %rax
  63. movq %rax, __progname(%rip)
  64. .L7:
  65. movq __progname(%rip), %rax
  66. movzbl (%rax), %eax
  67. testb %al, %al
  68. je .L9
  69. movl $__progname_storage+255, %eax
  70. cmpq %rax, -16(%rbp)
  71. jb .L8
  72. .L9:
  73. movq -16(%rbp), %rax
  74. movb $0, (%rax)
  75. movq $__progname_storage, __progname(%rip)
  76. .L2:
  77. movl $_mcleanup, %edi
  78. call atexit
  79. movl $_etext, %eax
  80. movq %rax, %rsi
  81. movl $_eprol, %eax
  82. movq %rax, %rdi
  83. call monstartup
  84. movl $0, %eax
  85. call __init
  86. movq environ(%rip), %rdx
  87. movq -32(%rbp), %rsi
  88. movl -20(%rbp), %edi
  89. movl $0, %eax
  90. call main
  91. movl %eax, %edi
  92. call exit
  93. .LFE9:
  94. .size ___start, .-___start
  95. .type _strrchr, @function
  96. _strrchr:
  97. .LFB10:
  98. pushq %rbp
  99. .LCFI3:
  100. movq %rsp, %rbp
  101. .LCFI4:
  102. movq %rdi, -24(%rbp)
  103. movb %sil, -25(%rbp)
  104. movq $0, -8(%rbp)
  105. .L13:
  106. movq -24(%rbp), %rdx
  107. movzbl (%rdx), %eax
  108. cmpb -25(%rbp), %al
  109. jne .L14
  110. movq -24(%rbp), %rax
  111. movq %rax, -8(%rbp)
  112. .L14:
  113. movq -24(%rbp), %rdx
  114. movzbl (%rdx), %eax
  115. testb %al, %al
  116. jne .L16
  117. movq -8(%rbp), %rax
  118. movq %rax, -16(%rbp)
  119. jmp .L12
  120. .L16:
  121. addq $1, -24(%rbp)
  122. jmp .L13
  123. .L12:
  124. movq -16(%rbp), %rax
  125. leave
  126. ret
  127. .LFE10:
  128. .size _strrchr, .-_strrchr
  129. #APP
  130. .text
  131. _eprol:
  132. #NO_APP
  133. .comm environ,8,8
  134. .comm __progname_storage,256,32
  135. .section .eh_frame,"a",@progbits
  136. .Lframe1:
  137. .long .LECIE1-.LSCIE1
  138. .LSCIE1:
  139. .long 0x0
  140. .byte 0x1
  141. .string "zR"
  142. .uleb128 0x1
  143. .sleb128 -8
  144. .byte 0x10
  145. .uleb128 0x1
  146. .byte 0x3
  147. .byte 0xc
  148. .uleb128 0x7
  149. .uleb128 0x8
  150. .byte 0x90
  151. .uleb128 0x1
  152. .align 8
  153. .LECIE1:
  154. .LSFDE1:
  155. .long .LEFDE1-.LASFDE1
  156. .LASFDE1:
  157. .long .LASFDE1-.Lframe1
  158. .long .LFB9
  159. .long .LFE9-.LFB9
  160. .uleb128 0x0
  161. .byte 0x4
  162. .long .LCFI0-.LFB9
  163. .byte 0xe
  164. .uleb128 0x10
  165. .byte 0x86
  166. .uleb128 0x2
  167. .byte 0x4
  168. .long .LCFI1-.LCFI0
  169. .byte 0xd
  170. .uleb128 0x6
  171. .align 8
  172. .LEFDE1:
  173. .LSFDE3:
  174. .long .LEFDE3-.LASFDE3
  175. .LASFDE3:
  176. .long .LASFDE3-.Lframe1
  177. .long .LFB10
  178. .long .LFE10-.LFB10
  179. .uleb128 0x0
  180. .byte 0x4
  181. .long .LCFI3-.LFB10
  182. .byte 0xe
  183. .uleb128 0x10
  184. .byte 0x86
  185. .uleb128 0x2
  186. .byte 0x4
  187. .long .LCFI4-.LCFI3
  188. .byte 0xd
  189. .uleb128 0x6
  190. .align 8
  191. .LEFDE3:
  192. .ident "GCC: (GNU) 4.2.1 20070719 "