ffi 0.4.0-x86-mswin32

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 (316) hide show
  1. data/LICENSE +51 -0
  2. data/README.rdoc +69 -0
  3. data/Rakefile +142 -0
  4. data/ext/ffi_c/AbstractMemory.c +412 -0
  5. data/ext/ffi_c/AbstractMemory.h +68 -0
  6. data/ext/ffi_c/AutoPointer.c +60 -0
  7. data/ext/ffi_c/AutoPointer.h +18 -0
  8. data/ext/ffi_c/Buffer.c +171 -0
  9. data/ext/ffi_c/Callback.c +374 -0
  10. data/ext/ffi_c/Callback.h +47 -0
  11. data/ext/ffi_c/DynamicLibrary.c +213 -0
  12. data/ext/ffi_c/DynamicLibrary.h +22 -0
  13. data/ext/ffi_c/Invoker.c +962 -0
  14. data/ext/ffi_c/LastError.c +135 -0
  15. data/ext/ffi_c/LastError.h +18 -0
  16. data/ext/ffi_c/MemoryPointer.c +156 -0
  17. data/ext/ffi_c/MemoryPointer.h +20 -0
  18. data/ext/ffi_c/NullPointer.c +143 -0
  19. data/ext/ffi_c/Platform.c +59 -0
  20. data/ext/ffi_c/Platform.h +16 -0
  21. data/ext/ffi_c/Pointer.c +164 -0
  22. data/ext/ffi_c/Pointer.h +25 -0
  23. data/ext/ffi_c/Struct.c +477 -0
  24. data/ext/ffi_c/Struct.h +26 -0
  25. data/ext/ffi_c/Type.c +230 -0
  26. data/ext/ffi_c/Type.h +28 -0
  27. data/ext/ffi_c/Types.c +118 -0
  28. data/ext/ffi_c/Types.h +54 -0
  29. data/ext/ffi_c/compat.h +22 -0
  30. data/ext/ffi_c/endian.h +40 -0
  31. data/ext/ffi_c/extconf.rb +31 -0
  32. data/ext/ffi_c/ffi.c +76 -0
  33. data/ext/ffi_c/libffi.bsd.mk +34 -0
  34. data/ext/ffi_c/libffi.darwin.mk +75 -0
  35. data/ext/ffi_c/libffi.gnu.mk +29 -0
  36. data/ext/ffi_c/libffi.mk +13 -0
  37. data/ext/ffi_c/libffi/ChangeLog +3243 -0
  38. data/ext/ffi_c/libffi/ChangeLog.libffi +347 -0
  39. data/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
  40. data/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
  41. data/ext/ffi_c/libffi/LICENSE +21 -0
  42. data/ext/ffi_c/libffi/Makefile.am +177 -0
  43. data/ext/ffi_c/libffi/Makefile.in +1640 -0
  44. data/ext/ffi_c/libffi/README +328 -0
  45. data/ext/ffi_c/libffi/TODO +1 -0
  46. data/ext/ffi_c/libffi/acinclude.m4 +92 -0
  47. data/ext/ffi_c/libffi/aclocal.m4 +7516 -0
  48. data/ext/ffi_c/libffi/compile +142 -0
  49. data/ext/ffi_c/libffi/config.guess +1516 -0
  50. data/ext/ffi_c/libffi/config.sub +1626 -0
  51. data/ext/ffi_c/libffi/configure +24414 -0
  52. data/ext/ffi_c/libffi/configure.ac +365 -0
  53. data/ext/ffi_c/libffi/configure.host +11 -0
  54. data/ext/ffi_c/libffi/depcomp +584 -0
  55. data/ext/ffi_c/libffi/doc/libffi.info +533 -0
  56. data/ext/ffi_c/libffi/doc/libffi.texi +541 -0
  57. data/ext/ffi_c/libffi/doc/stamp-vti +4 -0
  58. data/ext/ffi_c/libffi/doc/version.texi +4 -0
  59. data/ext/ffi_c/libffi/fficonfig.h.in +160 -0
  60. data/ext/ffi_c/libffi/include/Makefile.am +9 -0
  61. data/ext/ffi_c/libffi/include/Makefile.in +422 -0
  62. data/ext/ffi_c/libffi/include/ffi.h.in +393 -0
  63. data/ext/ffi_c/libffi/include/ffi_common.h +98 -0
  64. data/ext/ffi_c/libffi/install-sh +323 -0
  65. data/ext/ffi_c/libffi/libffi.pc.in +10 -0
  66. data/ext/ffi_c/libffi/libtool-version +29 -0
  67. data/ext/ffi_c/libffi/ltcf-c.sh +861 -0
  68. data/ext/ffi_c/libffi/ltcf-cxx.sh +1069 -0
  69. data/ext/ffi_c/libffi/ltcf-gcj.sh +700 -0
  70. data/ext/ffi_c/libffi/ltconfig +2862 -0
  71. data/ext/ffi_c/libffi/ltmain.sh +6930 -0
  72. data/ext/ffi_c/libffi/man/Makefile.am +8 -0
  73. data/ext/ffi_c/libffi/man/Makefile.in +395 -0
  74. data/ext/ffi_c/libffi/man/ffi.3 +31 -0
  75. data/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
  76. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
  77. data/ext/ffi_c/libffi/mdate-sh +201 -0
  78. data/ext/ffi_c/libffi/missing +353 -0
  79. data/ext/ffi_c/libffi/mkinstalldirs +158 -0
  80. data/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
  81. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
  82. data/ext/ffi_c/libffi/src/alpha/osf.S +366 -0
  83. data/ext/ffi_c/libffi/src/arm/ffi.c +309 -0
  84. data/ext/ffi_c/libffi/src/arm/ffitarget.h +49 -0
  85. data/ext/ffi_c/libffi/src/arm/sysv.S +299 -0
  86. data/ext/ffi_c/libffi/src/closures.c +596 -0
  87. data/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
  88. data/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
  89. data/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
  90. data/ext/ffi_c/libffi/src/debug.c +59 -0
  91. data/ext/ffi_c/libffi/src/dlmalloc.c +5099 -0
  92. data/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
  93. data/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
  94. data/ext/ffi_c/libffi/src/frv/ffitarget.h +61 -0
  95. data/ext/ffi_c/libffi/src/ia64/ffi.c +580 -0
  96. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
  97. data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
  98. data/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
  99. data/ext/ffi_c/libffi/src/java_raw_api.c +359 -0
  100. data/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
  101. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
  102. data/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
  103. data/ext/ffi_c/libffi/src/m68k/ffi.c +278 -0
  104. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
  105. data/ext/ffi_c/libffi/src/m68k/sysv.S +234 -0
  106. data/ext/ffi_c/libffi/src/mips/ffi.c +926 -0
  107. data/ext/ffi_c/libffi/src/mips/ffitarget.h +202 -0
  108. data/ext/ffi_c/libffi/src/mips/n32.S +534 -0
  109. data/ext/ffi_c/libffi/src/mips/o32.S +381 -0
  110. data/ext/ffi_c/libffi/src/pa/ffi.c +709 -0
  111. data/ext/ffi_c/libffi/src/pa/ffitarget.h +77 -0
  112. data/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
  113. data/ext/ffi_c/libffi/src/pa/linux.S +357 -0
  114. data/ext/ffi_c/libffi/src/powerpc/aix.S +225 -0
  115. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +247 -0
  116. data/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
  117. data/ext/ffi_c/libffi/src/powerpc/darwin.S +245 -0
  118. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +317 -0
  119. data/ext/ffi_c/libffi/src/powerpc/ffi.c +1429 -0
  120. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +800 -0
  121. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +118 -0
  122. data/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
  123. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
  124. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
  125. data/ext/ffi_c/libffi/src/powerpc/sysv.S +230 -0
  126. data/ext/ffi_c/libffi/src/prep_cif.c +174 -0
  127. data/ext/ffi_c/libffi/src/raw_api.c +254 -0
  128. data/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
  129. data/ext/ffi_c/libffi/src/s390/ffitarget.h +60 -0
  130. data/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
  131. data/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
  132. data/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
  133. data/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
  134. data/ext/ffi_c/libffi/src/sh64/ffi.c +453 -0
  135. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
  136. data/ext/ffi_c/libffi/src/sh64/sysv.S +530 -0
  137. data/ext/ffi_c/libffi/src/sparc/ffi.c +610 -0
  138. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +66 -0
  139. data/ext/ffi_c/libffi/src/sparc/v8.S +272 -0
  140. data/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
  141. data/ext/ffi_c/libffi/src/types.c +77 -0
  142. data/ext/ffi_c/libffi/src/x86/darwin.S +443 -0
  143. data/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
  144. data/ext/ffi_c/libffi/src/x86/ffi.c +475 -0
  145. data/ext/ffi_c/libffi/src/x86/ffi64.c +572 -0
  146. data/ext/ffi_c/libffi/src/x86/ffitarget.h +90 -0
  147. data/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
  148. data/ext/ffi_c/libffi/src/x86/sysv.S +437 -0
  149. data/ext/ffi_c/libffi/src/x86/unix64.S +418 -0
  150. data/ext/ffi_c/libffi/src/x86/win32.S +391 -0
  151. data/ext/ffi_c/libffi/testsuite/Makefile.am +71 -0
  152. data/ext/ffi_c/libffi/testsuite/Makefile.in +447 -0
  153. data/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
  154. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +289 -0
  155. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
  156. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +36 -0
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +97 -0
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +89 -0
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +89 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +90 -0
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +97 -0
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +99 -0
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +98 -0
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +72 -0
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +102 -0
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +103 -0
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +104 -0
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +110 -0
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +97 -0
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +99 -0
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +101 -0
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +121 -0
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +98 -0
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +103 -0
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +98 -0
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +98 -0
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +106 -0
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +98 -0
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +117 -0
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +106 -0
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +132 -0
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +121 -0
  184. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +107 -0
  185. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +125 -0
  186. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +105 -0
  187. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +96 -0
  188. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +98 -0
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +99 -0
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +101 -0
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +99 -0
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +100 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +101 -0
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +99 -0
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +99 -0
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +99 -0
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +99 -0
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +99 -0
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +100 -0
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +51 -0
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +51 -0
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +82 -0
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +82 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +94 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +99 -0
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +82 -0
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +94 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +52 -0
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +50 -0
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +50 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +50 -0
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +51 -0
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +54 -0
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +51 -0
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +86 -0
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +57 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +160 -0
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +169 -0
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +141 -0
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +118 -0
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +119 -0
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +119 -0
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +120 -0
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +139 -0
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +119 -0
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +139 -0
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +139 -0
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +98 -0
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +42 -0
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
  263. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +86 -0
  264. data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +38 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +123 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
  267. data/ext/ffi_c/libffi/texinfo.tex +7482 -0
  268. data/ext/ffi_c/rbffi.h +23 -0
  269. data/gen/Rakefile +12 -0
  270. data/lib/1.8/ffi_c.so +0 -0
  271. data/lib/1.9/ffi_c.so +0 -0
  272. data/lib/ffi.rb +11 -0
  273. data/lib/ffi/autopointer.rb +61 -0
  274. data/lib/ffi/buffer.rb +0 -0
  275. data/lib/ffi/callback.rb +10 -0
  276. data/lib/ffi/enum.rb +78 -0
  277. data/lib/ffi/errno.rb +8 -0
  278. data/lib/ffi/ffi.rb +96 -0
  279. data/lib/ffi/io.rb +21 -0
  280. data/lib/ffi/library.rb +243 -0
  281. data/lib/ffi/managedstruct.rb +55 -0
  282. data/lib/ffi/memorypointer.rb +73 -0
  283. data/lib/ffi/platform.rb +78 -0
  284. data/lib/ffi/pointer.rb +119 -0
  285. data/lib/ffi/struct.rb +354 -0
  286. data/lib/ffi/tools/const_generator.rb +177 -0
  287. data/lib/ffi/tools/generator.rb +58 -0
  288. data/lib/ffi/tools/generator_task.rb +35 -0
  289. data/lib/ffi/tools/struct_generator.rb +194 -0
  290. data/lib/ffi/tools/types_generator.rb +123 -0
  291. data/lib/ffi/types.rb +153 -0
  292. data/lib/ffi/union.rb +17 -0
  293. data/lib/ffi/variadic.rb +30 -0
  294. data/spec/ffi/bool_spec.rb +24 -0
  295. data/spec/ffi/buffer_spec.rb +196 -0
  296. data/spec/ffi/callback_spec.rb +560 -0
  297. data/spec/ffi/enum_spec.rb +164 -0
  298. data/spec/ffi/errno_spec.rb +13 -0
  299. data/spec/ffi/library_spec.rb +144 -0
  300. data/spec/ffi/managed_struct_spec.rb +56 -0
  301. data/spec/ffi/number_spec.rb +231 -0
  302. data/spec/ffi/pointer_spec.rb +195 -0
  303. data/spec/ffi/rbx/attach_function_spec.rb +27 -0
  304. data/spec/ffi/rbx/memory_pointer_spec.rb +102 -0
  305. data/spec/ffi/rbx/spec_helper.rb +1 -0
  306. data/spec/ffi/rbx/struct_spec.rb +13 -0
  307. data/spec/ffi/spec_helper.rb +17 -0
  308. data/spec/ffi/string_spec.rb +103 -0
  309. data/spec/ffi/struct_callback_spec.rb +41 -0
  310. data/spec/ffi/struct_initialize_spec.rb +30 -0
  311. data/spec/ffi/struct_spec.rb +476 -0
  312. data/spec/ffi/typedef_spec.rb +48 -0
  313. data/spec/ffi/union_spec.rb +60 -0
  314. data/spec/ffi/variadic_spec.rb +84 -0
  315. data/spec/spec.opts +4 -0
  316. metadata +375 -0
@@ -0,0 +1,90 @@
1
+ /* -----------------------------------------------------------------*-C-*-
2
+ ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc.
3
+ Copyright (C) 2008 Free Software Foundation, Inc.
4
+
5
+ Target configuration macros for x86 and x86-64.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining
8
+ a copy of this software and associated documentation files (the
9
+ ``Software''), to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to
12
+ permit persons to whom the Software is furnished to do so, subject to
13
+ the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included
16
+ in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
+ DEALINGS IN THE SOFTWARE.
26
+
27
+ ----------------------------------------------------------------------- */
28
+
29
+ #ifndef LIBFFI_TARGET_H
30
+ #define LIBFFI_TARGET_H
31
+
32
+ /* ---- System specific configurations ----------------------------------- */
33
+
34
+ #if defined (X86_64) && defined (__i386__)
35
+ #undef X86_64
36
+ #define X86
37
+ #endif
38
+
39
+ /* ---- Generic type definitions ----------------------------------------- */
40
+
41
+ #ifndef LIBFFI_ASM
42
+ typedef unsigned long ffi_arg;
43
+ typedef signed long ffi_sarg;
44
+
45
+ typedef enum ffi_abi {
46
+ FFI_FIRST_ABI = 0,
47
+
48
+ /* ---- Intel x86 Win32 ---------- */
49
+ #ifdef X86_WIN32
50
+ FFI_SYSV,
51
+ FFI_STDCALL,
52
+ /* TODO: Add fastcall support for the sake of completeness */
53
+ FFI_DEFAULT_ABI = FFI_SYSV,
54
+ #endif
55
+
56
+ /* ---- Intel x86 and AMD x86-64 - */
57
+ #if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__))
58
+ FFI_SYSV,
59
+ FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */
60
+ #ifdef __i386__
61
+ FFI_DEFAULT_ABI = FFI_SYSV,
62
+ #else
63
+ FFI_DEFAULT_ABI = FFI_UNIX64,
64
+ #endif
65
+ #endif
66
+
67
+ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
68
+ } ffi_abi;
69
+ #endif
70
+
71
+ /* ---- Definitions for closures ----------------------------------------- */
72
+
73
+ #define FFI_CLOSURES 1
74
+ #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
75
+ #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
76
+
77
+ #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
78
+ #define FFI_TRAMPOLINE_SIZE 24
79
+ #define FFI_NATIVE_RAW_API 0
80
+ #else
81
+ #ifdef X86_WIN32
82
+ #define FFI_TRAMPOLINE_SIZE 13
83
+ #else
84
+ #define FFI_TRAMPOLINE_SIZE 10
85
+ #endif
86
+ #define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
87
+ #endif
88
+
89
+ #endif
90
+
@@ -0,0 +1,458 @@
1
+ /* -----------------------------------------------------------------------
2
+ freebsd.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc.
3
+ Copyright (c) 2008 Björn König
4
+
5
+ X86 Foreign Function Interface for FreeBSD
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining
8
+ a copy of this software and associated documentation files (the
9
+ ``Software''), to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to
12
+ permit persons to whom the Software is furnished to do so, subject to
13
+ the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included
16
+ in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
+ DEALINGS IN THE SOFTWARE.
26
+ ----------------------------------------------------------------------- */
27
+
28
+ #ifndef __x86_64__
29
+
30
+ #define LIBFFI_ASM
31
+ #include <fficonfig.h>
32
+ #include <ffi.h>
33
+
34
+ .text
35
+
36
+ .globl ffi_prep_args
37
+
38
+ .align 4
39
+ .globl ffi_call_SYSV
40
+ .type ffi_call_SYSV,@function
41
+
42
+ ffi_call_SYSV:
43
+ .LFB1:
44
+ pushl %ebp
45
+ .LCFI0:
46
+ movl %esp,%ebp
47
+ .LCFI1:
48
+ /* Make room for all of the new args. */
49
+ movl 16(%ebp),%ecx
50
+ subl %ecx,%esp
51
+
52
+ movl %esp,%eax
53
+
54
+ /* Place all of the ffi_prep_args in position */
55
+ pushl 12(%ebp)
56
+ pushl %eax
57
+ call *8(%ebp)
58
+
59
+ /* Return stack to previous state and call the function */
60
+ addl $8,%esp
61
+
62
+ call *28(%ebp)
63
+
64
+ /* Load %ecx with the return type code */
65
+ movl 20(%ebp),%ecx
66
+
67
+ /* Protect %esi. We're going to pop it in the epilogue. */
68
+ pushl %esi
69
+
70
+ /* If the return value pointer is NULL, assume no return value. */
71
+ cmpl $0,24(%ebp)
72
+ jne 0f
73
+
74
+ /* Even if there is no space for the return value, we are
75
+ obliged to handle floating-point values. */
76
+ cmpl $FFI_TYPE_FLOAT,%ecx
77
+ jne noretval
78
+ fstp %st(0)
79
+
80
+ jmp epilogue
81
+
82
+ 0:
83
+ call 1f
84
+
85
+ .Lstore_table:
86
+ .long noretval-.Lstore_table /* FFI_TYPE_VOID */
87
+ .long retint-.Lstore_table /* FFI_TYPE_INT */
88
+ .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */
89
+ .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */
90
+ .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */
91
+ .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */
92
+ .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */
93
+ .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */
94
+ .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */
95
+ .long retint-.Lstore_table /* FFI_TYPE_UINT32 */
96
+ .long retint-.Lstore_table /* FFI_TYPE_SINT32 */
97
+ .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */
98
+ .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */
99
+ .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */
100
+ .long retint-.Lstore_table /* FFI_TYPE_POINTER */
101
+ .long retstruct1b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_1B */
102
+ .long retstruct2b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_2B */
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
+ retstruct1b:
152
+ /* Load %ecx with the pointer to storage for the return value */
153
+ movl 24(%ebp),%ecx
154
+ movb %al,0(%ecx)
155
+ jmp epilogue
156
+
157
+ retstruct2b:
158
+ /* Load %ecx with the pointer to storage for the return value */
159
+ movl 24(%ebp),%ecx
160
+ movw %ax,0(%ecx)
161
+ jmp epilogue
162
+
163
+ retint:
164
+ /* Load %ecx with the pointer to storage for the return value */
165
+ movl 24(%ebp),%ecx
166
+ movl %eax,0(%ecx)
167
+
168
+ retstruct:
169
+ /* Nothing to do! */
170
+
171
+ noretval:
172
+ epilogue:
173
+ popl %esi
174
+ movl %ebp,%esp
175
+ popl %ebp
176
+ ret
177
+ .LFE1:
178
+ .ffi_call_SYSV_end:
179
+ .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV
180
+
181
+ .align 4
182
+ FFI_HIDDEN (ffi_closure_SYSV)
183
+ .globl ffi_closure_SYSV
184
+ .type ffi_closure_SYSV, @function
185
+
186
+ ffi_closure_SYSV:
187
+ .LFB2:
188
+ pushl %ebp
189
+ .LCFI2:
190
+ movl %esp, %ebp
191
+ .LCFI3:
192
+ subl $40, %esp
193
+ leal -24(%ebp), %edx
194
+ movl %edx, -12(%ebp) /* resp */
195
+ leal 8(%ebp), %edx
196
+ movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */
197
+ leal -12(%ebp), %edx
198
+ movl %edx, (%esp) /* &resp */
199
+ #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__
200
+ call ffi_closure_SYSV_inner
201
+ #else
202
+ movl %ebx, 8(%esp)
203
+ .LCFI7:
204
+ call 1f
205
+ 1: popl %ebx
206
+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
207
+ call ffi_closure_SYSV_inner@PLT
208
+ movl 8(%esp), %ebx
209
+ #endif
210
+ movl -12(%ebp), %ecx
211
+ cmpl $FFI_TYPE_INT, %eax
212
+ je .Lcls_retint
213
+
214
+ /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16,
215
+ FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */
216
+ cmpl $FFI_TYPE_UINT64, %eax
217
+ jge 0f
218
+ cmpl $FFI_TYPE_UINT8, %eax
219
+ jge .Lcls_retint
220
+
221
+ 0: cmpl $FFI_TYPE_FLOAT, %eax
222
+ je .Lcls_retfloat
223
+ cmpl $FFI_TYPE_DOUBLE, %eax
224
+ je .Lcls_retdouble
225
+ cmpl $FFI_TYPE_LONGDOUBLE, %eax
226
+ je .Lcls_retldouble
227
+ cmpl $FFI_TYPE_SINT64, %eax
228
+ je .Lcls_retllong
229
+ cmpl $FFI_TYPE_SMALL_STRUCT_1B, %eax
230
+ je .Lcls_retstruct1b
231
+ cmpl $FFI_TYPE_SMALL_STRUCT_2B, %eax
232
+ je .Lcls_retstruct2b
233
+ cmpl $FFI_TYPE_STRUCT, %eax
234
+ je .Lcls_retstruct
235
+ .Lcls_epilogue:
236
+ movl %ebp, %esp
237
+ popl %ebp
238
+ ret
239
+ .Lcls_retint:
240
+ movl (%ecx), %eax
241
+ jmp .Lcls_epilogue
242
+ .Lcls_retfloat:
243
+ flds (%ecx)
244
+ jmp .Lcls_epilogue
245
+ .Lcls_retdouble:
246
+ fldl (%ecx)
247
+ jmp .Lcls_epilogue
248
+ .Lcls_retldouble:
249
+ fldt (%ecx)
250
+ jmp .Lcls_epilogue
251
+ .Lcls_retllong:
252
+ movl (%ecx), %eax
253
+ movl 4(%ecx), %edx
254
+ jmp .Lcls_epilogue
255
+ .Lcls_retstruct1b:
256
+ movsbl (%ecx), %eax
257
+ jmp .Lcls_epilogue
258
+ .Lcls_retstruct2b:
259
+ movswl (%ecx), %eax
260
+ jmp .Lcls_epilogue
261
+ .Lcls_retstruct:
262
+ movl %ebp, %esp
263
+ popl %ebp
264
+ ret $4
265
+ .LFE2:
266
+ .size ffi_closure_SYSV, .-ffi_closure_SYSV
267
+
268
+ #if !FFI_NO_RAW_API
269
+
270
+ #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3)
271
+ #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
272
+ #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
273
+ #define CIF_FLAGS_OFFSET 20
274
+
275
+ .align 4
276
+ FFI_HIDDEN (ffi_closure_raw_SYSV)
277
+ .globl ffi_closure_raw_SYSV
278
+ .type ffi_closure_raw_SYSV, @function
279
+
280
+ ffi_closure_raw_SYSV:
281
+ .LFB3:
282
+ pushl %ebp
283
+ .LCFI4:
284
+ movl %esp, %ebp
285
+ .LCFI5:
286
+ pushl %esi
287
+ .LCFI6:
288
+ subl $36, %esp
289
+ movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */
290
+ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
291
+ movl %edx, 12(%esp) /* user_data */
292
+ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */
293
+ movl %edx, 8(%esp) /* raw_args */
294
+ leal -24(%ebp), %edx
295
+ movl %edx, 4(%esp) /* &res */
296
+ movl %esi, (%esp) /* cif */
297
+ call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */
298
+ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */
299
+ cmpl $FFI_TYPE_INT, %eax
300
+ je .Lrcls_retint
301
+
302
+ /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16,
303
+ FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */
304
+ cmpl $FFI_TYPE_UINT64, %eax
305
+ jge 0f
306
+ cmpl $FFI_TYPE_UINT8, %eax
307
+ jge .Lrcls_retint
308
+ 0:
309
+ cmpl $FFI_TYPE_FLOAT, %eax
310
+ je .Lrcls_retfloat
311
+ cmpl $FFI_TYPE_DOUBLE, %eax
312
+ je .Lrcls_retdouble
313
+ cmpl $FFI_TYPE_LONGDOUBLE, %eax
314
+ je .Lrcls_retldouble
315
+ cmpl $FFI_TYPE_SINT64, %eax
316
+ je .Lrcls_retllong
317
+ .Lrcls_epilogue:
318
+ addl $36, %esp
319
+ popl %esi
320
+ popl %ebp
321
+ ret
322
+ .Lrcls_retint:
323
+ movl -24(%ebp), %eax
324
+ jmp .Lrcls_epilogue
325
+ .Lrcls_retfloat:
326
+ flds -24(%ebp)
327
+ jmp .Lrcls_epilogue
328
+ .Lrcls_retdouble:
329
+ fldl -24(%ebp)
330
+ jmp .Lrcls_epilogue
331
+ .Lrcls_retldouble:
332
+ fldt -24(%ebp)
333
+ jmp .Lrcls_epilogue
334
+ .Lrcls_retllong:
335
+ movl -24(%ebp), %eax
336
+ movl -20(%ebp), %edx
337
+ jmp .Lrcls_epilogue
338
+ .LFE3:
339
+ .size ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV
340
+ #endif
341
+
342
+ .section .eh_frame,EH_FRAME_FLAGS,@progbits
343
+ .Lframe1:
344
+ .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */
345
+ .LSCIE1:
346
+ .long 0x0 /* CIE Identifier Tag */
347
+ .byte 0x1 /* CIE Version */
348
+ #ifdef __PIC__
349
+ .ascii "zR\0" /* CIE Augmentation */
350
+ #else
351
+ .ascii "\0" /* CIE Augmentation */
352
+ #endif
353
+ .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */
354
+ .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */
355
+ .byte 0x8 /* CIE RA Column */
356
+ #ifdef __PIC__
357
+ .byte 0x1 /* .uleb128 0x1; Augmentation size */
358
+ .byte 0x1b /* FDE Encoding (pcrel sdata4) */
359
+ #endif
360
+ .byte 0xc /* DW_CFA_def_cfa */
361
+ .byte 0x4 /* .uleb128 0x4 */
362
+ .byte 0x4 /* .uleb128 0x4 */
363
+ .byte 0x88 /* DW_CFA_offset, column 0x8 */
364
+ .byte 0x1 /* .uleb128 0x1 */
365
+ .align 4
366
+ .LECIE1:
367
+ .LSFDE1:
368
+ .long .LEFDE1-.LASFDE1 /* FDE Length */
369
+ .LASFDE1:
370
+ .long .LASFDE1-.Lframe1 /* FDE CIE offset */
371
+ #ifdef __PIC__
372
+ .long .LFB1-. /* FDE initial location */
373
+ #else
374
+ .long .LFB1 /* FDE initial location */
375
+ #endif
376
+ .long .LFE1-.LFB1 /* FDE address range */
377
+ #ifdef __PIC__
378
+ .byte 0x0 /* .uleb128 0x0; Augmentation size */
379
+ #endif
380
+ .byte 0x4 /* DW_CFA_advance_loc4 */
381
+ .long .LCFI0-.LFB1
382
+ .byte 0xe /* DW_CFA_def_cfa_offset */
383
+ .byte 0x8 /* .uleb128 0x8 */
384
+ .byte 0x85 /* DW_CFA_offset, column 0x5 */
385
+ .byte 0x2 /* .uleb128 0x2 */
386
+ .byte 0x4 /* DW_CFA_advance_loc4 */
387
+ .long .LCFI1-.LCFI0
388
+ .byte 0xd /* DW_CFA_def_cfa_register */
389
+ .byte 0x5 /* .uleb128 0x5 */
390
+ .align 4
391
+ .LEFDE1:
392
+ .LSFDE2:
393
+ .long .LEFDE2-.LASFDE2 /* FDE Length */
394
+ .LASFDE2:
395
+ .long .LASFDE2-.Lframe1 /* FDE CIE offset */
396
+ #ifdef __PIC__
397
+ .long .LFB2-. /* FDE initial location */
398
+ #else
399
+ .long .LFB2
400
+ #endif
401
+ .long .LFE2-.LFB2 /* FDE address range */
402
+ #ifdef __PIC__
403
+ .byte 0x0 /* .uleb128 0x0; Augmentation size */
404
+ #endif
405
+ .byte 0x4 /* DW_CFA_advance_loc4 */
406
+ .long .LCFI2-.LFB2
407
+ .byte 0xe /* DW_CFA_def_cfa_offset */
408
+ .byte 0x8 /* .uleb128 0x8 */
409
+ .byte 0x85 /* DW_CFA_offset, column 0x5 */
410
+ .byte 0x2 /* .uleb128 0x2 */
411
+ .byte 0x4 /* DW_CFA_advance_loc4 */
412
+ .long .LCFI3-.LCFI2
413
+ .byte 0xd /* DW_CFA_def_cfa_register */
414
+ .byte 0x5 /* .uleb128 0x5 */
415
+ #if !defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE && defined __PIC__
416
+ .byte 0x4 /* DW_CFA_advance_loc4 */
417
+ .long .LCFI7-.LCFI3
418
+ .byte 0x83 /* DW_CFA_offset, column 0x3 */
419
+ .byte 0xa /* .uleb128 0xa */
420
+ #endif
421
+ .align 4
422
+ .LEFDE2:
423
+
424
+ #if !FFI_NO_RAW_API
425
+
426
+ .LSFDE3:
427
+ .long .LEFDE3-.LASFDE3 /* FDE Length */
428
+ .LASFDE3:
429
+ .long .LASFDE3-.Lframe1 /* FDE CIE offset */
430
+ #ifdef __PIC__
431
+ .long .LFB3-. /* FDE initial location */
432
+ #else
433
+ .long .LFB3
434
+ #endif
435
+ .long .LFE3-.LFB3 /* FDE address range */
436
+ #ifdef __PIC__
437
+ .byte 0x0 /* .uleb128 0x0; Augmentation size */
438
+ #endif
439
+ .byte 0x4 /* DW_CFA_advance_loc4 */
440
+ .long .LCFI4-.LFB3
441
+ .byte 0xe /* DW_CFA_def_cfa_offset */
442
+ .byte 0x8 /* .uleb128 0x8 */
443
+ .byte 0x85 /* DW_CFA_offset, column 0x5 */
444
+ .byte 0x2 /* .uleb128 0x2 */
445
+ .byte 0x4 /* DW_CFA_advance_loc4 */
446
+ .long .LCFI5-.LCFI4
447
+ .byte 0xd /* DW_CFA_def_cfa_register */
448
+ .byte 0x5 /* .uleb128 0x5 */
449
+ .byte 0x4 /* DW_CFA_advance_loc4 */
450
+ .long .LCFI6-.LCFI5
451
+ .byte 0x86 /* DW_CFA_offset, column 0x6 */
452
+ .byte 0x3 /* .uleb128 0x3 */
453
+ .align 4
454
+ .LEFDE3:
455
+
456
+ #endif
457
+
458
+ #endif /* ifndef __x86_64__ */