/bridges/source/cpp_uno/gcc3_linux_intel/call.s

https://bitbucket.org/markjenkins/libreoffice_ubuntu-debian-fixes · Assembly · 292 lines · 267 code · 8 blank · 17 comment · 6 complexity · 6395f8bfcfcc1720d6cd174592661bba MD5 · raw file

  1. /*
  2. * This file is part of the LibreOffice project.
  3. *
  4. * This Source Code Form is subject to the terms of the Mozilla Public
  5. * License, v. 2.0. If a copy of the MPL was not distributed with this
  6. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  7. *
  8. * This file incorporates work covered by the following license notice:
  9. *
  10. * Licensed to the Apache Software Foundation (ASF) under one or more
  11. * contributor license agreements. See the NOTICE file distributed
  12. * with this work for additional information regarding copyright
  13. * ownership. The ASF licenses this file to you under the Apache
  14. * License, Version 2.0 (the "License"); you may not use this file
  15. * except in compliance with the License. You may obtain a copy of
  16. * the License at http://www.apache.org/licenses/LICENSE-2.0 .
  17. */
  18. .text
  19. .globl privateSnippetExecutorGeneral
  20. .type privateSnippetExecutorGeneral,@function
  21. privateSnippetExecutorGeneral:
  22. .LFBg:
  23. movl %esp,%ecx
  24. pushl %ebp # proper stack frame needed for exception handling
  25. .LCFIg0:
  26. movl %esp,%ebp
  27. .LCFIg1:
  28. subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit
  29. # stack alignment
  30. pushl %esp # 32bit &returnValue
  31. pushl %ecx # 32bit pCallStack
  32. pushl %edx # 32bit nVtableOffset
  33. pushl %eax # 32bit nFunctionIndex
  34. call cpp_vtable_call
  35. movl 16(%esp),%eax # 32bit returnValue
  36. leave
  37. ret
  38. .LFEg:
  39. .size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral
  40. .globl privateSnippetExecutorVoid
  41. .type privateSnippetExecutorVoid,@function
  42. privateSnippetExecutorVoid:
  43. .LFBv:
  44. movl %esp,%ecx
  45. pushl %ebp # proper stack frame needed for exception handling
  46. .LCFIv0:
  47. movl %esp,%ebp
  48. .LCFIv1:
  49. andl $0xFFFFFFF0,%esp # preserve potential 128bit stack alignment
  50. pushl $0 # 32bit null pointer (returnValue not used)
  51. pushl %ecx # 32bit pCallStack
  52. pushl %edx # 32bit nVtableOffset
  53. pushl %eax # 32bit nFunctionIndex
  54. call cpp_vtable_call
  55. leave
  56. ret
  57. .LFEv:
  58. .size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid
  59. .globl privateSnippetExecutorHyper
  60. .type privateSnippetExecutorHyper,@function
  61. privateSnippetExecutorHyper:
  62. .LFBh:
  63. movl %esp,%ecx
  64. pushl %ebp # proper stack frame needed for exception handling
  65. .LCFIh0:
  66. movl %esp,%ebp
  67. .LCFIh1:
  68. subl $0x8,%esp # 64bit returnValue (preserves potential 128bit
  69. # stack alignment)
  70. pushl %esp # 32bit &returnValue
  71. pushl %ecx # 32bit pCallStack
  72. pushl %edx # 32bit nVtableOffset
  73. pushl %eax # 32bit nFunctionIndex
  74. call cpp_vtable_call
  75. movl 16(%esp),%eax # 64bit returnValue, lower half
  76. movl 20(%esp),%edx # 64bit returnValue, upper half
  77. leave
  78. ret
  79. .LFEh:
  80. .size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper
  81. .globl privateSnippetExecutorFloat
  82. .type privateSnippetExecutorFloat,@function
  83. privateSnippetExecutorFloat:
  84. .LFBf:
  85. movl %esp,%ecx
  86. pushl %ebp # proper stack frame needed for exception handling
  87. .LCFIf0:
  88. movl %esp,%ebp
  89. .LCFIf1:
  90. subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit
  91. # stack alignment
  92. pushl %esp # 32bit &returnValue
  93. pushl %ecx # 32bit pCallStack
  94. pushl %edx # 32bit nVtableOffset
  95. pushl %eax # 32bit nFunctionIndex
  96. call cpp_vtable_call
  97. flds 16(%esp) # 32bit returnValue
  98. leave
  99. ret
  100. .LFEf:
  101. .size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat
  102. .globl privateSnippetExecutorDouble
  103. .type privateSnippetExecutorDouble,@function
  104. privateSnippetExecutorDouble:
  105. .LFBd:
  106. movl %esp,%ecx
  107. pushl %ebp # proper stack frame needed for exception handling
  108. .LCFId0:
  109. movl %esp,%ebp
  110. .LCFId1:
  111. subl $0x8,%esp # 64bit returnValue (preserves potential 128bit
  112. # stack alignment)
  113. pushl %esp # 32bit &returnValue
  114. pushl %ecx # 32bit pCallStack
  115. pushl %edx # 32bit nVtableOffset
  116. pushl %eax # 32bit nFunctionIndex
  117. call cpp_vtable_call
  118. fldl 16(%esp) # 64bit returnValue
  119. leave
  120. ret
  121. .LFEd:
  122. .size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble
  123. .globl privateSnippetExecutorClass
  124. .type privateSnippetExecutorClass,@function
  125. privateSnippetExecutorClass:
  126. .LFBc:
  127. movl %esp,%ecx
  128. pushl %ebp # proper stack frame needed for exception handling
  129. .LCFIc0:
  130. movl %esp,%ebp
  131. .LCFIc1:
  132. subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit
  133. # stack alignment
  134. pushl %esp # 32bit &returnValue
  135. pushl %ecx # 32bit pCallStack
  136. pushl %edx # 32bit nVtableOffset
  137. pushl %eax # 32bit nFunctionIndex
  138. call cpp_vtable_call
  139. movl 16(%esp),%eax # 32bit returnValue
  140. leave
  141. ret $4
  142. .LFEc:
  143. .size privateSnippetExecutorClass,.-privateSnippetExecutorClass
  144. .section .eh_frame,"a",@progbits
  145. .Lframe1:
  146. .long .LECIE1-.LSCIE1 # length
  147. .LSCIE1:
  148. .long 0 # CIE_ID
  149. .byte 1 # version
  150. .string "zR" # augmentation
  151. .uleb128 1 # code_alignment_factor
  152. .sleb128 -4 # data_alignment_factor
  153. .byte 8 # return_address_register
  154. .uleb128 1 # augmentation size 1:
  155. .byte 0x1B # FDE Encoding (pcrel sdata4)
  156. # initial_instructions:
  157. .byte 0x0C # DW_CFA_def_cfa %esp, 4
  158. .uleb128 4
  159. .uleb128 4
  160. .byte 0x88 # DW_CFA_offset ret, 1
  161. .uleb128 1
  162. .align 4
  163. .LECIE1:
  164. .LSFDEg:
  165. .long .LEFDEg-.LASFDEg # length
  166. .LASFDEg:
  167. .long .LASFDEg-.Lframe1 # CIE_pointer
  168. .long .LFBg-. # initial_location
  169. .long .LFEg-.LFBg # address_range
  170. .uleb128 0 # augmentation size 0
  171. # instructions:
  172. .byte 0x04 # DW_CFA_advance_loc4
  173. .long .LCFIg0-.LFBg
  174. .byte 0x0E # DW_CFA_def_cfa_offset 8
  175. .uleb128 8
  176. .byte 0x85 # DW_CFA_offset %ebp, 2
  177. .uleb128 2
  178. .byte 0x04 # DW_CFA_advance_loc4
  179. .long .LCFIg1-.LCFIg0
  180. .byte 0x0D # DW_CFA_def_cfa_register %ebp
  181. .uleb128 5
  182. .align 4
  183. .LEFDEg:
  184. .LSFDEv:
  185. .long .LEFDEv-.LASFDEv # length
  186. .LASFDEv:
  187. .long .LASFDEv-.Lframe1 # CIE_pointer
  188. .long .LFBv-. # initial_location
  189. .long .LFEv-.LFBv # address_range
  190. .uleb128 0 # augmentation size 0
  191. # instructions:
  192. .byte 0x04 # DW_CFA_advance_loc4
  193. .long .LCFIv0-.LFBv
  194. .byte 0x0E # DW_CFA_def_cfa_offset 8
  195. .uleb128 8
  196. .byte 0x85 # DW_CFA_offset %ebp, 2
  197. .uleb128 2
  198. .byte 0x04 # DW_CFA_advance_loc4
  199. .long .LCFIv1-.LCFIv0
  200. .byte 0x0D # DW_CFA_def_cfa_register %ebp
  201. .uleb128 5
  202. .align 4
  203. .LEFDEv:
  204. .LSFDEh:
  205. .long .LEFDEh-.LASFDEh # length
  206. .LASFDEh:
  207. .long .LASFDEh-.Lframe1 # CIE_pointer
  208. .long .LFBh-. # initial_location
  209. .long .LFEh-.LFBh # address_range
  210. .uleb128 0 # augmentation size 0
  211. # instructions:
  212. .byte 0x04 # DW_CFA_advance_loc4
  213. .long .LCFIh0-.LFBh
  214. .byte 0x0E # DW_CFA_def_cfa_offset 8
  215. .uleb128 8
  216. .byte 0x85 # DW_CFA_offset %ebp, 2
  217. .uleb128 2
  218. .byte 0x04 # DW_CFA_advance_loc4
  219. .long .LCFIh1-.LCFIh0
  220. .byte 0x0D # DW_CFA_def_cfa_register %ebp
  221. .uleb128 5
  222. .align 4
  223. .LEFDEh:
  224. .LSFDEf:
  225. .long .LEFDEf-.LASFDEf # length
  226. .LASFDEf:
  227. .long .LASFDEf-.Lframe1 # CIE_pointer
  228. .long .LFBf-. # initial_location
  229. .long .LFEf-.LFBf # address_range
  230. .uleb128 0 # augmentation size 0
  231. # instructions:
  232. .byte 0x04 # DW_CFA_advance_loc4
  233. .long .LCFIf0-.LFBf
  234. .byte 0x0E # DW_CFA_def_cfa_offset 8
  235. .uleb128 8
  236. .byte 0x85 # DW_CFA_offset %ebp, 2
  237. .uleb128 2
  238. .byte 0x04 # DW_CFA_advance_loc4
  239. .long .LCFIf1-.LCFIf0
  240. .byte 0x0D # DW_CFA_def_cfa_register %ebp
  241. .uleb128 5
  242. .align 4
  243. .LEFDEf:
  244. .LSFDEd:
  245. .long .LEFDEd-.LASFDEd # length
  246. .LASFDEd:
  247. .long .LASFDEd-.Lframe1 # CIE_pointer
  248. .long .LFBd-. # initial_location
  249. .long .LFEd-.LFBd # address_range
  250. .uleb128 0 # augmentation size 0
  251. # instructions:
  252. .byte 0x04 # DW_CFA_advance_loc4
  253. .long .LCFId0-.LFBd
  254. .byte 0x0E # DW_CFA_def_cfa_offset 8
  255. .uleb128 8
  256. .byte 0x85 # DW_CFA_offset %ebp, 2
  257. .uleb128 2
  258. .byte 0x04 # DW_CFA_advance_loc4
  259. .long .LCFId1-.LCFId0
  260. .byte 0x0D # DW_CFA_def_cfa_register %ebp
  261. .uleb128 5
  262. .align 4
  263. .LEFDEd:
  264. .LSFDEc:
  265. .long .LEFDEc-.LASFDEc # length
  266. .LASFDEc:
  267. .long .LASFDEc-.Lframe1 # CIE_pointer
  268. .long .LFBc-. # initial_location
  269. .long .LFEc-.LFBc # address_range
  270. .uleb128 0 # augmentation size 0
  271. # instructions:
  272. .byte 0x04 # DW_CFA_advance_loc4
  273. .long .LCFIc0-.LFBc
  274. .byte 0x0E # DW_CFA_def_cfa_offset 8
  275. .uleb128 8
  276. .byte 0x85 # DW_CFA_offset %ebp, 2
  277. .uleb128 2
  278. .byte 0x04 # DW_CFA_advance_loc4
  279. .long .LCFIc1-.LCFIc0
  280. .byte 0x0D # DW_CFA_def_cfa_register %ebp
  281. .uleb128 5
  282. .align 4
  283. .LEFDEc:
  284. .section .note.GNU-stack,"",@progbits