ffi 1.9.3-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ffi might be problematic. Click here for more details.

Files changed (436) hide show
  1. data/COPYING +49 -0
  2. data/LICENSE +24 -0
  3. data/README.md +109 -0
  4. data/Rakefile +220 -0
  5. data/ext/ffi_c/AbstractMemory.c +1032 -0
  6. data/ext/ffi_c/AbstractMemory.h +175 -0
  7. data/ext/ffi_c/ArrayType.c +162 -0
  8. data/ext/ffi_c/ArrayType.h +59 -0
  9. data/ext/ffi_c/Buffer.c +365 -0
  10. data/ext/ffi_c/Call.c +465 -0
  11. data/ext/ffi_c/Call.h +93 -0
  12. data/ext/ffi_c/ClosurePool.c +283 -0
  13. data/ext/ffi_c/ClosurePool.h +57 -0
  14. data/ext/ffi_c/DataConverter.c +91 -0
  15. data/ext/ffi_c/DynamicLibrary.c +333 -0
  16. data/ext/ffi_c/DynamicLibrary.h +49 -0
  17. data/ext/ffi_c/Function.c +999 -0
  18. data/ext/ffi_c/Function.h +87 -0
  19. data/ext/ffi_c/FunctionInfo.c +271 -0
  20. data/ext/ffi_c/LastError.c +184 -0
  21. data/ext/ffi_c/LastError.h +47 -0
  22. data/ext/ffi_c/LongDouble.c +63 -0
  23. data/ext/ffi_c/LongDouble.h +51 -0
  24. data/ext/ffi_c/MappedType.c +168 -0
  25. data/ext/ffi_c/MappedType.h +59 -0
  26. data/ext/ffi_c/MemoryPointer.c +197 -0
  27. data/ext/ffi_c/MemoryPointer.h +53 -0
  28. data/ext/ffi_c/MethodHandle.c +360 -0
  29. data/ext/ffi_c/MethodHandle.h +55 -0
  30. data/ext/ffi_c/Platform.c +121 -0
  31. data/ext/ffi_c/Platform.h +45 -0
  32. data/ext/ffi_c/Pointer.c +508 -0
  33. data/ext/ffi_c/Pointer.h +63 -0
  34. data/ext/ffi_c/Struct.c +828 -0
  35. data/ext/ffi_c/Struct.h +106 -0
  36. data/ext/ffi_c/StructByReference.c +190 -0
  37. data/ext/ffi_c/StructByReference.h +50 -0
  38. data/ext/ffi_c/StructByValue.c +150 -0
  39. data/ext/ffi_c/StructByValue.h +55 -0
  40. data/ext/ffi_c/StructLayout.c +698 -0
  41. data/ext/ffi_c/Thread.c +352 -0
  42. data/ext/ffi_c/Thread.h +95 -0
  43. data/ext/ffi_c/Type.c +397 -0
  44. data/ext/ffi_c/Type.h +62 -0
  45. data/ext/ffi_c/Types.c +139 -0
  46. data/ext/ffi_c/Types.h +89 -0
  47. data/ext/ffi_c/Variadic.c +276 -0
  48. data/ext/ffi_c/compat.h +83 -0
  49. data/ext/ffi_c/extconf.rb +64 -0
  50. data/ext/ffi_c/ffi.c +98 -0
  51. data/ext/ffi_c/libffi.bsd.mk +34 -0
  52. data/ext/ffi_c/libffi.darwin.mk +95 -0
  53. data/ext/ffi_c/libffi.gnu.mk +31 -0
  54. data/ext/ffi_c/libffi.mk +13 -0
  55. data/ext/ffi_c/libffi.vc.mk +26 -0
  56. data/ext/ffi_c/libffi.vc64.mk +26 -0
  57. data/ext/ffi_c/libffi/ChangeLog +4600 -0
  58. data/ext/ffi_c/libffi/ChangeLog.libffi +584 -0
  59. data/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
  60. data/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
  61. data/ext/ffi_c/libffi/LICENSE +21 -0
  62. data/ext/ffi_c/libffi/Makefile.am +196 -0
  63. data/ext/ffi_c/libffi/Makefile.in +1820 -0
  64. data/ext/ffi_c/libffi/Makefile.vc +141 -0
  65. data/ext/ffi_c/libffi/Makefile.vc64 +141 -0
  66. data/ext/ffi_c/libffi/README +342 -0
  67. data/ext/ffi_c/libffi/acinclude.m4 +92 -0
  68. data/ext/ffi_c/libffi/aclocal.m4 +1873 -0
  69. data/ext/ffi_c/libffi/build-ios.sh +67 -0
  70. data/ext/ffi_c/libffi/compile +143 -0
  71. data/ext/ffi_c/libffi/config.guess +1501 -0
  72. data/ext/ffi_c/libffi/config.sub +1705 -0
  73. data/ext/ffi_c/libffi/configure +17191 -0
  74. data/ext/ffi_c/libffi/configure.ac +496 -0
  75. data/ext/ffi_c/libffi/configure.host +11 -0
  76. data/ext/ffi_c/libffi/depcomp +630 -0
  77. data/ext/ffi_c/libffi/doc/libffi.info +593 -0
  78. data/ext/ffi_c/libffi/doc/libffi.texi +600 -0
  79. data/ext/ffi_c/libffi/doc/stamp-vti +4 -0
  80. data/ext/ffi_c/libffi/doc/version.texi +4 -0
  81. data/ext/ffi_c/libffi/fficonfig.h.in +199 -0
  82. data/ext/ffi_c/libffi/fficonfig.hw +57 -0
  83. data/ext/ffi_c/libffi/include/Makefile.am +9 -0
  84. data/ext/ffi_c/libffi/include/Makefile.in +487 -0
  85. data/ext/ffi_c/libffi/include/ffi.h.in +427 -0
  86. data/ext/ffi_c/libffi/include/ffi.h.vc +427 -0
  87. data/ext/ffi_c/libffi/include/ffi.h.vc64 +427 -0
  88. data/ext/ffi_c/libffi/include/ffi_common.h +126 -0
  89. data/ext/ffi_c/libffi/install-sh +520 -0
  90. data/ext/ffi_c/libffi/libffi.pc.in +10 -0
  91. data/ext/ffi_c/libffi/libtool-version +29 -0
  92. data/ext/ffi_c/libffi/ltmain.sh +9636 -0
  93. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +176 -0
  94. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +195 -0
  95. data/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 +76 -0
  96. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +63 -0
  97. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +70 -0
  98. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +300 -0
  99. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +215 -0
  100. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +79 -0
  101. data/ext/ffi_c/libffi/m4/libtool.m4 +7831 -0
  102. data/ext/ffi_c/libffi/m4/ltoptions.m4 +369 -0
  103. data/ext/ffi_c/libffi/m4/ltsugar.m4 +123 -0
  104. data/ext/ffi_c/libffi/m4/ltversion.m4 +23 -0
  105. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +98 -0
  106. data/ext/ffi_c/libffi/man/Makefile.am +8 -0
  107. data/ext/ffi_c/libffi/man/Makefile.in +466 -0
  108. data/ext/ffi_c/libffi/man/ffi.3 +31 -0
  109. data/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
  110. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
  111. data/ext/ffi_c/libffi/mdate-sh +201 -0
  112. data/ext/ffi_c/libffi/missing +376 -0
  113. data/ext/ffi_c/libffi/msvcc.sh +197 -0
  114. data/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
  115. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
  116. data/ext/ffi_c/libffi/src/alpha/osf.S +387 -0
  117. data/ext/ffi_c/libffi/src/arm/ffi.c +728 -0
  118. data/ext/ffi_c/libffi/src/arm/ffitarget.h +65 -0
  119. data/ext/ffi_c/libffi/src/arm/gentramp.sh +118 -0
  120. data/ext/ffi_c/libffi/src/arm/sysv.S +497 -0
  121. data/ext/ffi_c/libffi/src/arm/trampoline.S +4450 -0
  122. data/ext/ffi_c/libffi/src/avr32/ffi.c +423 -0
  123. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +50 -0
  124. data/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
  125. data/ext/ffi_c/libffi/src/closures.c +615 -0
  126. data/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
  127. data/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
  128. data/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
  129. data/ext/ffi_c/libffi/src/debug.c +59 -0
  130. data/ext/ffi_c/libffi/src/dlmalloc.c +5161 -0
  131. data/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
  132. data/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
  133. data/ext/ffi_c/libffi/src/frv/ffitarget.h +57 -0
  134. data/ext/ffi_c/libffi/src/ia64/ffi.c +582 -0
  135. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
  136. data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
  137. data/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
  138. data/ext/ffi_c/libffi/src/java_raw_api.c +356 -0
  139. data/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
  140. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
  141. data/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
  142. data/ext/ffi_c/libffi/src/m68k/ffi.c +288 -0
  143. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
  144. data/ext/ffi_c/libffi/src/m68k/sysv.S +270 -0
  145. data/ext/ffi_c/libffi/src/mips/ffi.c +1036 -0
  146. data/ext/ffi_c/libffi/src/mips/ffitarget.h +242 -0
  147. data/ext/ffi_c/libffi/src/mips/n32.S +591 -0
  148. data/ext/ffi_c/libffi/src/mips/o32.S +381 -0
  149. data/ext/ffi_c/libffi/src/moxie/eabi.S +128 -0
  150. data/ext/ffi_c/libffi/src/moxie/ffi.c +276 -0
  151. data/ext/ffi_c/libffi/src/pa/ffi.c +719 -0
  152. data/ext/ffi_c/libffi/src/pa/ffitarget.h +78 -0
  153. data/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
  154. data/ext/ffi_c/libffi/src/pa/linux.S +357 -0
  155. data/ext/ffi_c/libffi/src/powerpc/aix.S +328 -0
  156. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +445 -0
  157. data/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
  158. data/ext/ffi_c/libffi/src/powerpc/darwin.S +383 -0
  159. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +575 -0
  160. data/ext/ffi_c/libffi/src/powerpc/ffi.c +1448 -0
  161. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +1359 -0
  162. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +139 -0
  163. data/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
  164. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
  165. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
  166. data/ext/ffi_c/libffi/src/powerpc/sysv.S +219 -0
  167. data/ext/ffi_c/libffi/src/prep_cif.c +177 -0
  168. data/ext/ffi_c/libffi/src/raw_api.c +254 -0
  169. data/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
  170. data/ext/ffi_c/libffi/src/s390/ffitarget.h +62 -0
  171. data/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
  172. data/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
  173. data/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
  174. data/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
  175. data/ext/ffi_c/libffi/src/sh64/ffi.c +468 -0
  176. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
  177. data/ext/ffi_c/libffi/src/sh64/sysv.S +539 -0
  178. data/ext/ffi_c/libffi/src/sparc/ffi.c +669 -0
  179. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +68 -0
  180. data/ext/ffi_c/libffi/src/sparc/v8.S +313 -0
  181. data/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
  182. data/ext/ffi_c/libffi/src/types.c +77 -0
  183. data/ext/ffi_c/libffi/src/x86/darwin.S +444 -0
  184. data/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
  185. data/ext/ffi_c/libffi/src/x86/ffi.c +644 -0
  186. data/ext/ffi_c/libffi/src/x86/ffi64.c +635 -0
  187. data/ext/ffi_c/libffi/src/x86/ffitarget.h +121 -0
  188. data/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
  189. data/ext/ffi_c/libffi/src/x86/sysv.S +468 -0
  190. data/ext/ffi_c/libffi/src/x86/unix64.S +426 -0
  191. data/ext/ffi_c/libffi/src/x86/win32.S +1065 -0
  192. data/ext/ffi_c/libffi/src/x86/win64.S +468 -0
  193. data/ext/ffi_c/libffi/testsuite/Makefile.am +80 -0
  194. data/ext/ffi_c/libffi/testsuite/Makefile.in +500 -0
  195. data/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
  196. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +300 -0
  197. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +350 -0
  198. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
  199. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +32 -0
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +89 -0
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +81 -0
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +81 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +82 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +89 -0
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +92 -0
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +90 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +95 -0
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +64 -0
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +94 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +95 -0
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +96 -0
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +102 -0
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +89 -0
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +91 -0
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +93 -0
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +113 -0
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +90 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +95 -0
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +90 -0
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +90 -0
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +98 -0
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +90 -0
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +109 -0
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +98 -0
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +124 -0
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +113 -0
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +99 -0
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +117 -0
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +97 -0
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +88 -0
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +90 -0
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +91 -0
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +93 -0
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +91 -0
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +92 -0
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +134 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +117 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +95 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +91 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +91 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +92 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +91 -0
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +91 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +93 -0
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +66 -0
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +43 -0
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +60 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +42 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +105 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +60 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +74 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +74 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +86 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +91 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +74 -0
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +86 -0
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +74 -0
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +140 -0
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +44 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +42 -0
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +42 -0
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +42 -0
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +43 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +47 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +43 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +36 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +26 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +153 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +58 -0
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +342 -0
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +152 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +161 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +133 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +110 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +111 -0
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +111 -0
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +112 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +131 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +111 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +131 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +131 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +90 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +43 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +145 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +148 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +124 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +125 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
  315. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
  316. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
  317. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +70 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +96 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +35 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +124 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
  327. data/ext/ffi_c/libffi/texinfo.tex +7210 -0
  328. data/ext/ffi_c/rbffi.h +57 -0
  329. data/ext/ffi_c/rbffi_endian.h +59 -0
  330. data/ext/ffi_c/win32/stdbool.h +8 -0
  331. data/ext/ffi_c/win32/stdint.h +201 -0
  332. data/ffi.gemspec +22 -0
  333. data/gen/Rakefile +30 -0
  334. data/lib/ffi.rb +28 -0
  335. data/lib/ffi/autopointer.rb +194 -0
  336. data/lib/ffi/buffer.rb +4 -0
  337. data/lib/ffi/callback.rb +4 -0
  338. data/lib/ffi/enum.rb +173 -0
  339. data/lib/ffi/errno.rb +43 -0
  340. data/lib/ffi/ffi.rb +44 -0
  341. data/lib/ffi/io.rb +62 -0
  342. data/lib/ffi/library.rb +499 -0
  343. data/lib/ffi/managedstruct.rb +84 -0
  344. data/lib/ffi/memorypointer.rb +1 -0
  345. data/lib/ffi/platform.rb +148 -0
  346. data/lib/ffi/platform/arm-linux/types.conf +104 -0
  347. data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  348. data/lib/ffi/platform/i386-darwin/types.conf +100 -0
  349. data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  350. data/lib/ffi/platform/i386-gnu/types.conf +107 -0
  351. data/lib/ffi/platform/i386-linux/types.conf +103 -0
  352. data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  353. data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  354. data/lib/ffi/platform/i386-solaris/types.conf +122 -0
  355. data/lib/ffi/platform/i386-windows/types.conf +105 -0
  356. data/lib/ffi/platform/ia64-linux/types.conf +104 -0
  357. data/lib/ffi/platform/mips-linux/types.conf +102 -0
  358. data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  359. data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
  360. data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
  361. data/lib/ffi/platform/powerpc-linux/types.conf +100 -0
  362. data/lib/ffi/platform/s390-linux/types.conf +102 -0
  363. data/lib/ffi/platform/s390x-linux/types.conf +102 -0
  364. data/lib/ffi/platform/sparc-linux/types.conf +102 -0
  365. data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
  366. data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
  367. data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  368. data/lib/ffi/platform/x86_64-darwin/types.conf +100 -0
  369. data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  370. data/lib/ffi/platform/x86_64-linux/types.conf +102 -0
  371. data/lib/ffi/platform/x86_64-netbsd/types.conf +126 -0
  372. data/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
  373. data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
  374. data/lib/ffi/platform/x86_64-windows/types.conf +27 -0
  375. data/lib/ffi/pointer.rb +134 -0
  376. data/lib/ffi/struct.rb +367 -0
  377. data/lib/ffi/struct_layout_builder.rb +222 -0
  378. data/lib/ffi/tools/const_generator.rb +229 -0
  379. data/lib/ffi/tools/generator.rb +60 -0
  380. data/lib/ffi/tools/generator_task.rb +36 -0
  381. data/lib/ffi/tools/struct_generator.rb +194 -0
  382. data/lib/ffi/tools/types_generator.rb +135 -0
  383. data/lib/ffi/types.rb +190 -0
  384. data/lib/ffi/union.rb +43 -0
  385. data/lib/ffi/variadic.rb +78 -0
  386. data/lib/ffi/version.rb +4 -0
  387. data/lib/ffi_c.so +0 -0
  388. data/libtest/Benchmark.c +52 -0
  389. data/libtest/BoolTest.c +34 -0
  390. data/libtest/BufferTest.c +31 -0
  391. data/libtest/ClosureTest.c +190 -0
  392. data/libtest/EnumTest.c +34 -0
  393. data/libtest/FunctionTest.c +58 -0
  394. data/libtest/GNUmakefile +149 -0
  395. data/libtest/GlobalVariable.c +62 -0
  396. data/libtest/LastErrorTest.c +21 -0
  397. data/libtest/NumberTest.c +132 -0
  398. data/libtest/PointerTest.c +63 -0
  399. data/libtest/ReferenceTest.c +23 -0
  400. data/libtest/StringTest.c +34 -0
  401. data/libtest/StructTest.c +243 -0
  402. data/libtest/UnionTest.c +43 -0
  403. data/libtest/VariadicTest.c +62 -0
  404. data/spec/ffi/async_callback_spec.rb +35 -0
  405. data/spec/ffi/bool_spec.rb +29 -0
  406. data/spec/ffi/buffer_spec.rb +251 -0
  407. data/spec/ffi/callback_spec.rb +667 -0
  408. data/spec/ffi/custom_param_type.rb +36 -0
  409. data/spec/ffi/custom_type_spec.rb +74 -0
  410. data/spec/ffi/dup_spec.rb +54 -0
  411. data/spec/ffi/enum_spec.rb +220 -0
  412. data/spec/ffi/errno_spec.rb +18 -0
  413. data/spec/ffi/ffi_spec.rb +29 -0
  414. data/spec/ffi/function_spec.rb +76 -0
  415. data/spec/ffi/library_spec.rb +216 -0
  416. data/spec/ffi/long_double.rb +30 -0
  417. data/spec/ffi/managed_struct_spec.rb +57 -0
  418. data/spec/ffi/number_spec.rb +236 -0
  419. data/spec/ffi/pointer_spec.rb +265 -0
  420. data/spec/ffi/rbx/attach_function_spec.rb +28 -0
  421. data/spec/ffi/rbx/memory_pointer_spec.rb +123 -0
  422. data/spec/ffi/rbx/spec_helper.rb +1 -0
  423. data/spec/ffi/rbx/struct_spec.rb +13 -0
  424. data/spec/ffi/spec_helper.rb +33 -0
  425. data/spec/ffi/string_spec.rb +108 -0
  426. data/spec/ffi/strptr_spec.rb +50 -0
  427. data/spec/ffi/struct_by_ref_spec.rb +43 -0
  428. data/spec/ffi/struct_callback_spec.rb +69 -0
  429. data/spec/ffi/struct_initialize_spec.rb +35 -0
  430. data/spec/ffi/struct_packed_spec.rb +51 -0
  431. data/spec/ffi/struct_spec.rb +748 -0
  432. data/spec/ffi/typedef_spec.rb +78 -0
  433. data/spec/ffi/union_spec.rb +65 -0
  434. data/spec/ffi/variadic_spec.rb +92 -0
  435. data/spec/spec.opts +4 -0
  436. metadata +562 -0
@@ -0,0 +1,468 @@
1
+ /* -----------------------------------------------------------------------
2
+ sysv.S - Copyright (c) 1996, 1998, 2001-2003, 2005, 2008, 2010 Red Hat, Inc.
3
+
4
+ X86 Foreign Function Interface
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ ``Software''), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included
15
+ in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
+ DEALINGS IN THE SOFTWARE.
25
+ ----------------------------------------------------------------------- */
26
+
27
+ #ifndef __x86_64__
28
+
29
+ #define LIBFFI_ASM
30
+ #include <fficonfig.h>
31
+ #include <ffi.h>
32
+
33
+ .text
34
+
35
+ .globl ffi_prep_args
36
+
37
+ .align 4
38
+ .globl ffi_call_SYSV
39
+ .type ffi_call_SYSV,@function
40
+
41
+ ffi_call_SYSV:
42
+ .LFB1:
43
+ pushl %ebp
44
+ .LCFI0:
45
+ movl %esp,%ebp
46
+ .LCFI1:
47
+ /* Make room for all of the new args. */
48
+ movl 16(%ebp),%ecx
49
+ subl %ecx,%esp
50
+
51
+ /* Align the stack pointer to 16-bytes */
52
+ andl $0xfffffff0, %esp
53
+
54
+ movl %esp,%eax
55
+
56
+ /* Place all of the ffi_prep_args in position */
57
+ pushl 12(%ebp)
58
+ pushl %eax
59
+ call *8(%ebp)
60
+
61
+ /* Return stack to previous state and call the function */
62
+ addl $8,%esp
63
+
64
+ call *28(%ebp)
65
+
66
+ /* Load %ecx with the return type code */
67
+ movl 20(%ebp),%ecx
68
+
69
+ /* Protect %esi. We're going to pop it in the epilogue. */
70
+ pushl %esi
71
+
72
+ /* If the return value pointer is NULL, assume no return value. */
73
+ cmpl $0,24(%ebp)
74
+ jne 0f
75
+
76
+ /* Even if there is no space for the return value, we are
77
+ obliged to handle floating-point values. */
78
+ cmpl $FFI_TYPE_FLOAT,%ecx
79
+ jne noretval
80
+ fstp %st(0)
81
+
82
+ jmp epilogue
83
+
84
+ 0:
85
+ call 1f
86
+
87
+ .Lstore_table:
88
+ .long noretval-.Lstore_table /* FFI_TYPE_VOID */
89
+ .long retint-.Lstore_table /* FFI_TYPE_INT */
90
+ .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */
91
+ .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */
92
+ .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */
93
+ .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */
94
+ .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */
95
+ .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */
96
+ .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */
97
+ .long retint-.Lstore_table /* FFI_TYPE_UINT32 */
98
+ .long retint-.Lstore_table /* FFI_TYPE_SINT32 */
99
+ .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */
100
+ .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */
101
+ .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */
102
+ .long retint-.Lstore_table /* FFI_TYPE_POINTER */
103
+
104
+ 1:
105
+ pop %esi
106
+ add (%esi, %ecx, 4), %esi
107
+ jmp *%esi
108
+
109
+ /* Sign/zero extend as appropriate. */
110
+ retsint8:
111
+ movsbl %al, %eax
112
+ jmp retint
113
+
114
+ retsint16:
115
+ movswl %ax, %eax
116
+ jmp retint
117
+
118
+ retuint8:
119
+ movzbl %al, %eax
120
+ jmp retint
121
+
122
+ retuint16:
123
+ movzwl %ax, %eax
124
+ jmp retint
125
+
126
+ retfloat:
127
+ /* Load %ecx with the pointer to storage for the return value */
128
+ movl 24(%ebp),%ecx
129
+ fstps (%ecx)
130
+ jmp epilogue
131
+
132
+ retdouble:
133
+ /* Load %ecx with the pointer to storage for the return value */
134
+ movl 24(%ebp),%ecx
135
+ fstpl (%ecx)
136
+ jmp epilogue
137
+
138
+ retlongdouble:
139
+ /* Load %ecx with the pointer to storage for the return value */
140
+ movl 24(%ebp),%ecx
141
+ fstpt (%ecx)
142
+ jmp epilogue
143
+
144
+ retint64:
145
+ /* Load %ecx with the pointer to storage for the return value */
146
+ movl 24(%ebp),%ecx
147
+ movl %eax,0(%ecx)
148
+ movl %edx,4(%ecx)
149
+ jmp epilogue
150
+
151
+ retint:
152
+ /* Load %ecx with the pointer to storage for the return value */
153
+ movl 24(%ebp),%ecx
154
+ movl %eax,0(%ecx)
155
+
156
+ retstruct:
157
+ /* Nothing to do! */
158
+
159
+ noretval:
160
+ epilogue:
161
+ popl %esi
162
+ movl %ebp,%esp
163
+ popl %ebp
164
+ ret
165
+ .LFE1:
166
+ .ffi_call_SYSV_end:
167
+ .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV
168
+
169
+ .align 4
170
+ FFI_HIDDEN (ffi_closure_SYSV)
171
+ .globl ffi_closure_SYSV
172
+ .type ffi_closure_SYSV, @function
173
+
174
+ ffi_closure_SYSV:
175
+ .LFB2:
176
+ pushl %ebp
177
+ .LCFI2:
178
+ movl %esp, %ebp
179
+ .LCFI3:
180
+ subl $40, %esp
181
+ leal -24(%ebp), %edx
182
+ movl %edx, -12(%ebp) /* resp */
183
+ leal 8(%ebp), %edx
184
+ movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */
185
+ leal -12(%ebp), %edx
186
+ movl %edx, (%esp) /* &resp */
187
+ #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__
188
+ call ffi_closure_SYSV_inner
189
+ #else
190
+ movl %ebx, 8(%esp)
191
+ .LCFI7:
192
+ call 1f
193
+ 1: popl %ebx
194
+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
195
+ call ffi_closure_SYSV_inner@PLT
196
+ movl 8(%esp), %ebx
197
+ #endif
198
+ movl -12(%ebp), %ecx
199
+ cmpl $FFI_TYPE_INT, %eax
200
+ je .Lcls_retint
201
+
202
+ /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16,
203
+ FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */
204
+ cmpl $FFI_TYPE_UINT64, %eax
205
+ jge 0f
206
+ cmpl $FFI_TYPE_UINT8, %eax
207
+ jge .Lcls_retint
208
+
209
+ 0: cmpl $FFI_TYPE_FLOAT, %eax
210
+ je .Lcls_retfloat
211
+ cmpl $FFI_TYPE_DOUBLE, %eax
212
+ je .Lcls_retdouble
213
+ cmpl $FFI_TYPE_LONGDOUBLE, %eax
214
+ je .Lcls_retldouble
215
+ cmpl $FFI_TYPE_SINT64, %eax
216
+ je .Lcls_retllong
217
+ cmpl $FFI_TYPE_STRUCT, %eax
218
+ je .Lcls_retstruct
219
+ .Lcls_epilogue:
220
+ movl %ebp, %esp
221
+ popl %ebp
222
+ ret
223
+ .Lcls_retint:
224
+ movl (%ecx), %eax
225
+ jmp .Lcls_epilogue
226
+ .Lcls_retfloat:
227
+ flds (%ecx)
228
+ jmp .Lcls_epilogue
229
+ .Lcls_retdouble:
230
+ fldl (%ecx)
231
+ jmp .Lcls_epilogue
232
+ .Lcls_retldouble:
233
+ fldt (%ecx)
234
+ jmp .Lcls_epilogue
235
+ .Lcls_retllong:
236
+ movl (%ecx), %eax
237
+ movl 4(%ecx), %edx
238
+ jmp .Lcls_epilogue
239
+ .Lcls_retstruct:
240
+ movl %ebp, %esp
241
+ popl %ebp
242
+ ret $4
243
+ .LFE2:
244
+ .size ffi_closure_SYSV, .-ffi_closure_SYSV
245
+
246
+ #if !FFI_NO_RAW_API
247
+
248
+ /* Precalculate for e.g. the Solaris 10/x86 assembler. */
249
+ #if FFI_TRAMPOLINE_SIZE == 10
250
+ #define RAW_CLOSURE_CIF_OFFSET 12
251
+ #define RAW_CLOSURE_FUN_OFFSET 16
252
+ #define RAW_CLOSURE_USER_DATA_OFFSET 20
253
+ #elif FFI_TRAMPOLINE_SIZE == 24
254
+ #define RAW_CLOSURE_CIF_OFFSET 24
255
+ #define RAW_CLOSURE_FUN_OFFSET 28
256
+ #define RAW_CLOSURE_USER_DATA_OFFSET 32
257
+ #else
258
+ #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3)
259
+ #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
260
+ #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
261
+ #endif
262
+ #define CIF_FLAGS_OFFSET 20
263
+
264
+ .align 4
265
+ FFI_HIDDEN (ffi_closure_raw_SYSV)
266
+ .globl ffi_closure_raw_SYSV
267
+ .type ffi_closure_raw_SYSV, @function
268
+
269
+ ffi_closure_raw_SYSV:
270
+ .LFB3:
271
+ pushl %ebp
272
+ .LCFI4:
273
+ movl %esp, %ebp
274
+ .LCFI5:
275
+ pushl %esi
276
+ .LCFI6:
277
+ subl $36, %esp
278
+ movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */
279
+ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
280
+ movl %edx, 12(%esp) /* user_data */
281
+ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */
282
+ movl %edx, 8(%esp) /* raw_args */
283
+ leal -24(%ebp), %edx
284
+ movl %edx, 4(%esp) /* &res */
285
+ movl %esi, (%esp) /* cif */
286
+ call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */
287
+ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */
288
+ cmpl $FFI_TYPE_INT, %eax
289
+ je .Lrcls_retint
290
+
291
+ /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16,
292
+ FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */
293
+ cmpl $FFI_TYPE_UINT64, %eax
294
+ jge 0f
295
+ cmpl $FFI_TYPE_UINT8, %eax
296
+ jge .Lrcls_retint
297
+ 0:
298
+ cmpl $FFI_TYPE_FLOAT, %eax
299
+ je .Lrcls_retfloat
300
+ cmpl $FFI_TYPE_DOUBLE, %eax
301
+ je .Lrcls_retdouble
302
+ cmpl $FFI_TYPE_LONGDOUBLE, %eax
303
+ je .Lrcls_retldouble
304
+ cmpl $FFI_TYPE_SINT64, %eax
305
+ je .Lrcls_retllong
306
+ .Lrcls_epilogue:
307
+ addl $36, %esp
308
+ popl %esi
309
+ popl %ebp
310
+ ret
311
+ .Lrcls_retint:
312
+ movl -24(%ebp), %eax
313
+ jmp .Lrcls_epilogue
314
+ .Lrcls_retfloat:
315
+ flds -24(%ebp)
316
+ jmp .Lrcls_epilogue
317
+ .Lrcls_retdouble:
318
+ fldl -24(%ebp)
319
+ jmp .Lrcls_epilogue
320
+ .Lrcls_retldouble:
321
+ fldt -24(%ebp)
322
+ jmp .Lrcls_epilogue
323
+ .Lrcls_retllong:
324
+ movl -24(%ebp), %eax
325
+ movl -20(%ebp), %edx
326
+ jmp .Lrcls_epilogue
327
+ .LFE3:
328
+ .size ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV
329
+ #endif
330
+
331
+ #if defined __PIC__
332
+ # if defined __sun__ && defined __svr4__
333
+ /* 32-bit Solaris 2/x86 uses datarel encoding for PIC. GNU ld before 2.22
334
+ doesn't correctly sort .eh_frame_hdr with mixed encodings, so match this. */
335
+ # define FDE_ENCODING 0x30 /* datarel */
336
+ # define FDE_ENCODE(X) X@GOTOFF
337
+ # else
338
+ # define FDE_ENCODING 0x1b /* pcrel sdata4 */
339
+ # if defined HAVE_AS_X86_PCREL
340
+ # define FDE_ENCODE(X) X-.
341
+ # else
342
+ # define FDE_ENCODE(X) X@rel
343
+ # endif
344
+ # endif
345
+ #else
346
+ # define FDE_ENCODING 0 /* absolute */
347
+ # define FDE_ENCODE(X) X
348
+ #endif
349
+
350
+ .section .eh_frame,EH_FRAME_FLAGS,@progbits
351
+ .Lframe1:
352
+ .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */
353
+ .LSCIE1:
354
+ .long 0x0 /* CIE Identifier Tag */
355
+ .byte 0x1 /* CIE Version */
356
+ #ifdef HAVE_AS_ASCII_PSEUDO_OP
357
+ #ifdef __PIC__
358
+ .ascii "zR\0" /* CIE Augmentation */
359
+ #else
360
+ .ascii "\0" /* CIE Augmentation */
361
+ #endif
362
+ #elif defined HAVE_AS_STRING_PSEUDO_OP
363
+ #ifdef __PIC__
364
+ .string "zR" /* CIE Augmentation */
365
+ #else
366
+ .string "" /* CIE Augmentation */
367
+ #endif
368
+ #else
369
+ #error missing .ascii/.string
370
+ #endif
371
+ .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */
372
+ .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */
373
+ .byte 0x8 /* CIE RA Column */
374
+ #ifdef __PIC__
375
+ .byte 0x1 /* .uleb128 0x1; Augmentation size */
376
+ .byte FDE_ENCODING
377
+ #endif
378
+ .byte 0xc /* DW_CFA_def_cfa */
379
+ .byte 0x4 /* .uleb128 0x4 */
380
+ .byte 0x4 /* .uleb128 0x4 */
381
+ .byte 0x88 /* DW_CFA_offset, column 0x8 */
382
+ .byte 0x1 /* .uleb128 0x1 */
383
+ .align 4
384
+ .LECIE1:
385
+ .LSFDE1:
386
+ .long .LEFDE1-.LASFDE1 /* FDE Length */
387
+ .LASFDE1:
388
+ .long .LASFDE1-.Lframe1 /* FDE CIE offset */
389
+ .long FDE_ENCODE(.LFB1) /* FDE initial location */
390
+ .long .LFE1-.LFB1 /* FDE address range */
391
+ #ifdef __PIC__
392
+ .byte 0x0 /* .uleb128 0x0; Augmentation size */
393
+ #endif
394
+ .byte 0x4 /* DW_CFA_advance_loc4 */
395
+ .long .LCFI0-.LFB1
396
+ .byte 0xe /* DW_CFA_def_cfa_offset */
397
+ .byte 0x8 /* .uleb128 0x8 */
398
+ .byte 0x85 /* DW_CFA_offset, column 0x5 */
399
+ .byte 0x2 /* .uleb128 0x2 */
400
+ .byte 0x4 /* DW_CFA_advance_loc4 */
401
+ .long .LCFI1-.LCFI0
402
+ .byte 0xd /* DW_CFA_def_cfa_register */
403
+ .byte 0x5 /* .uleb128 0x5 */
404
+ .align 4
405
+ .LEFDE1:
406
+ .LSFDE2:
407
+ .long .LEFDE2-.LASFDE2 /* FDE Length */
408
+ .LASFDE2:
409
+ .long .LASFDE2-.Lframe1 /* FDE CIE offset */
410
+ .long FDE_ENCODE(.LFB2) /* FDE initial location */
411
+ .long .LFE2-.LFB2 /* FDE address range */
412
+ #ifdef __PIC__
413
+ .byte 0x0 /* .uleb128 0x0; Augmentation size */
414
+ #endif
415
+ .byte 0x4 /* DW_CFA_advance_loc4 */
416
+ .long .LCFI2-.LFB2
417
+ .byte 0xe /* DW_CFA_def_cfa_offset */
418
+ .byte 0x8 /* .uleb128 0x8 */
419
+ .byte 0x85 /* DW_CFA_offset, column 0x5 */
420
+ .byte 0x2 /* .uleb128 0x2 */
421
+ .byte 0x4 /* DW_CFA_advance_loc4 */
422
+ .long .LCFI3-.LCFI2
423
+ .byte 0xd /* DW_CFA_def_cfa_register */
424
+ .byte 0x5 /* .uleb128 0x5 */
425
+ #if !defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE && defined __PIC__
426
+ .byte 0x4 /* DW_CFA_advance_loc4 */
427
+ .long .LCFI7-.LCFI3
428
+ .byte 0x83 /* DW_CFA_offset, column 0x3 */
429
+ .byte 0xa /* .uleb128 0xa */
430
+ #endif
431
+ .align 4
432
+ .LEFDE2:
433
+
434
+ #if !FFI_NO_RAW_API
435
+
436
+ .LSFDE3:
437
+ .long .LEFDE3-.LASFDE3 /* FDE Length */
438
+ .LASFDE3:
439
+ .long .LASFDE3-.Lframe1 /* FDE CIE offset */
440
+ .long FDE_ENCODE(.LFB3) /* FDE initial location */
441
+ .long .LFE3-.LFB3 /* FDE address range */
442
+ #ifdef __PIC__
443
+ .byte 0x0 /* .uleb128 0x0; Augmentation size */
444
+ #endif
445
+ .byte 0x4 /* DW_CFA_advance_loc4 */
446
+ .long .LCFI4-.LFB3
447
+ .byte 0xe /* DW_CFA_def_cfa_offset */
448
+ .byte 0x8 /* .uleb128 0x8 */
449
+ .byte 0x85 /* DW_CFA_offset, column 0x5 */
450
+ .byte 0x2 /* .uleb128 0x2 */
451
+ .byte 0x4 /* DW_CFA_advance_loc4 */
452
+ .long .LCFI5-.LCFI4
453
+ .byte 0xd /* DW_CFA_def_cfa_register */
454
+ .byte 0x5 /* .uleb128 0x5 */
455
+ .byte 0x4 /* DW_CFA_advance_loc4 */
456
+ .long .LCFI6-.LCFI5
457
+ .byte 0x86 /* DW_CFA_offset, column 0x6 */
458
+ .byte 0x3 /* .uleb128 0x3 */
459
+ .align 4
460
+ .LEFDE3:
461
+
462
+ #endif
463
+
464
+ #endif /* ifndef __x86_64__ */
465
+
466
+ #if defined __ELF__ && defined __linux__
467
+ .section .note.GNU-stack,"",@progbits
468
+ #endif