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
@@ -44,20 +44,41 @@
44
44
  # modified version of the Autoconf Macro, you may extend this special
45
45
  # exception to the GPL to apply to your modified version as well.
46
46
 
47
- #serial 9
47
+ #serial 11
48
48
 
49
49
  AC_DEFUN([AX_COMPILER_VENDOR],
50
- [
51
- AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
52
- [ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
53
- # note: don't check for gcc first since some other compilers define __GNUC__
54
- for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
55
- vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
50
+ [AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
51
+ [# note: don't check for gcc first since some other compilers define __GNUC__
52
+ vendors="intel: __ICC,__ECC,__INTEL_COMPILER
53
+ ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__
54
+ pathscale: __PATHCC__,__PATHSCALE__
55
+ clang: __clang__
56
+ gnu: __GNUC__
57
+ sun: __SUNPRO_C,__SUNPRO_CC
58
+ hp: __HP_cc,__HP_aCC
59
+ dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
60
+ borland: __BORLANDC__,__TURBOC__
61
+ comeau: __COMO__
62
+ cray: _CRAYC
63
+ kai: __KCC
64
+ lcc: __LCC__
65
+ sgi: __sgi,sgi
66
+ microsoft: _MSC_VER
67
+ metrowerks: __MWERKS__
68
+ watcom: __WATCOMC__
69
+ portland: __PGI
70
+ unknown: UNKNOWN"
71
+ for ventest in $vendors; do
72
+ case $ventest in
73
+ *:) vendor=$ventest; continue ;;
74
+ *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
75
+ esac
56
76
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
57
- #if !($vencpp)
58
- thisisanerror;
59
- #endif
60
- ])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
77
+ #if !($vencpp)
78
+ thisisanerror;
79
+ #endif
80
+ ])], [break])
61
81
  done
82
+ ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
62
83
  ])
63
84
  ])
@@ -79,7 +79,7 @@
79
79
  # modified version of the Autoconf Macro, you may extend this special
80
80
  # exception to the GPL to apply to your modified version as well.
81
81
 
82
- #serial 22
82
+ #serial 23
83
83
 
84
84
  AC_DEFUN([AX_ENABLE_BUILDDIR],[
85
85
  AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
@@ -121,7 +121,8 @@ if test ".$srcdir" = ".." ; then
121
121
  test -f $srcdir/$cache_file && mv $srcdir/$cache_file .
122
122
  AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"})
123
123
  case "[$]0" in # restart
124
- [/\\]*) eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
124
+ [[\\/]]* | ?:[[\\/]]*) # Asbolute name
125
+ eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
125
126
  *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
126
127
  esac ; exit $?
127
128
  fi
@@ -204,7 +205,7 @@ a\\
204
205
  ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
205
206
  ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
206
207
  ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
207
- ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" = "0" ; then : \\\\\\
208
+ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
208
209
  ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
209
210
  ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
210
211
  ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
@@ -217,7 +218,7 @@ dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree)
217
218
  ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
218
219
  ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
219
220
  ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
220
- ; if test "\$\$found" = "0" ; then : \\\\\\
221
+ ; if test "\$\$found" -eq "0" ; then : \\\\\\
221
222
  ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
222
223
  ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
223
224
  ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
@@ -229,7 +230,7 @@ dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source t
229
230
  ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
230
231
  ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
231
232
  ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
232
- ; if test "\$\$found" = "0" ; then : \\\\\\
233
+ ; if test "\$\$found" -eq "0" ; then : \\\\\\
233
234
  ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
234
235
  ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
235
236
  ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
@@ -11,7 +11,7 @@
11
11
  # This macro tries to guess the "native" arch corresponding to the target
12
12
  # architecture for use with gcc's -march=arch or -mtune=arch flags. If
13
13
  # found, the cache variable $ax_cv_gcc_archflag is set to this flag and
14
- # ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is is set to
14
+ # ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to
15
15
  # "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
16
16
  # to add $ax_cv_gcc_archflag to the end of $CFLAGS.
17
17
  #
@@ -27,7 +27,7 @@
27
27
  # When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
28
28
  # called unless the user specified --with-gcc-arch manually.
29
29
  #
30
- # Requires macros: AX_CHECK_COMPILER_FLAGS, AX_GCC_X86_CPUID
30
+ # Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID
31
31
  #
32
32
  # (The main emphasis here is on recent CPUs, on the principle that doing
33
33
  # high-performance computing on old hardware is uncommon.)
@@ -36,6 +36,7 @@
36
36
  #
37
37
  # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
38
38
  # Copyright (c) 2008 Matteo Frigo
39
+ # Copyright (c) 2012 Tsukasa Oi
39
40
  #
40
41
  # This program is free software: you can redistribute it and/or modify it
41
42
  # under the terms of the GNU General Public License as published by the
@@ -63,7 +64,7 @@
63
64
  # modified version of the Autoconf Macro, you may extend this special
64
65
  # exception to the GPL to apply to your modified version as well.
65
66
 
66
- #serial 8
67
+ #serial 11
67
68
 
68
69
  AC_DEFUN([AX_GCC_ARCHFLAG],
69
70
  [AC_REQUIRE([AC_PROG_CC])
@@ -84,7 +85,7 @@ if test "x$ax_gcc_arch" = xyes; then
84
85
  ax_gcc_arch=""
85
86
  if test "$cross_compiling" = no; then
86
87
  case $host_cpu in
87
- i[[3456]]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
88
+ i[[3456]]86*|x86_64*) # use cpuid codes
88
89
  AX_GCC_X86_CPUID(0)
89
90
  AX_GCC_X86_CPUID(1)
90
91
  case $ax_cv_gcc_x86_cpuid_0 in
@@ -92,18 +93,24 @@ case $host_cpu in
92
93
  case $ax_cv_gcc_x86_cpuid_1 in
93
94
  *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
94
95
  *5??:*:*:*) ax_gcc_arch=pentium ;;
95
- *6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
96
- *6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
97
- *6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
98
- *6[[9d]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
99
- *6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
100
- *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
101
- *f3[[347]]:*:*:*|*f4[1347]:*:*:*)
96
+ *0?6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
97
+ *0?6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
98
+ *0?6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
99
+ *0?6[[9de]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
100
+ *0?6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
101
+ *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
102
+ *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
103
+ *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;;
104
+ *1?6c?:*:*:*|*[[23]]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;;
105
+ *2?6[[ad]]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
106
+ *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;;
107
+ *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
108
+ ?000?f3[[347]]:*:*:*|?000?f4[1347]:*:*:*|?000?f6?:*:*:*)
102
109
  case $host_cpu in
103
- x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
104
- *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
105
- esac ;;
106
- *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
110
+ x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
111
+ *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
112
+ esac ;;
113
+ ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
107
114
  esac ;;
108
115
  *:68747541:*:*) # AMD
109
116
  case $ax_cv_gcc_x86_cpuid_1 in
@@ -121,10 +128,13 @@ case $host_cpu in
121
128
  ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
122
129
  *) ax_gcc_arch="athlon-4 athlon k7" ;;
123
130
  esac ;;
124
- *f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
125
- *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
126
- *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
127
- *f??:*:*:*) ax_gcc_arch="k8" ;;
131
+ ?00??f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
132
+ ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
133
+ ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
134
+ ?00??f??:*:*:*) ax_gcc_arch="k8" ;;
135
+ ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
136
+ ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
137
+ *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
128
138
  esac ;;
129
139
  *:746e6543:*:*) # IDT
130
140
  case $ax_cv_gcc_x86_cpuid_1 in
@@ -145,7 +155,7 @@ case $host_cpu in
145
155
  sparc*)
146
156
  AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
147
157
  cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
148
- cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
158
+ cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters`
149
159
  case $cputype in
150
160
  *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
151
161
  *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
@@ -197,7 +207,7 @@ for arch in $ax_gcc_arch; do
197
207
  flags="-march=$arch -mcpu=$arch -m$arch"
198
208
  fi
199
209
  for flag in $flags; do
200
- AX_CHECK_COMPILER_FLAGS($flag, [ax_cv_gcc_archflag=$flag; break])
210
+ AX_CHECK_COMPILE_FLAG($flag, [ax_cv_gcc_archflag=$flag; break])
201
211
  done
202
212
  test "x$ax_cv_gcc_archflag" = xunknown || break
203
213
  done
@@ -2,7 +2,7 @@
2
2
 
3
3
  AUTOMAKE_OPTIONS=foreign
4
4
 
5
- EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
5
+ EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
6
6
 
7
- man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
7
+ man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
8
8
 
@@ -16,6 +16,15 @@ libffi, -lffi
16
16
  .Fa "ffi_type **atypes"
17
17
  .Fc
18
18
  .Ft void
19
+ .Fo ffi_prep_cif_var
20
+ .Fa "ffi_cif *cif"
21
+ .Fa "ffi_abi abi"
22
+ .Fa "unsigned int nfixedargs"
23
+ .Fa "unsigned int ntotalargs"
24
+ .Fa "ffi_type *rtype"
25
+ .Fa "ffi_type **atypes"
26
+ .Fc
27
+ .Ft void
19
28
  .Fo ffi_call
20
29
  .Fa "ffi_cif *cif"
21
30
  .Fa "void (*fn)(void)"
@@ -28,4 +37,5 @@ generate a call to another function at runtime without requiring knowledge of
28
37
  the called function's interface at compile time.
29
38
  .Sh SEE ALSO
30
39
  .Xr ffi_prep_cif 3 ,
40
+ .Xr ffi_prep_cif_var 3 ,
31
41
  .Xr ffi_call 3
@@ -37,7 +37,9 @@ structs that describe the data type, size and alignment of each argument.
37
37
  points to an
38
38
  .Nm ffi_type
39
39
  that describes the data type, size and alignment of the
40
- return value.
40
+ return value. Note that to call a variadic function
41
+ .Nm ffi_prep_cif_var
42
+ must be used instead.
41
43
  .Sh RETURN VALUES
42
44
  Upon successful completion,
43
45
  .Nm ffi_prep_cif
@@ -59,8 +61,8 @@ does not refer to a valid ABI,
59
61
  .Nm FFI_BAD_ABI
60
62
  will be returned. Available ABIs are
61
63
  defined in
62
- .Nm <ffitarget.h>
63
- .
64
+ .Nm <ffitarget.h> .
64
65
  .Sh SEE ALSO
65
66
  .Xr ffi 3 ,
66
- .Xr ffi_call 3
67
+ .Xr ffi_call 3 ,
68
+ .Xr ffi_prep_cif_var 3
@@ -0,0 +1,73 @@
1
+ .Dd January 25, 2011
2
+ .Dt ffi_prep_cif_var 3
3
+ .Sh NAME
4
+ .Nm ffi_prep_cif_var
5
+ .Nd Prepare a
6
+ .Nm ffi_cif
7
+ structure for use with
8
+ .Nm ffi_call
9
+ for variadic functions.
10
+ .Sh SYNOPSIS
11
+ .In ffi.h
12
+ .Ft ffi_status
13
+ .Fo ffi_prep_cif_var
14
+ .Fa "ffi_cif *cif"
15
+ .Fa "ffi_abi abi"
16
+ .Fa "unsigned int nfixedargs"
17
+ .Fa "unsigned int ntotalargs"
18
+ .Fa "ffi_type *rtype"
19
+ .Fa "ffi_type **atypes"
20
+ .Fc
21
+ .Sh DESCRIPTION
22
+ The
23
+ .Nm ffi_prep_cif_var
24
+ function prepares a
25
+ .Nm ffi_cif
26
+ structure for use with
27
+ .Nm ffi_call
28
+ for variadic functions.
29
+ .Fa abi
30
+ specifies a set of calling conventions to use.
31
+ .Fa atypes
32
+ is an array of
33
+ .Fa ntotalargs
34
+ pointers to
35
+ .Nm ffi_type
36
+ structs that describe the data type, size and alignment of each argument.
37
+ .Fa rtype
38
+ points to an
39
+ .Nm ffi_type
40
+ that describes the data type, size and alignment of the
41
+ return value.
42
+ .Fa nfixedargs
43
+ must contain the number of fixed (non-variadic) arguments.
44
+ Note that to call a non-variadic function
45
+ .Nm ffi_prep_cif
46
+ must be used.
47
+ .Sh RETURN VALUES
48
+ Upon successful completion,
49
+ .Nm ffi_prep_cif_var
50
+ returns
51
+ .Nm FFI_OK .
52
+ It will return
53
+ .Nm FFI_BAD_TYPEDEF
54
+ if
55
+ .Fa cif
56
+ is
57
+ .Nm NULL
58
+ or
59
+ .Fa atypes
60
+ or
61
+ .Fa rtype
62
+ is malformed. If
63
+ .Fa abi
64
+ does not refer to a valid ABI,
65
+ .Nm FFI_BAD_ABI
66
+ will be returned. Available ABIs are
67
+ defined in
68
+ .Nm <ffitarget.h>
69
+ .
70
+ .Sh SEE ALSO
71
+ .Xr ffi 3 ,
72
+ .Xr ffi_call 3 ,
73
+ .Xr ffi_prep_cif 3
@@ -42,8 +42,10 @@
42
42
  # format and translated into something sensible for cl or ml.
43
43
  #
44
44
 
45
+ args_orig=$@
45
46
  args="-nologo -W3"
46
- md=-MD
47
+ static_crt=
48
+ debug_crt=
47
49
  cl="cl"
48
50
  ml="ml"
49
51
  safeseh="-safeseh"
@@ -53,6 +55,10 @@ while [ $# -gt 0 ]
53
55
  do
54
56
  case $1
55
57
  in
58
+ --version)
59
+ args="-help"
60
+ shift 1
61
+ ;;
56
62
  -fexceptions)
57
63
  # Don't enable exceptions for now.
58
64
  #args="$args -EHac"
@@ -62,31 +68,64 @@ do
62
68
  shift 1
63
69
  ;;
64
70
  -m64)
65
- cl="cl" # "$MSVC/x86_amd64/cl"
66
71
  ml="ml64" # "$MSVC/x86_amd64/ml64"
67
72
  safeseh=
68
73
  shift 1
69
74
  ;;
75
+ -clang-cl)
76
+ cl="clang-cl"
77
+ shift 1
78
+ ;;
70
79
  -O0)
71
80
  args="$args -Od"
72
81
  shift 1
73
82
  ;;
74
83
  -O*)
75
- # If we're optimizing, make sure we explicitly turn on some optimizations
76
- # that are implicitly disabled by debug symbols (-Zi).
77
- args="$args $1 -OPT:REF -OPT:ICF -INCREMENTAL:NO"
84
+ # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG
85
+ # case below) are not compatible with optimization flags and will
86
+ # cause the build to fail. Therefore, drop the optimization flag if
87
+ # -DFFI_DEBUG is also set.
88
+ case $args_orig in
89
+ *-DFFI_DEBUG*)
90
+ args="$args"
91
+ ;;
92
+ *)
93
+ # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive
94
+ # project doesn't support MSVC and therefore ends up trying to
95
+ # use -O3. Use the equivalent "max optimization" flag for MSVC
96
+ # instead of erroring out.
97
+ case $1 in
98
+ -O3)
99
+ args="$args -O2"
100
+ ;;
101
+ *)
102
+ args="$args $1"
103
+ ;;
104
+ esac
105
+ opt="true"
106
+ ;;
107
+ esac
78
108
  shift 1
79
109
  ;;
80
110
  -g)
81
111
  # Enable debug symbol generation.
82
- args="$args -Zi -DEBUG"
112
+ args="$args -Zi"
83
113
  shift 1
84
114
  ;;
85
115
  -DFFI_DEBUG)
86
- # Link against debug CRT and enable runtime error checks.
116
+ # Enable runtime error checks.
87
117
  args="$args -RTC1"
88
118
  defines="$defines $1"
89
- md=-MDd
119
+ shift 1
120
+ ;;
121
+ -DUSE_STATIC_RTL)
122
+ # Link against static CRT.
123
+ static_crt=1
124
+ shift 1
125
+ ;;
126
+ -DUSE_DEBUG_RTL)
127
+ # Link against debug CRT.
128
+ debug_crt=1
90
129
  shift 1
91
130
  ;;
92
131
  -c)
@@ -126,6 +165,10 @@ do
126
165
  # to do here.
127
166
  shift 1
128
167
  ;;
168
+ -pedantic)
169
+ # libffi tests -pedantic with -Wall, so drop it also.
170
+ shift 1
171
+ ;;
129
172
  -Werror)
130
173
  args="$args -WX"
131
174
  shift 1
@@ -170,6 +213,23 @@ do
170
213
  esac
171
214
  done
172
215
 
216
+ # If -Zi is specified, certain optimizations are implicitly disabled
217
+ # by MSVC. Add back those optimizations if this is an optimized build.
218
+ # NOTE: These arguments must come after all others.
219
+ if [ -n "$opt" ]; then
220
+ args="$args -link -OPT:REF -OPT:ICF -INCREMENTAL:NO"
221
+ fi
222
+
223
+ if [ -n "$static_crt" ]; then
224
+ md=-MT
225
+ else
226
+ md=-MD
227
+ fi
228
+
229
+ if [ -n "$debug_crt" ]; then
230
+ md="${md}d"
231
+ fi
232
+
173
233
  if [ -n "$assembly" ]; then
174
234
  if [ -z "$outdir" ]; then
175
235
  outdir="."
@@ -189,7 +249,10 @@ if [ -n "$assembly" ]; then
189
249
  else
190
250
  args="$md $args"
191
251
  echo "$cl $args"
192
- eval "\"$cl\" $args"
252
+ # Return an error code of 1 if an invalid command line parameter is passed
253
+ # instead of just ignoring it.
254
+ eval "(\"$cl\" $args 2>&1 1>&3 | \
255
+ awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1"
193
256
  result=$?
194
257
  fi
195
258