ffi 1.9.3-x64-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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,496 @@
1
+ dnl Process this with autoconf to create configure
2
+
3
+ AC_PREREQ(2.63)
4
+
5
+ AC_INIT([libffi], [3.0.10], [http://sourceware.org/libffi.html])
6
+ AC_CONFIG_HEADERS([fficonfig.h])
7
+
8
+ AC_CANONICAL_SYSTEM
9
+ target_alias=${target_alias-$host_alias}
10
+
11
+ . ${srcdir}/configure.host
12
+
13
+ AX_ENABLE_BUILDDIR
14
+
15
+ AM_INIT_AUTOMAKE
16
+
17
+ # The same as in boehm-gc and libstdc++. Have to borrow it from there.
18
+ # We must force CC to /not/ be precious variables; otherwise
19
+ # the wrong, non-multilib-adjusted value will be used in multilibs.
20
+ # As a side effect, we have to subst CFLAGS ourselves.
21
+ # Also save and restore CFLAGS, since AC_PROG_CC will come up with
22
+ # defaults of its own if none are provided.
23
+
24
+ m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
25
+ m4_define([_AC_ARG_VAR_PRECIOUS],[])
26
+ save_CFLAGS=$CFLAGS
27
+ AC_PROG_CC
28
+ CFLAGS=$save_CFLAGS
29
+ m4_undefine([_AC_ARG_VAR_PRECIOUS])
30
+ m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
31
+
32
+ AC_SUBST(CFLAGS)
33
+
34
+ AM_PROG_AS
35
+ AM_PROG_CC_C_O
36
+ AC_PROG_LIBTOOL
37
+ AC_CONFIG_MACRO_DIR([m4])
38
+
39
+ AX_CC_MAXOPT
40
+ AX_CFLAGS_WARN_ALL
41
+ if test "x$GCC" = "xyes"; then
42
+ CFLAGS="$CFLAGS -fexceptions"
43
+ fi
44
+
45
+ AM_MAINTAINER_MODE
46
+
47
+ AC_CHECK_HEADERS(sys/mman.h)
48
+ AC_CHECK_FUNCS(mmap)
49
+ AC_FUNC_MMAP_BLACKLIST
50
+
51
+ dnl The -no-testsuite modules omit the test subdir.
52
+ AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
53
+
54
+ TARGETDIR="unknown"
55
+ case "$host" in
56
+ alpha*-*-*)
57
+ TARGET=ALPHA; TARGETDIR=alpha;
58
+ # Support 128-bit long double, changeable via command-line switch.
59
+ HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
60
+ ;;
61
+
62
+ arm*-*-*)
63
+ TARGET=ARM; TARGETDIR=arm
64
+ ;;
65
+
66
+ amd64-*-freebsd* | amd64-*-openbsd*)
67
+ TARGET=X86_64; TARGETDIR=x86
68
+ ;;
69
+
70
+ amd64-*-freebsd*)
71
+ TARGET=X86_64; TARGETDIR=x86
72
+ ;;
73
+
74
+ avr32*-*-*)
75
+ TARGET=AVR32; TARGETDIR=avr32
76
+ ;;
77
+
78
+ cris-*-*)
79
+ TARGET=LIBFFI_CRIS; TARGETDIR=cris
80
+ ;;
81
+
82
+ frv-*-*)
83
+ TARGET=FRV; TARGETDIR=frv
84
+ ;;
85
+
86
+ hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
87
+ TARGET=PA_LINUX; TARGETDIR=pa
88
+ ;;
89
+ hppa*64-*-hpux*)
90
+ TARGET=PA64_HPUX; TARGETDIR=pa
91
+ ;;
92
+ hppa*-*-hpux*)
93
+ TARGET=PA_HPUX; TARGETDIR=pa
94
+ ;;
95
+
96
+ i?86-*-freebsd* | i?86-*-openbsd*)
97
+ TARGET=X86_FREEBSD; TARGETDIR=x86
98
+ ;;
99
+ i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
100
+ TARGET=X86_WIN32; TARGETDIR=x86
101
+ # All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
102
+ # We must also check with_cross_host to decide if this is a native
103
+ # or cross-build and select where to install dlls appropriately.
104
+ if test -n "$with_cross_host" &&
105
+ test x"$with_cross_host" != x"no"; then
106
+ AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
107
+ else
108
+ AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
109
+ fi
110
+ ;;
111
+ i?86-*-darwin*)
112
+ TARGET=X86_DARWIN; TARGETDIR=x86
113
+ ;;
114
+ i?86-*-solaris2.1[[0-9]]*)
115
+ TARGET=X86_64; TARGETDIR=x86
116
+ ;;
117
+ i?86-*-*)
118
+ TARGET=X86; TARGETDIR=x86
119
+ ;;
120
+
121
+ ia64*-*-*)
122
+ TARGET=IA64; TARGETDIR=ia64
123
+ ;;
124
+
125
+ m32r*-*-*)
126
+ TARGET=M32R; TARGETDIR=m32r
127
+ ;;
128
+
129
+ m68k-*-*)
130
+ TARGET=M68K; TARGETDIR=m68k
131
+ ;;
132
+
133
+ mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
134
+ TARGET=MIPS; TARGETDIR=mips
135
+ ;;
136
+ mips*-*-linux* | mips*-*-openbsd*)
137
+ # Support 128-bit long double for NewABI.
138
+ HAVE_LONG_DOUBLE='defined(__mips64)'
139
+ TARGET=MIPS; TARGETDIR=mips
140
+ ;;
141
+
142
+ powerpc*-*-linux* | powerpc-*-sysv*)
143
+ TARGET=POWERPC; TARGETDIR=powerpc
144
+ ;;
145
+ powerpc-*-beos*)
146
+ TARGET=POWERPC; TARGETDIR=powerpc
147
+ ;;
148
+ powerpc-*-darwin* | powerpc64-*-darwin*)
149
+ TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
150
+ ;;
151
+ powerpc-*-aix* | rs6000-*-aix*)
152
+ TARGET=POWERPC_AIX; TARGETDIR=powerpc
153
+ ;;
154
+ powerpc-*-freebsd* | powerpc-*-openbsd*)
155
+ TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
156
+ ;;
157
+ powerpc64-*-freebsd*)
158
+ TARGET=POWERPC; TARGETDIR=powerpc
159
+ ;;
160
+ powerpc*-*-rtems*)
161
+ TARGET=POWERPC; TARGETDIR=powerpc
162
+ ;;
163
+
164
+ s390-*-* | s390x-*-*)
165
+ TARGET=S390; TARGETDIR=s390
166
+ ;;
167
+
168
+ sh-*-* | sh[[34]]*-*-*)
169
+ TARGET=SH; TARGETDIR=sh
170
+ ;;
171
+ sh64-*-* | sh5*-*-*)
172
+ TARGET=SH64; TARGETDIR=sh64
173
+ ;;
174
+
175
+ sparc*-*-*)
176
+ TARGET=SPARC; TARGETDIR=sparc
177
+ ;;
178
+
179
+ x86_64-*-darwin*)
180
+ TARGET=X86_DARWIN; TARGETDIR=x86
181
+ ;;
182
+
183
+ x86_64-*-cygwin* | x86_64-*-mingw*)
184
+ TARGET=X86_WIN64; TARGETDIR=x86
185
+ ;;
186
+
187
+ x86_64-*-*)
188
+ TARGET=X86_64; TARGETDIR=x86
189
+ ;;
190
+ esac
191
+
192
+ AC_SUBST(AM_RUNTESTFLAGS)
193
+ AC_SUBST(AM_LTLDFLAGS)
194
+
195
+ if test $TARGETDIR = unknown; then
196
+ AC_MSG_ERROR(["libffi has not been ported to $host."])
197
+ fi
198
+
199
+ AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
200
+ AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
201
+ AM_CONDITIONAL(X86, test x$TARGET = xX86)
202
+ AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD)
203
+ AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32)
204
+ AM_CONDITIONAL(X86_WIN64, test x$TARGET = xX86_WIN64)
205
+ AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN)
206
+ AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
207
+ AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
208
+ AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
209
+ AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
210
+ AM_CONDITIONAL(MOXIE, test x$TARGET = xMOXIE)
211
+ AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
212
+ AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
213
+ AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
214
+ AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD)
215
+ AM_CONDITIONAL(ARM, test x$TARGET = xARM)
216
+ AM_CONDITIONAL(AVR32, test x$TARGET = xAVR32)
217
+ AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS)
218
+ AM_CONDITIONAL(FRV, test x$TARGET = xFRV)
219
+ AM_CONDITIONAL(S390, test x$TARGET = xS390)
220
+ AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64)
221
+ AM_CONDITIONAL(SH, test x$TARGET = xSH)
222
+ AM_CONDITIONAL(SH64, test x$TARGET = xSH64)
223
+ AM_CONDITIONAL(PA_LINUX, test x$TARGET = xPA_LINUX)
224
+ AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX)
225
+ AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX)
226
+
227
+ AC_HEADER_STDC
228
+ AC_CHECK_FUNCS(memcpy)
229
+ AC_FUNC_ALLOCA
230
+
231
+ AC_CHECK_SIZEOF(double)
232
+ AC_CHECK_SIZEOF(long double)
233
+
234
+ # Also AC_SUBST this variable for ffi.h.
235
+ if test -z "$HAVE_LONG_DOUBLE"; then
236
+ HAVE_LONG_DOUBLE=0
237
+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
238
+ if test $ac_cv_sizeof_long_double != 0; then
239
+ HAVE_LONG_DOUBLE=1
240
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
241
+ fi
242
+ fi
243
+ fi
244
+ AC_SUBST(HAVE_LONG_DOUBLE)
245
+
246
+ AC_C_BIGENDIAN
247
+
248
+ AC_CACHE_CHECK([assembler .cfi pseudo-op support],
249
+ libffi_cv_as_cfi_pseudo_op, [
250
+ libffi_cv_as_cfi_pseudo_op=unknown
251
+ AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
252
+ [libffi_cv_as_cfi_pseudo_op=yes],
253
+ [libffi_cv_as_cfi_pseudo_op=no])
254
+ ])
255
+ if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
256
+ AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
257
+ [Define if your assembler supports .cfi_* directives.])
258
+ fi
259
+
260
+ if test x$TARGET = xSPARC; then
261
+ AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
262
+ libffi_cv_as_sparc_ua_pcrel, [
263
+ save_CFLAGS="$CFLAGS"
264
+ save_LDFLAGS="$LDFLAGS"
265
+ CFLAGS="$CFLAGS -fpic"
266
+ LDFLAGS="$LDFLAGS -shared"
267
+ AC_TRY_LINK([asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text");],,
268
+ [libffi_cv_as_sparc_ua_pcrel=yes],
269
+ [libffi_cv_as_sparc_ua_pcrel=no])
270
+ CFLAGS="$save_CFLAGS"
271
+ LDFLAGS="$save_LDFLAGS"])
272
+ if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then
273
+ AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
274
+ [Define if your assembler and linker support unaligned PC relative relocs.])
275
+ fi
276
+
277
+ AC_CACHE_CHECK([assembler .register pseudo-op support],
278
+ libffi_cv_as_register_pseudo_op, [
279
+ libffi_cv_as_register_pseudo_op=unknown
280
+ # Check if we have .register
281
+ AC_TRY_COMPILE([asm (".register %g2, #scratch");],,
282
+ [libffi_cv_as_register_pseudo_op=yes],
283
+ [libffi_cv_as_register_pseudo_op=no])
284
+ ])
285
+ if test "x$libffi_cv_as_register_pseudo_op" = xyes; then
286
+ AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
287
+ [Define if your assembler supports .register.])
288
+ fi
289
+ fi
290
+
291
+ if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
292
+ AC_CACHE_CHECK([assembler supports pc related relocs],
293
+ libffi_cv_as_x86_pcrel, [
294
+ libffi_cv_as_x86_pcrel=no
295
+ echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
296
+ if $CC $CFLAGS -c conftest.s > /dev/null; then
297
+ libffi_cv_as_x86_pcrel=yes
298
+ fi
299
+ ])
300
+ if test "x$libffi_cv_as_x86_pcrel" = xyes; then
301
+ AC_DEFINE(HAVE_AS_X86_PCREL, 1,
302
+ [Define if your assembler supports PC relative relocs.])
303
+ fi
304
+
305
+ AC_CACHE_CHECK([assembler .ascii pseudo-op support],
306
+ libffi_cv_as_ascii_pseudo_op, [
307
+ libffi_cv_as_ascii_pseudo_op=unknown
308
+ # Check if we have .ascii
309
+ AC_TRY_COMPILE([asm (".ascii \\"string\\"");],,
310
+ [libffi_cv_as_ascii_pseudo_op=yes],
311
+ [libffi_cv_as_ascii_pseudo_op=no])
312
+ ])
313
+ if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then
314
+ AC_DEFINE(HAVE_AS_ASCII_PSEUDO_OP, 1,
315
+ [Define if your assembler supports .ascii.])
316
+ fi
317
+
318
+ AC_CACHE_CHECK([assembler .string pseudo-op support],
319
+ libffi_cv_as_string_pseudo_op, [
320
+ libffi_cv_as_string_pseudo_op=unknown
321
+ # Check if we have .string
322
+ AC_TRY_COMPILE([asm (".string \\"string\\"");],,
323
+ [libffi_cv_as_string_pseudo_op=yes],
324
+ [libffi_cv_as_string_pseudo_op=no])
325
+ ])
326
+ if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
327
+ AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
328
+ [Define if your assembler supports .string.])
329
+ fi
330
+ fi
331
+
332
+ if test x$TARGET = xX86_WIN64; then
333
+ LT_SYS_SYMBOL_USCORE
334
+ if test "x$sys_symbol_underscore" = xyes; then
335
+ AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
336
+ fi
337
+ fi
338
+
339
+
340
+ FFI_EXEC_TRAMPOLINE_TABLE=0
341
+ case "$target" in
342
+ *arm*-apple-darwin*)
343
+ FFI_EXEC_TRAMPOLINE_TABLE=1
344
+ AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1,
345
+ [Cannot use PROT_EXEC on this target, so, we revert to
346
+ alternative means])
347
+ ;;
348
+ *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
349
+ AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
350
+ [Cannot use malloc on this target, so, we revert to
351
+ alternative means])
352
+ ;;
353
+ esac
354
+ AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
355
+ AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
356
+
357
+ if test x$TARGET = xX86_64; then
358
+ AC_CACHE_CHECK([assembler supports unwind section type],
359
+ libffi_cv_as_x86_64_unwind_section_type, [
360
+ libffi_cv_as_x86_64_unwind_section_type=yes
361
+ echo '.section .eh_frame,"a",@unwind' > conftest.s
362
+ if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
363
+ libffi_cv_as_x86_64_unwind_section_type=no
364
+ fi
365
+ ])
366
+ if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
367
+ AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
368
+ [Define if your assembler supports unwind section type.])
369
+ fi
370
+ fi
371
+
372
+ if test "x$GCC" = "xyes"; then
373
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
374
+ libffi_cv_ro_eh_frame, [
375
+ libffi_cv_ro_eh_frame=no
376
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
377
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
378
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
379
+ libffi_cv_ro_eh_frame=yes
380
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
381
+ | grep -v '#write' > /dev/null; then
382
+ libffi_cv_ro_eh_frame=yes
383
+ fi
384
+ fi
385
+ rm -f conftest.*
386
+ ])
387
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
388
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
389
+ [Define if .eh_frame sections should be read-only.])
390
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
391
+ [Define to the flags needed for the .section .eh_frame directive. ])
392
+ else
393
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
394
+ [Define to the flags needed for the .section .eh_frame directive. ])
395
+ fi
396
+
397
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
398
+ libffi_cv_hidden_visibility_attribute, [
399
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
400
+ libffi_cv_hidden_visibility_attribute=no
401
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
402
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
403
+ libffi_cv_hidden_visibility_attribute=yes
404
+ fi
405
+ fi
406
+ rm -f conftest.*
407
+ ])
408
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
409
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
410
+ [Define if __attribute__((visibility("hidden"))) is supported.])
411
+ fi
412
+ fi
413
+
414
+ AH_BOTTOM([
415
+ #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
416
+ #ifdef LIBFFI_ASM
417
+ #define FFI_HIDDEN(name) .hidden name
418
+ #else
419
+ #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
420
+ #endif
421
+ #else
422
+ #ifdef LIBFFI_ASM
423
+ #define FFI_HIDDEN(name)
424
+ #else
425
+ #define FFI_HIDDEN
426
+ #endif
427
+ #endif
428
+ ])
429
+
430
+ AC_SUBST(TARGET)
431
+ AC_SUBST(TARGETDIR)
432
+
433
+ AC_SUBST(SHELL)
434
+
435
+ AC_ARG_ENABLE(debug,
436
+ [ --enable-debug debugging mode],
437
+ if test "$enable_debug" = "yes"; then
438
+ AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
439
+ fi)
440
+ AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
441
+
442
+ AC_ARG_ENABLE(structs,
443
+ [ --disable-structs omit code for struct support],
444
+ if test "$enable_structs" = "no"; then
445
+ AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.])
446
+ fi)
447
+
448
+ AC_ARG_ENABLE(raw-api,
449
+ [ --disable-raw-api make the raw api unavailable],
450
+ if test "$enable_raw_api" = "no"; then
451
+ AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.])
452
+ fi)
453
+
454
+ AC_ARG_ENABLE(purify-safety,
455
+ [ --enable-purify-safety purify-safe mode],
456
+ if test "$enable_purify_safety" = "yes"; then
457
+ AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
458
+ fi)
459
+
460
+ # These variables are only ever used when we cross-build to X86_WIN32.
461
+ # And we only support this with GCC, so...
462
+ if test x"$GCC" != x"no"; then
463
+ if test -n "$with_cross_host" &&
464
+ test x"$with_cross_host" != x"no"; then
465
+ toolexecdir='$(exec_prefix)/$(target_alias)'
466
+ toolexeclibdir='$(toolexecdir)/lib'
467
+ else
468
+ toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
469
+ toolexeclibdir='$(libdir)'
470
+ fi
471
+ multi_os_directory=`$CC -print-multi-os-directory`
472
+ case $multi_os_directory in
473
+ .) ;; # Avoid trailing /.
474
+ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
475
+ esac
476
+ AC_SUBST(toolexecdir)
477
+ AC_SUBST(toolexeclibdir)
478
+ fi
479
+
480
+ if test "${multilib}" = "yes"; then
481
+ multilib_arg="--enable-multilib"
482
+ else
483
+ multilib_arg=
484
+ fi
485
+
486
+ AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
487
+ AC_CONFIG_COMMANDS(src, [
488
+ test -d src || mkdir src
489
+ test -d src/$TARGETDIR || mkdir src/$TARGETDIR
490
+ ], [TARGETDIR="$TARGETDIR"])
491
+
492
+ AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
493
+
494
+ AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc)
495
+
496
+ AC_OUTPUT