ffi 1.9.18 → 1.9.21

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 (366) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/Rakefile +14 -3
  4. data/ext/ffi_c/AbstractMemory.c +6 -1
  5. data/ext/ffi_c/Platform.c +10 -2
  6. data/ext/ffi_c/extconf.rb +7 -2
  7. data/ext/ffi_c/libffi.bsd.mk +9 -3
  8. data/ext/ffi_c/libffi.darwin.mk +14 -4
  9. data/ext/ffi_c/libffi.gnu.mk +2 -1
  10. data/ext/ffi_c/libffi.mk +9 -4
  11. data/ext/ffi_c/libffi/ChangeLog.libffi +2 -2
  12. data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.libffi-3.1} +1402 -2
  13. data/ext/ffi_c/libffi/ChangeLog.v1 +1 -1
  14. data/ext/ffi_c/libffi/LICENSE +1 -1
  15. data/ext/ffi_c/libffi/Makefile.am +166 -157
  16. data/ext/ffi_c/libffi/README +164 -52
  17. data/ext/ffi_c/libffi/acinclude.m4 +381 -0
  18. data/ext/ffi_c/libffi/autogen.sh +2 -0
  19. data/ext/ffi_c/libffi/configure.ac +148 -256
  20. data/ext/ffi_c/libffi/configure.host +265 -4
  21. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  22. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  23. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  24. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +207 -0
  25. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  26. data/ext/ffi_c/libffi/include/ffi.h.in +107 -50
  27. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  28. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  29. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  30. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  31. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
  32. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  33. data/ext/ffi_c/libffi/libtool-version +1 -1
  34. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  35. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  36. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  37. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  38. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  39. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  40. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  41. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  42. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  43. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  44. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  45. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  46. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  47. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  48. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  49. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  50. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  51. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  52. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  53. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  54. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  55. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  56. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  57. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  58. data/ext/ffi_c/libffi/src/arm/ffi.c +597 -517
  59. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  60. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  61. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  62. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  63. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  64. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  65. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  66. data/ext/ffi_c/libffi/src/closures.c +319 -44
  67. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  68. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  69. data/ext/ffi_c/libffi/src/debug.c +6 -1
  70. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  71. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  72. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  73. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  74. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  75. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  76. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  77. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  78. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  79. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  80. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  81. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  82. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  83. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  84. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  85. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  86. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  87. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  88. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  89. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  90. data/ext/ffi_c/libffi/src/mips/ffi.c +95 -28
  91. data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
  92. data/ext/ffi_c/libffi/src/mips/n32.S +126 -56
  93. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  94. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  95. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  96. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  97. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  98. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  99. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  100. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  101. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  102. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  103. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  104. data/ext/ffi_c/libffi/src/powerpc/aix.S +6 -6
  105. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
  106. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  107. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  108. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  109. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  110. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +25 -25
  111. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  112. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  113. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  114. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +100 -44
  115. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  116. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  117. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  118. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  119. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  120. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  121. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  122. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  123. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  124. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  125. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  126. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  127. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  128. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  129. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  130. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  131. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  132. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  133. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  134. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  135. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  136. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  137. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  138. data/ext/ffi_c/libffi/src/types.c +43 -14
  139. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  140. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  141. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  142. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  143. data/ext/ffi_c/libffi/src/x86/ffi.c +589 -500
  144. data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -116
  145. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  146. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  147. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  148. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  149. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  150. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  151. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  152. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  153. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  154. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  155. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  156. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  157. data/ext/ffi_c/libffi/testsuite/Makefile.am +78 -73
  158. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -25
  159. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  184. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  185. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  186. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  187. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  188. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  262. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  263. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  273. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  274. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  275. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  276. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  277. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  278. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  284. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  285. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  293. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  294. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  315. data/ffi.gemspec +2 -2
  316. data/lib/ffi/enum.rb +124 -0
  317. data/lib/ffi/library.rb +65 -13
  318. data/lib/ffi/platform.rb +7 -2
  319. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  320. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  321. data/lib/ffi/pointer.rb +1 -0
  322. data/lib/ffi/struct.rb +0 -2
  323. data/lib/ffi/version.rb +1 -1
  324. data/spec/ffi/bitmask_spec.rb +575 -0
  325. data/spec/ffi/fixtures/BitmaskTest.c +51 -0
  326. data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
  327. data/spec/ffi/struct_spec.rb +0 -4
  328. metadata +143 -51
  329. data/ext/ffi_c/libffi/Makefile.in +0 -1820
  330. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  331. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  332. data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
  333. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  334. data/ext/ffi_c/libffi/compile +0 -143
  335. data/ext/ffi_c/libffi/config.guess +0 -1501
  336. data/ext/ffi_c/libffi/config.sub +0 -1705
  337. data/ext/ffi_c/libffi/configure +0 -17191
  338. data/ext/ffi_c/libffi/depcomp +0 -630
  339. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  340. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  341. data/ext/ffi_c/libffi/fficonfig.h.in +0 -199
  342. data/ext/ffi_c/libffi/include/Makefile.in +0 -487
  343. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  344. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  345. data/ext/ffi_c/libffi/install-sh +0 -520
  346. data/ext/ffi_c/libffi/ltmain.sh +0 -9636
  347. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
  348. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
  349. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  350. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  351. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
  352. data/ext/ffi_c/libffi/man/Makefile.in +0 -466
  353. data/ext/ffi_c/libffi/mdate-sh +0 -201
  354. data/ext/ffi_c/libffi/missing +0 -376
  355. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  356. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  357. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  358. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  359. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  360. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  361. data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -500
  362. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  363. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  364. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  365. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  366. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
@@ -2,7 +2,7 @@ The libffi version 1 ChangeLog archive.
2
2
 
3
3
  Version 1 of libffi had per-directory ChangeLogs. Current and future
4
4
  versions have a single ChangeLog file in the root directory. The
5
- version 1 ChangeLogs have all been concatonated into this file for
5
+ version 1 ChangeLogs have all been concatenated into this file for
6
6
  future reference only.
7
7
 
8
8
  --- libffi ----------------------------------------------------------------
@@ -1,4 +1,4 @@
1
- libffi - Copyright (c) 1996-2011 Anthony Green, Red Hat, Inc and others.
1
+ libffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others.
2
2
  See source files for details.
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining
@@ -2,40 +2,27 @@
2
2
 
3
3
  AUTOMAKE_OPTIONS = foreign subdir-objects
4
4
 
5
+ ACLOCAL_AMFLAGS = -I m4
6
+
5
7
  SUBDIRS = include testsuite man
8
+ if BUILD_DOCS
9
+ ## This hack is needed because it doesn't seem possible to make a
10
+ ## conditional info_TEXINFOS in Automake. At least Automake 1.14
11
+ ## either gives errors -- if this attempted in the most
12
+ ## straightforward way -- or simply unconditionally tries to build the
13
+ ## info file.
14
+ SUBDIRS += doc
15
+ endif
16
+
17
+ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj \
18
+ ChangeLog.libffi ChangeLog.libffi-3.1 \
19
+ m4/libtool.m4 m4/lt~obsolete.m4 \
20
+ m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \
21
+ m4/ltversion.m4 src/debug.c msvcc.sh \
22
+ generate-darwin-source-and-headers.py \
23
+ libffi.xcodeproj/project.pbxproj \
24
+ libtool-ldflags
6
25
 
7
- EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
8
- src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
9
- src/arm/ffi.c src/arm/sysv.S src/arm/trampoline.S \
10
- src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S \
11
- src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S \
12
- src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h \
13
- src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c \
14
- src/mips/n32.S src/mips/o32.S src/mips/ffitarget.h \
15
- src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \
16
- src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \
17
- src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/linux64.S \
18
- src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \
19
- src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S \
20
- src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \
21
- src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \
22
- src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \
23
- src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c \
24
- src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S \
25
- src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c \
26
- src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S \
27
- src/x86/win32.S src/x86/win64.S src/x86/darwin.S \
28
- src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S \
29
- src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c \
30
- src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/frv/eabi.S \
31
- src/frv/ffitarget.h src/dlmalloc.c src/moxie/ffi.c \
32
- src/moxie/eabi.S libtool-version ChangeLog.libffi \
33
- m4/libtool.m4 m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 \
34
- m4/ltversion.m4 build-ios.sh src/arm/gentramp.sh src/debug.c \
35
- msvcc.sh
36
-
37
-
38
- info_TEXINFOS = doc/libffi.texi
39
26
 
40
27
  ## ################################################################
41
28
 
@@ -47,150 +34,172 @@ info_TEXINFOS = doc/libffi.texi
47
34
  # values defined in terms of make variables, as is the case for CC and
48
35
  # friends when we are called from the top level Makefile.
49
36
  AM_MAKEFLAGS = \
50
- "AR_FLAGS=$(AR_FLAGS)" \
51
- "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
52
- "CFLAGS=$(CFLAGS)" \
53
- "CXXFLAGS=$(CXXFLAGS)" \
54
- "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
55
- "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
56
- "INSTALL=$(INSTALL)" \
57
- "INSTALL_DATA=$(INSTALL_DATA)" \
58
- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
59
- "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
60
- "JC1FLAGS=$(JC1FLAGS)" \
61
- "LDFLAGS=$(LDFLAGS)" \
62
- "LIBCFLAGS=$(LIBCFLAGS)" \
63
- "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
64
- "MAKE=$(MAKE)" \
65
- "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
66
- "PICFLAG=$(PICFLAG)" \
67
- "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
68
- "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
69
- "SHELL=$(SHELL)" \
70
- "exec_prefix=$(exec_prefix)" \
71
- "infodir=$(infodir)" \
72
- "libdir=$(libdir)" \
73
- "mandir=$(mandir)" \
74
- "prefix=$(prefix)" \
75
- "AR=$(AR)" \
76
- "AS=$(AS)" \
77
- "CC=$(CC)" \
78
- "CXX=$(CXX)" \
79
- "LD=$(LD)" \
80
- "NM=$(NM)" \
81
- "RANLIB=$(RANLIB)" \
82
- "DESTDIR=$(DESTDIR)"
37
+ 'AR_FLAGS=$(AR_FLAGS)' \
38
+ 'CC_FOR_BUILD=$(CC_FOR_BUILD)' \
39
+ 'CFLAGS=$(CFLAGS)' \
40
+ 'CXXFLAGS=$(CXXFLAGS)' \
41
+ 'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \
42
+ 'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \
43
+ 'INSTALL=$(INSTALL)' \
44
+ 'INSTALL_DATA=$(INSTALL_DATA)' \
45
+ 'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \
46
+ 'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \
47
+ 'JC1FLAGS=$(JC1FLAGS)' \
48
+ 'LDFLAGS=$(LDFLAGS)' \
49
+ 'LIBCFLAGS=$(LIBCFLAGS)' \
50
+ 'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \
51
+ 'MAKE=$(MAKE)' \
52
+ 'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \
53
+ 'PICFLAG=$(PICFLAG)' \
54
+ 'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \
55
+ 'RUNTESTFLAGS=$(RUNTESTFLAGS)' \
56
+ 'SHELL=$(SHELL)' \
57
+ 'exec_prefix=$(exec_prefix)' \
58
+ 'infodir=$(infodir)' \
59
+ 'libdir=$(libdir)' \
60
+ 'mandir=$(mandir)' \
61
+ 'prefix=$(prefix)' \
62
+ 'AR=$(AR)' \
63
+ 'AS=$(AS)' \
64
+ 'CC=$(CC)' \
65
+ 'CXX=$(CXX)' \
66
+ 'LD=$(LD)' \
67
+ 'NM=$(NM)' \
68
+ 'RANLIB=$(RANLIB)' \
69
+ 'DESTDIR=$(DESTDIR)'
70
+
71
+ # Subdir rules rely on $(FLAGS_TO_PASS)
72
+ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
83
73
 
84
74
  MAKEOVERRIDES=
85
75
 
86
- ACLOCAL_AMFLAGS=$(ACLOCAL_AMFLAGS) -I m4
76
+ pkgconfigdir = $(libdir)/pkgconfig
77
+ pkgconfig_DATA = libffi.pc
87
78
 
88
- lib_LTLIBRARIES = libffi.la
79
+ toolexeclib_LTLIBRARIES = libffi.la
89
80
  noinst_LTLIBRARIES = libffi_convenience.la
90
81
 
91
- libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
82
+ libffi_la_SOURCES = src/prep_cif.c src/types.c \
92
83
  src/raw_api.c src/java_raw_api.c src/closures.c
93
84
 
94
- pkgconfigdir = $(libdir)/pkgconfig
95
- pkgconfig_DATA = libffi.pc
96
-
97
- nodist_libffi_la_SOURCES =
98
-
99
- if MIPS
100
- nodist_libffi_la_SOURCES += src/mips/ffi.c src/mips/o32.S src/mips/n32.S
101
- endif
102
- if X86
103
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S
104
- endif
105
- if X86_FREEBSD
106
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S
107
- endif
108
- if X86_WIN32
109
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S
110
- endif
111
- if X86_WIN64
112
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win64.S
113
- endif
114
- if X86_DARWIN
115
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
116
- endif
117
- if SPARC
118
- nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
119
- endif
120
- if ALPHA
121
- nodist_libffi_la_SOURCES += src/alpha/ffi.c src/alpha/osf.S
122
- endif
123
- if IA64
124
- nodist_libffi_la_SOURCES += src/ia64/ffi.c src/ia64/unix.S
125
- endif
126
- if M32R
127
- nodist_libffi_la_SOURCES += src/m32r/sysv.S src/m32r/ffi.c
128
- endif
129
- if M68K
130
- nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S
131
- endif
132
- if POWERPC
133
- nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
134
- endif
135
- if POWERPC_AIX
136
- nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
137
- endif
138
- if POWERPC_DARWIN
139
- nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
140
- endif
141
- if POWERPC_FREEBSD
142
- nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
143
- endif
144
- if ARM
145
- nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c
146
- if FFI_EXEC_TRAMPOLINE_TABLE
147
- nodist_libffi_la_SOURCES += src/arm/trampoline.S
148
- endif
149
- endif
150
- if AVR32
151
- nodist_libffi_la_SOURCES += src/avr32/sysv.S src/avr32/ffi.c
152
- endif
153
- if LIBFFI_CRIS
154
- nodist_libffi_la_SOURCES += src/cris/sysv.S src/cris/ffi.c
155
- endif
156
- if FRV
157
- nodist_libffi_la_SOURCES += src/frv/eabi.S src/frv/ffi.c
158
- endif
159
- if S390
160
- nodist_libffi_la_SOURCES += src/s390/sysv.S src/s390/ffi.c
161
- endif
162
- if X86_64
163
- nodist_libffi_la_SOURCES += src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
164
- endif
165
- if SH
166
- nodist_libffi_la_SOURCES += src/sh/sysv.S src/sh/ffi.c
167
- endif
168
- if SH64
169
- nodist_libffi_la_SOURCES += src/sh64/sysv.S src/sh64/ffi.c
170
- endif
171
- if PA_LINUX
172
- nodist_libffi_la_SOURCES += src/pa/linux.S src/pa/ffi.c
173
- endif
174
- if PA_HPUX
175
- nodist_libffi_la_SOURCES += src/pa/hpux32.S src/pa/ffi.c
176
- endif
85
+ if FFI_DEBUG
86
+ libffi_la_SOURCES += src/debug.c
87
+ endif
88
+
89
+ noinst_HEADERS = \
90
+ src/aarch64/ffitarget.h src/aarch64/internal.h \
91
+ src/alpha/ffitarget.h src/alpha/internal.h \
92
+ src/arc/ffitarget.h \
93
+ src/arm/ffitarget.h src/arm/internal.h \
94
+ src/avr32/ffitarget.h \
95
+ src/bfin/ffitarget.h \
96
+ src/cris/ffitarget.h \
97
+ src/frv/ffitarget.h \
98
+ src/ia64/ffitarget.h src/ia64/ia64_flags.h \
99
+ src/m32r/ffitarget.h \
100
+ src/m68k/ffitarget.h \
101
+ src/m88k/ffitarget.h \
102
+ src/metag/ffitarget.h \
103
+ src/microblaze/ffitarget.h \
104
+ src/mips/ffitarget.h \
105
+ src/moxie/ffitarget.h \
106
+ src/nios2/ffitarget.h \
107
+ src/or1k/ffitarget.h \
108
+ src/pa/ffitarget.h \
109
+ src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \
110
+ src/s390/ffitarget.h \
111
+ src/sh/ffitarget.h \
112
+ src/sh64/ffitarget.h \
113
+ src/sparc/ffitarget.h src/sparc/internal.h \
114
+ src/tile/ffitarget.h \
115
+ src/vax/ffitarget.h \
116
+ src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h \
117
+ src/xtensa/ffitarget.h \
118
+ src/dlmalloc.c
119
+
120
+ EXTRA_libffi_la_SOURCES = \
121
+ src/aarch64/ffi.c src/aarch64/sysv.S \
122
+ src/alpha/ffi.c src/alpha/osf.S \
123
+ src/arc/ffi.c src/arc/arcompact.S \
124
+ src/arm/ffi.c src/arm/sysv.S \
125
+ src/avr32/ffi.c src/avr32/sysv.S \
126
+ src/bfin/ffi.c src/bfin/sysv.S \
127
+ src/cris/ffi.c src/cris/sysv.S \
128
+ src/frv/ffi.c src/frv/eabi.S \
129
+ src/ia64/ffi.c src/ia64/unix.S \
130
+ src/m32r/ffi.c src/m32r/sysv.S \
131
+ src/m68k/ffi.c src/m68k/sysv.S \
132
+ src/m88k/ffi.c src/m88k/obsd.S \
133
+ src/metag/ffi.c src/metag/sysv.S \
134
+ src/microblaze/ffi.c src/microblaze/sysv.S \
135
+ src/mips/ffi.c src/mips/o32.S src/mips/n32.S \
136
+ src/moxie/ffi.c src/moxie/eabi.S \
137
+ src/nios2/ffi.c src/nios2/sysv.S \
138
+ src/or1k/ffi.c src/or1k/sysv.S \
139
+ src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
140
+ src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c \
141
+ src/powerpc/sysv.S src/powerpc/linux64.S \
142
+ src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \
143
+ src/powerpc/aix.S src/powerpc/darwin.S src/powerpc/aix_closure.S \
144
+ src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \
145
+ src/s390/ffi.c src/s390/sysv.S \
146
+ src/sh/ffi.c src/sh/sysv.S \
147
+ src/sh64/ffi.c src/sh64/sysv.S \
148
+ src/sparc/ffi.c src/sparc/ffi64.c src/sparc/v8.S src/sparc/v9.S \
149
+ src/tile/ffi.c src/tile/tile.S \
150
+ src/vax/ffi.c src/vax/elfbsd.S \
151
+ src/x86/ffi.c src/x86/sysv.S \
152
+ src/x86/ffiw64.c src/x86/win64.S \
153
+ src/x86/ffi64.c src/x86/unix64.S \
154
+ src/xtensa/ffi.c src/xtensa/sysv.S
155
+
156
+ TARGET_OBJ = @TARGET_OBJ@
157
+ libffi_la_LIBADD = $(TARGET_OBJ)
177
158
 
178
159
  libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
160
+ EXTRA_libffi_convenience_la_SOURCES = $(EXTRA_libffi_la_SOURCES)
161
+ libffi_convenience_la_LIBADD = $(libffi_la_LIBADD)
162
+ libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES)
179
163
  nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
180
164
 
181
- AM_CFLAGS = -g
165
+ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS))
166
+
167
+ AM_CFLAGS =
182
168
  if FFI_DEBUG
183
169
  # Build debug. Define FFI_DEBUG on the commandline so that, when building with
184
170
  # MSVC, it can link against the debug CRT.
185
171
  AM_CFLAGS += -DFFI_DEBUG
186
172
  endif
187
173
 
188
- libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
174
+ if LIBFFI_BUILD_VERSIONED_SHLIB
175
+ if LIBFFI_BUILD_VERSIONED_SHLIB_GNU
176
+ libffi_version_script = -Wl,--version-script,libffi.map
177
+ libffi_version_dep = libffi.map
178
+ endif
179
+ if LIBFFI_BUILD_VERSIONED_SHLIB_SUN
180
+ libffi_version_script = -Wl,-M,libffi.map-sun
181
+ libffi_version_dep = libffi.map-sun
182
+ libffi.map-sun : libffi.map $(top_srcdir)/../contrib/make_sunver.pl \
183
+ $(libffi_la_OBJECTS) $(libffi_la_LIBADD)
184
+ perl $(top_srcdir)/../contrib/make_sunver.pl libffi.map \
185
+ `echo $(libffi_la_OBJECTS) $(libffi_la_LIBADD) | \
186
+ sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \
187
+ > $@ || (rm -f $@ ; exit 1)
188
+ endif
189
+ else
190
+ libffi_version_script =
191
+ libffi_version_dep =
192
+ endif
193
+ libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
194
+
195
+ libffi.map: $(top_srcdir)/libffi.map.in
196
+ $(COMPILE) -D$(TARGET) -E -x assembler-with-cpp -o $@ $<
197
+
198
+ libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS)
199
+ libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep)
189
200
 
190
201
  AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
191
202
  AM_CCASFLAGS = $(AM_CPPFLAGS)
192
203
 
193
- # No install-html or install-pdf support in automake yet
194
- .PHONY: install-html install-pdf
195
- install-html:
196
- install-pdf:
204
+ dist-hook:
205
+ if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog
@@ -1,7 +1,7 @@
1
1
  Status
2
2
  ======
3
3
 
4
- libffi-3.0.10 was released on August 23, 2011. Check the libffi web
4
+ libffi-4?? was released on TBD. Check the libffi web
5
5
  page for updates: <URL:http://sourceware.org/libffi/>.
6
6
 
7
7
 
@@ -43,51 +43,79 @@ Libffi has been ported to many different platforms.
43
43
  For specific configuration details and testing status, please
44
44
  refer to the wiki page here:
45
45
 
46
- http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.10
46
+ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.2
47
47
 
48
48
  At the time of release, the following basic configurations have been
49
49
  tested:
50
50
 
51
- |--------------+------------------|
52
- | Architecture | Operating System |
53
- |--------------+------------------|
54
- | Alpha | Linux |
55
- | Alpha | Tru64 |
56
- | ARM | Linux |
57
- | ARM | iOS |
58
- | AVR32 | Linux |
59
- | HPPA | HPUX |
60
- | IA-64 | Linux |
61
- | M68K | RTEMS |
62
- | MIPS | IRIX |
63
- | MIPS | Linux |
64
- | MIPS | RTEMS |
65
- | MIPS64 | Linux |
66
- | PowerPC | Linux |
67
- | PowerPC | Mac OSX |
68
- | PowerPC | FreeBSD |
69
- | PowerPC64 | Linux |
70
- | S390 | Linux |
71
- | S390X | Linux |
72
- | SPARC | Linux |
73
- | SPARC | Solaris |
74
- | SPARC64 | Linux |
75
- | SPARC64 | FreeBSD |
76
- | X86 | FreeBSD |
77
- | X86 | Interix |
78
- | X86 | kFreeBSD |
79
- | X86 | Linux |
80
- | X86 | Mac OSX |
81
- | X86 | OpenBSD |
82
- | X86 | OS/2 |
83
- | X86 | Solaris |
84
- | X86 | Windows/Cygwin |
85
- | X86 | Windows/MingW |
86
- | X86-64 | FreeBSD |
87
- | X86-64 | Linux |
88
- | X86-64 | OpenBSD |
89
- | X86-64 | Windows/MingW |
90
- |--------------+------------------|
51
+ |-----------------+------------------+-------------------------|
52
+ | Architecture | Operating System | Compiler |
53
+ |-----------------+------------------+-------------------------|
54
+ | AArch64 (ARM64) | iOS | Clang |
55
+ | AArch64 | Linux | GCC |
56
+ | Alpha | Linux | GCC |
57
+ | Alpha | Tru64 | GCC |
58
+ | ARC | Linux | GCC |
59
+ | ARM | Linux | GCC |
60
+ | ARM | iOS | GCC |
61
+ | AVR32 | Linux | GCC |
62
+ | Blackfin | uClinux | GCC |
63
+ | HPPA | HPUX | GCC |
64
+ | IA-64 | Linux | GCC |
65
+ | M68K | FreeMiNT | GCC |
66
+ | M68K | Linux | GCC |
67
+ | M68K | RTEMS | GCC |
68
+ | M88K | OpenBSD/mvme88k | GCC |
69
+ | Meta | Linux | GCC |
70
+ | MicroBlaze | Linux | GCC |
71
+ | MIPS | IRIX | GCC |
72
+ | MIPS | Linux | GCC |
73
+ | MIPS | RTEMS | GCC |
74
+ | MIPS64 | Linux | GCC |
75
+ | Moxie | Bare metal | GCC |
76
+ | Nios II | Linux | GCC |
77
+ | OpenRISC | Linux | GCC |
78
+ | PowerPC 32-bit | AIX | IBM XL C |
79
+ | PowerPC 64-bit | AIX | IBM XL C |
80
+ | PowerPC | AMIGA | GCC |
81
+ | PowerPC | Linux | GCC |
82
+ | PowerPC | Mac OSX | GCC |
83
+ | PowerPC | FreeBSD | GCC |
84
+ | PowerPC 64-bit | FreeBSD | GCC |
85
+ | PowerPC 64-bit | Linux ELFv1 | GCC |
86
+ | PowerPC 64-bit | Linux ELFv2 | GCC |
87
+ | S390 | Linux | GCC |
88
+ | S390X | Linux | GCC |
89
+ | SPARC | Linux | GCC |
90
+ | SPARC | Solaris | GCC |
91
+ | SPARC | Solaris | Oracle Solaris Studio C |
92
+ | SPARC64 | Linux | GCC |
93
+ | SPARC64 | FreeBSD | GCC |
94
+ | SPARC64 | Solaris | Oracle Solaris Studio C |
95
+ | TILE-Gx/TILEPro | Linux | GCC |
96
+ | VAX | OpenBSD/vax | GCC |
97
+ | X86 | FreeBSD | GCC |
98
+ | X86 | GNU HURD | GCC |
99
+ | X86 | Interix | GCC |
100
+ | X86 | kFreeBSD | GCC |
101
+ | X86 | Linux | GCC |
102
+ | X86 | Mac OSX | GCC |
103
+ | X86 | OpenBSD | GCC |
104
+ | X86 | OS/2 | GCC |
105
+ | X86 | Solaris | GCC |
106
+ | X86 | Solaris | Oracle Solaris Studio C |
107
+ | X86 | Windows/Cygwin | GCC |
108
+ | X86 | Windows/MingW | GCC |
109
+ | X86-64 | FreeBSD | GCC |
110
+ | X86-64 | Linux | GCC |
111
+ | X86-64 | Linux/x32 | GCC |
112
+ | X86-64 | OpenBSD | GCC |
113
+ | X86-64 | Solaris | Oracle Solaris Studio C |
114
+ | X86-64 | Windows/Cygwin | GCC |
115
+ | X86-64 | Windows/MingW | GCC |
116
+ | X86-64 | Mac OSX | GCC |
117
+ | Xtensa | Linux | GCC |
118
+ |-----------------+------------------+-------------------------|
91
119
 
92
120
  Please send additional platform test results to
93
121
  libffi-discuss@sourceware.org and feel free to update the wiki page
@@ -101,6 +129,9 @@ system. Go to the directory you wish to build libffi in and run the
101
129
  "configure" program found in the root directory of the libffi source
102
130
  distribution.
103
131
 
132
+ If you're building libffi directly from version control, configure won't
133
+ exist yet; run ./autogen.sh first.
134
+
104
135
  You may want to tell configure where to install the libffi library and
105
136
  header files. To do that, use the --prefix configure switch. Libffi
106
137
  will install under /usr/local by default.
@@ -114,24 +145,35 @@ will add some extra code which will suppress certain warnings when you
114
145
  are using Purify with libffi. Only use this switch when using
115
146
  Purify, as it will slow down the library.
116
147
 
148
+ If you don't want to build documentation, use the --disable-docs
149
+ configure switch.
150
+
117
151
  It's also possible to build libffi on Windows platforms with
118
152
  Microsoft's Visual C++ compiler. In this case, use the msvcc.sh
119
153
  wrapper script during configuration like so:
120
154
 
121
- path/to/configure CC=path/to/msvcc.sh LD=link CPP=\"cl -nologo -EP\"
155
+ path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP"
156
+
157
+ For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64" and
158
+ CXX="path/to/msvcc.sh -m64". You may also need to specify --build
159
+ appropriately.
160
+
161
+ It is also possible to build libffi on Windows platforms with the LLVM
162
+ project's clang-cl compiler, like below:
163
+
164
+ path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP"
122
165
 
123
- For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64".
124
- You may also need to specify --build appropriately. When building with MSVC
125
- under a MingW environment, you may need to remove the line in configure
126
- that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not
127
- present in MingW, and is not required when using MingW-style paths.)
166
+ When building with MSVC under a MingW environment, you may need to
167
+ remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath'
168
+ command. ('cygpath' is not present in MingW, and is not required when
169
+ using MingW-style paths.)
128
170
 
129
- For iOS builds, refer to the build-ios.sh script for guidance.
171
+ For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
130
172
 
131
173
  Configure has many other options. Use "configure --help" to see them all.
132
174
 
133
175
  Once configure has finished, type "make". Note that you must be using
134
- GNU make. You can ftp GNU make from prep.ai.mit.edu:/pub/gnu.
176
+ GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
135
177
 
136
178
  To ensure that libffi is working as advertised, type "make check".
137
179
  This will require that you have DejaGNU installed.
@@ -142,7 +184,67 @@ To install the library and header files, type "make install".
142
184
  History
143
185
  =======
144
186
 
145
- See the ChangeLog files for details.
187
+ See the git log for details at http://github.com/libffi/libffi.
188
+
189
+ 4.0 TBD
190
+ New API in support of GO closures.
191
+
192
+ 3.2.1 Nov-12-14
193
+ Build fix for non-iOS AArch64 targets.
194
+
195
+ 3.2 Nov-11-14
196
+ Add C99 Complex Type support (currently only supported on
197
+ s390).
198
+ Add support for PASCAL and REGISTER calling conventions on x86
199
+ Windows/Linux.
200
+ Add OpenRISC and Cygwin-64 support.
201
+ Bug fixes.
202
+
203
+ 3.1 May-19-14
204
+ Add AArch64 (ARM64) iOS support.
205
+ Add Nios II support.
206
+ Add m88k and DEC VAX support.
207
+ Add support for stdcall, thiscall, and fastcall on non-Windows
208
+ 32-bit x86 targets such as Linux.
209
+ Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi
210
+ fixes.
211
+ Make the testsuite more robust: eliminate several spurious
212
+ failures, and respect the $CC and $CXX environment variables.
213
+ Archive off the manually maintained ChangeLog in favor of git
214
+ log.
215
+
216
+ 3.0.13 Mar-17-13
217
+ Add Meta support.
218
+ Add missing Moxie bits.
219
+ Fix stack alignment bug on 32-bit x86.
220
+ Build fix for m68000 targets.
221
+ Build fix for soft-float Power targets.
222
+ Fix the install dir location for some platforms when building
223
+ with GCC (OS X, Solaris).
224
+ Fix Cygwin regression.
225
+
226
+ 3.0.12 Feb-11-13
227
+ Add Moxie support.
228
+ Add AArch64 support.
229
+ Add Blackfin support.
230
+ Add TILE-Gx/TILEPro support.
231
+ Add MicroBlaze support.
232
+ Add Xtensa support.
233
+ Add support for PaX enabled kernels with MPROTECT.
234
+ Add support for native vendor compilers on
235
+ Solaris and AIX.
236
+ Work around LLVM/GCC interoperability issue on x86_64.
237
+
238
+ 3.0.11 Apr-11-12
239
+ Lots of build fixes.
240
+ Add support for variadic functions (ffi_prep_cif_var).
241
+ Add Linux/x32 support.
242
+ Add thiscall, fastcall and MSVC cdecl support on Windows.
243
+ Add Amiga and newer MacOS support.
244
+ Add m68k FreeMiNT support.
245
+ Integration with iOS' xcode build tools.
246
+ Fix Octeon and MC68881 support.
247
+ Fix code pessimizations.
146
248
 
147
249
  3.0.10 Aug-23-11
148
250
  Add support for Apple's iOS.
@@ -286,7 +388,7 @@ See the ChangeLog files for details.
286
388
  Authors & Credits
287
389
  =================
288
390
 
289
- libffi was originally written by Anthony Green <green@redhat.com>.
391
+ libffi was originally written by Anthony Green <green@moxielogic.com>.
290
392
 
291
393
  The developers of the GNU Compiler Collection project have made
292
394
  innumerable valuable contributions. See the ChangeLog file for
@@ -301,15 +403,22 @@ Thorup.
301
403
  Major processor architecture ports were contributed by the following
302
404
  developers:
303
405
 
406
+ aarch64 Marcus Shawcroft, James Greenhalgh
304
407
  alpha Richard Henderson
305
408
  arm Raffaele Sena
409
+ blackfin Alexandre Keunecke I. de Mendonca
306
410
  cris Simon Posnjak, Hans-Peter Nilsson
307
411
  frv Anthony Green
308
412
  ia64 Hans Boehm
309
413
  m32r Kazuhiro Inaoka
310
414
  m68k Andreas Schwab
415
+ m88k Miod Vallat
416
+ microblaze Nathan Rossi
311
417
  mips Anthony Green, Casey Marshall
312
418
  mips64 David Daney
419
+ moxie Anthony Green
420
+ nios ii Sandra Loosemore
421
+ openrisc Sebastian Macke
313
422
  pa Randolph Chung, Dave Anglin, Andreas Tobler
314
423
  powerpc Geoffrey Keating, Andreas Tobler,
315
424
  David Edelsohn, John Hornkvist
@@ -318,8 +427,11 @@ s390 Gerhard Tonn, Ulrich Weigand
318
427
  sh Kaz Kojima
319
428
  sh64 Kaz Kojima
320
429
  sparc Anthony Green, Gordon Irlam
430
+ tile-gx/tilepro Walter Lee
431
+ vax Miod Vallat
321
432
  x86 Anthony Green, Jon Beniston
322
433
  x86-64 Bo Thorsen
434
+ xtensa Chris Zankel
323
435
 
324
436
  Jesper Skov and Andrew Haley both did more than their fair share of
325
437
  stepping through the code and tracking down bugs.