prt0.as 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. .file "crt1.c"
  2. #APP
  3. .ident "$FreeBSD: src/lib/csu/common/crtbrand.c,v 1.4 2003/10/17 15:43:13 peter Exp $"
  4. #NO_APP
  5. .section .note.ABI-tag,"a",@progbits
  6. .p2align 2
  7. .type abitag, @object
  8. .size abitag, 24
  9. abitag:
  10. .long 8
  11. .long 4
  12. .long 1
  13. .string "FreeBSD"
  14. .long 502110
  15. .section .rodata
  16. .LC0:
  17. .string ""
  18. .globl __progname
  19. .data
  20. .p2align 3
  21. .type __progname, @object
  22. .size __progname, 8
  23. __progname:
  24. .quad .LC0
  25. .text
  26. .p2align 2,,3
  27. .globl _start
  28. .type _start, @function
  29. _start:
  30. .LFB9:
  31. pushq %rbp
  32. .LCFI0:
  33. movq %rsp, %rbp
  34. .LCFI1:
  35. subq $48, %rsp
  36. .LCFI2:
  37. movq %rdi, -8(%rbp)
  38. movq %rsi, -16(%rbp)
  39. movq -8(%rbp), %rax
  40. movl (%rax), %eax
  41. movl %eax, -20(%rbp)
  42. movl %eax, operatingsystem_parameter_argc
  43. movq -8(%rbp), %rax
  44. addq $8, %rax
  45. movq %rax, -32(%rbp)
  46. movq %rax, operatingsystem_parameter_argv
  47. movl -20(%rbp), %eax
  48. cltq
  49. salq $3, %rax
  50. addq -8(%rbp), %rax
  51. addq $16, %rax
  52. movq %rax, -40(%rbp)
  53. movq %rax, operatingsystem_parameter_envp
  54. movq -40(%rbp), %rax
  55. movq %rax, environ(%rip)
  56. movq %rax,environ
  57. cmpl $0, -20(%rbp)
  58. jle .L5
  59. movq -32(%rbp), %rax
  60. cmpq $0, (%rax)
  61. je .L5
  62. movq -32(%rbp), %rax
  63. movq (%rax), %rax
  64. movq %rax, __progname(%rip)
  65. movq __progname(%rip), %rax
  66. movq %rax, -48(%rbp)
  67. .L6:
  68. movq -48(%rbp), %rax
  69. cmpb $0, (%rax)
  70. jne .L9
  71. jmp .L5
  72. .L9:
  73. movq -48(%rbp), %rax
  74. cmpb $47, (%rax)
  75. jne .L8
  76. movq -48(%rbp), %rax
  77. incq %rax
  78. movq %rax, __progname(%rip)
  79. .L8:
  80. leaq -48(%rbp), %rax
  81. incq (%rax)
  82. jmp .L6
  83. .L5:
  84. # movl $_DYNAMIC, %eax
  85. # testq %rax, %rax
  86. # je .L11
  87. # movq -16(%rbp), %rdi
  88. # call atexit
  89. .L11:
  90. # movl $_fini, %edi
  91. # call atexit
  92. # call _init
  93. # movq -40(%rbp), %rdx #env
  94. # movq -32(%rbp), %rsi #argv
  95. # movl -20(%rbp), %edi # argc
  96. xorq %rbp,%rbp
  97. call main
  98. movl %eax, %edi
  99. call exit
  100. .LFE9:
  101. .size _start, .-_start
  102. #APP
  103. .ident "$FreeBSD: src/lib/csu/amd64/crt1.c,v 1.13 2003/04/30 19:27:07 peter Exp $"
  104. #NO_APP
  105. .comm environ,8,8
  106. .weak _DYNAMIC
  107. .section .eh_frame,"a",@progbits
  108. .Lframe1:
  109. .long .LECIE1-.LSCIE1
  110. .LSCIE1:
  111. .long 0x0
  112. .byte 0x1
  113. .string ""
  114. .uleb128 0x1
  115. .sleb128 -8
  116. .byte 0x10
  117. .byte 0xc
  118. .uleb128 0x7
  119. .uleb128 0x8
  120. .byte 0x90
  121. .uleb128 0x1
  122. .p2align 3
  123. .LECIE1:
  124. .LSFDE1:
  125. .long .LEFDE1-.LASFDE1
  126. .LASFDE1:
  127. .long .LASFDE1-.Lframe1
  128. .quad .LFB9
  129. .quad .LFE9-.LFB9
  130. .byte 0x4
  131. .long .LCFI0-.LFB9
  132. .byte 0xe
  133. .uleb128 0x10
  134. .byte 0x86
  135. .uleb128 0x2
  136. .byte 0x4
  137. .long .LCFI1-.LCFI0
  138. .byte 0xd
  139. .uleb128 0x6
  140. .p2align 3
  141. .LEFDE1:
  142. .ident "GCC: (GNU) 3.3.3 [FreeBSD] 20031106"