ffi 1.9.18-x86-mingw32 → 1.9.21-x86-mingw32

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

Potentially problematic release.


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

Files changed (384) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +3 -2
  3. data/Rakefile +14 -4
  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/Makefile.in +923 -938
  17. data/ext/ffi_c/libffi/README +164 -52
  18. data/ext/ffi_c/libffi/acinclude.m4 +381 -0
  19. data/ext/ffi_c/libffi/aclocal.m4 +645 -384
  20. data/ext/ffi_c/libffi/autogen.sh +2 -0
  21. data/ext/ffi_c/libffi/autom4te.cache/output.0 +21972 -0
  22. data/ext/ffi_c/libffi/autom4te.cache/output.1 +21972 -0
  23. data/ext/ffi_c/libffi/autom4te.cache/output.2 +21972 -0
  24. data/ext/ffi_c/libffi/autom4te.cache/output.3 +21972 -0
  25. data/ext/ffi_c/libffi/autom4te.cache/requests +331 -0
  26. data/ext/ffi_c/libffi/autom4te.cache/traces.0 +4010 -0
  27. data/ext/ffi_c/libffi/autom4te.cache/traces.1 +1005 -0
  28. data/ext/ffi_c/libffi/autom4te.cache/traces.2 +4010 -0
  29. data/ext/ffi_c/libffi/autom4te.cache/traces.3 +4010 -0
  30. data/ext/ffi_c/libffi/compile +218 -14
  31. data/ext/ffi_c/libffi/config.guess +329 -368
  32. data/ext/ffi_c/libffi/config.sub +232 -112
  33. data/ext/ffi_c/libffi/configure +6970 -2189
  34. data/ext/ffi_c/libffi/configure.ac +148 -256
  35. data/ext/ffi_c/libffi/configure.host +265 -4
  36. data/ext/ffi_c/libffi/depcomp +346 -185
  37. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  38. data/ext/ffi_c/libffi/doc/Makefile.in +811 -0
  39. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  40. data/ext/ffi_c/libffi/{mdate-sh → doc/mdate-sh} +40 -13
  41. data/ext/ffi_c/libffi/{texinfo.tex → doc/texinfo.tex} +3990 -1121
  42. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  43. data/ext/ffi_c/libffi/fficonfig.h.in +24 -13
  44. data/ext/ffi_c/libffi/fficonfig.h.in~ +210 -0
  45. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +207 -0
  46. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  47. data/ext/ffi_c/libffi/include/Makefile.in +188 -71
  48. data/ext/ffi_c/libffi/include/ffi.h.in +107 -50
  49. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  50. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  51. data/ext/ffi_c/libffi/install-sh +190 -202
  52. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  53. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  54. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
  55. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  56. data/ext/ffi_c/libffi/libtool-version +1 -1
  57. data/ext/ffi_c/libffi/ltmain.sh +3553 -2033
  58. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  59. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  60. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  61. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  62. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  63. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  64. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  65. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  66. data/ext/ffi_c/libffi/m4/libtool.m4 +1691 -1135
  67. data/ext/ffi_c/libffi/m4/ltoptions.m4 +104 -36
  68. data/ext/ffi_c/libffi/m4/ltsugar.m4 +4 -3
  69. data/ext/ffi_c/libffi/m4/ltversion.m4 +6 -6
  70. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +4 -3
  71. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  72. data/ext/ffi_c/libffi/man/Makefile.in +141 -49
  73. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  74. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  75. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  76. data/ext/ffi_c/libffi/missing +150 -311
  77. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  78. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  79. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  80. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  81. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  82. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  83. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  84. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  85. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  86. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  87. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  88. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  89. data/ext/ffi_c/libffi/src/arm/ffi.c +597 -517
  90. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  91. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  92. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  93. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  94. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  95. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  96. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  97. data/ext/ffi_c/libffi/src/closures.c +319 -44
  98. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  99. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  100. data/ext/ffi_c/libffi/src/debug.c +6 -1
  101. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  102. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  103. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  104. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  105. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  106. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  107. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  108. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  109. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  110. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  111. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  112. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  113. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  114. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  115. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  116. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  117. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  118. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  119. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  120. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  121. data/ext/ffi_c/libffi/src/mips/ffi.c +95 -28
  122. data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
  123. data/ext/ffi_c/libffi/src/mips/n32.S +126 -56
  124. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  125. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  126. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  127. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  128. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  129. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  130. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  131. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  132. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  133. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  134. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  135. data/ext/ffi_c/libffi/src/powerpc/aix.S +6 -6
  136. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
  137. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  138. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  139. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  140. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  141. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +25 -25
  142. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  143. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  144. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  145. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +100 -44
  146. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  147. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  148. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  149. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  150. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  151. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  152. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  153. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  154. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  155. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  156. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  157. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  158. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  159. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  160. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  161. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  162. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  163. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  164. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  165. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  166. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  167. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  168. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  169. data/ext/ffi_c/libffi/src/types.c +43 -14
  170. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  171. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  172. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  173. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  174. data/ext/ffi_c/libffi/src/x86/ffi.c +589 -500
  175. data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -116
  176. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  177. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  178. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  179. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  180. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  181. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  182. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  183. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  184. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  185. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  186. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  187. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  188. data/ext/ffi_c/libffi/testsuite/Makefile.am +78 -73
  189. data/ext/ffi_c/libffi/testsuite/Makefile.in +218 -111
  190. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -25
  191. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  294. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  295. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  316. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  327. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  328. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  329. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  330. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  331. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  332. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  345. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  346. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  347. data/ffi.gemspec +2 -2
  348. data/lib/2.0/ffi_c.so +0 -0
  349. data/lib/2.1/ffi_c.so +0 -0
  350. data/lib/2.2/ffi_c.so +0 -0
  351. data/lib/2.3/ffi_c.so +0 -0
  352. data/lib/2.4/ffi_c.so +0 -0
  353. data/lib/2.5/ffi_c.so +0 -0
  354. data/lib/ffi/enum.rb +124 -0
  355. data/lib/ffi/library.rb +65 -13
  356. data/lib/ffi/platform.rb +7 -2
  357. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  358. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  359. data/lib/ffi/pointer.rb +1 -0
  360. data/lib/ffi/struct.rb +0 -2
  361. data/lib/ffi/version.rb +1 -1
  362. data/spec/ffi/bitmask_spec.rb +575 -0
  363. data/spec/ffi/embed-test/ext/Makefile +242 -0
  364. data/spec/ffi/fixtures/BitmaskTest.c +51 -0
  365. data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
  366. data/spec/ffi/struct_spec.rb +0 -4
  367. metadata +158 -32
  368. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  369. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  370. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  371. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  372. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  373. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  374. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  375. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  376. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  377. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  378. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  379. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  380. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  381. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  382. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  383. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  384. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
@@ -1,14 +1,18 @@
1
1
  dnl Process this with autoconf to create configure
2
2
 
3
- AC_PREREQ(2.63)
3
+ AC_PREREQ(2.68)
4
4
 
5
- AC_INIT([libffi], [3.0.10], [http://sourceware.org/libffi.html])
5
+ AC_INIT([libffi], [3.99999], [http://github.com/libffi/libffi/issues])
6
6
  AC_CONFIG_HEADERS([fficonfig.h])
7
7
 
8
8
  AC_CANONICAL_SYSTEM
9
9
  target_alias=${target_alias-$host_alias}
10
10
 
11
- . ${srcdir}/configure.host
11
+ case "${host}" in
12
+ frv*-elf)
13
+ LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
14
+ ;;
15
+ esac
12
16
 
13
17
  AX_ENABLE_BUILDDIR
14
18
 
@@ -25,9 +29,10 @@ m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
25
29
  m4_define([_AC_ARG_VAR_PRECIOUS],[])
26
30
  save_CFLAGS=$CFLAGS
27
31
  AC_PROG_CC
32
+ AC_PROG_CXX
28
33
  CFLAGS=$save_CFLAGS
29
34
  m4_undefine([_AC_ARG_VAR_PRECIOUS])
30
- m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
35
+ m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
31
36
 
32
37
  AC_SUBST(CFLAGS)
33
38
 
@@ -36,193 +41,46 @@ AM_PROG_CC_C_O
36
41
  AC_PROG_LIBTOOL
37
42
  AC_CONFIG_MACRO_DIR([m4])
38
43
 
44
+ # Test for 64-bit build.
45
+ AC_CHECK_SIZEOF([size_t])
46
+
47
+ AX_COMPILER_VENDOR
39
48
  AX_CC_MAXOPT
40
- AX_CFLAGS_WARN_ALL
49
+ # The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
50
+ # compiler.
51
+ if test "$ax_cv_c_compiler_vendor" != "sun"; then
52
+ AX_CFLAGS_WARN_ALL
53
+ fi
54
+
41
55
  if test "x$GCC" = "xyes"; then
42
56
  CFLAGS="$CFLAGS -fexceptions"
43
57
  fi
44
58
 
59
+ cat > local.exp <<EOF
60
+ set CC_FOR_TARGET "$CC"
61
+ set CXX_FOR_TARGET "$CXX"
62
+ EOF
63
+
45
64
  AM_MAINTAINER_MODE
46
65
 
47
66
  AC_CHECK_HEADERS(sys/mman.h)
48
- AC_CHECK_FUNCS(mmap)
67
+ AC_CHECK_FUNCS([mmap mkostemp])
49
68
  AC_FUNC_MMAP_BLACKLIST
50
69
 
51
70
  dnl The -no-testsuite modules omit the test subdir.
52
71
  AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
53
72
 
54
73
  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
74
+ HAVE_LONG_DOUBLE_VARIANT=0
191
75
 
192
- AC_SUBST(AM_RUNTESTFLAGS)
193
- AC_SUBST(AM_LTLDFLAGS)
76
+ . ${srcdir}/configure.host
194
77
 
195
- if test $TARGETDIR = unknown; then
78
+ if test -n "${UNSUPPORTED}"; then
196
79
  AC_MSG_ERROR(["libffi has not been ported to $host."])
197
80
  fi
198
81
 
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)
82
+ AC_SUBST(AM_RUNTESTFLAGS)
83
+ AC_SUBST(AM_LTLDFLAGS)
226
84
 
227
85
  AC_HEADER_STDC
228
86
  AC_CHECK_FUNCS(memcpy)
@@ -234,30 +92,27 @@ AC_CHECK_SIZEOF(long double)
234
92
  # Also AC_SUBST this variable for ffi.h.
235
93
  if test -z "$HAVE_LONG_DOUBLE"; then
236
94
  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
95
+ if test $ac_cv_sizeof_long_double != 0; then
96
+ if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
97
+ AC_DEFINE(HAVE_LONG_DOUBLE_VARIANT, 1, [Define if you support more than one size of the long double type])
239
98
  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])
99
+ else
100
+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
101
+ HAVE_LONG_DOUBLE=1
102
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
103
+ fi
241
104
  fi
242
105
  fi
243
106
  fi
244
107
  AC_SUBST(HAVE_LONG_DOUBLE)
108
+ AC_SUBST(HAVE_LONG_DOUBLE_VARIANT)
245
109
 
246
110
  AC_C_BIGENDIAN
247
111
 
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
112
+ GCC_AS_CFI_PSEUDO_OP
259
113
 
260
- if test x$TARGET = xSPARC; then
114
+ case "$TARGET" in
115
+ SPARC)
261
116
  AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
262
117
  libffi_cv_as_sparc_ua_pcrel, [
263
118
  save_CFLAGS="$CFLAGS"
@@ -278,7 +133,7 @@ if test x$TARGET = xSPARC; then
278
133
  libffi_cv_as_register_pseudo_op, [
279
134
  libffi_cv_as_register_pseudo_op=unknown
280
135
  # Check if we have .register
281
- AC_TRY_COMPILE([asm (".register %g2, #scratch");],,
136
+ AC_TRY_COMPILE(,[asm (".register %g2, #scratch");],
282
137
  [libffi_cv_as_register_pseudo_op=yes],
283
138
  [libffi_cv_as_register_pseudo_op=no])
284
139
  ])
@@ -286,66 +141,63 @@ if test x$TARGET = xSPARC; then
286
141
  AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
287
142
  [Define if your assembler supports .register.])
288
143
  fi
289
- fi
144
+ ;;
290
145
 
291
- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
146
+ X86*)
292
147
  AC_CACHE_CHECK([assembler supports pc related relocs],
293
148
  libffi_cv_as_x86_pcrel, [
294
149
  libffi_cv_as_x86_pcrel=no
295
150
  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
151
+ if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
152
+ libffi_cv_as_x86_pcrel=yes
298
153
  fi
299
154
  ])
300
155
  if test "x$libffi_cv_as_x86_pcrel" = xyes; then
301
156
  AC_DEFINE(HAVE_AS_X86_PCREL, 1,
302
157
  [Define if your assembler supports PC relative relocs.])
303
158
  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.])
159
+ ;;
160
+
161
+ S390)
162
+ AC_CACHE_CHECK([compiler uses zarch features],
163
+ libffi_cv_as_s390_zarch, [
164
+ libffi_cv_as_s390_zarch=no
165
+ echo 'void foo(void) { bar(); bar(); }' > conftest.c
166
+ if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then
167
+ if grep -q brasl conftest.s; then
168
+ libffi_cv_as_s390_zarch=yes
169
+ fi
170
+ fi
171
+ ])
172
+ if test "x$libffi_cv_as_s390_zarch" = xyes; then
173
+ AC_DEFINE(HAVE_AS_S390_ZARCH, 1,
174
+ [Define if the compiler uses zarch features.])
316
175
  fi
176
+ ;;
177
+ esac
317
178
 
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
179
+ # On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
180
+ AC_ARG_ENABLE(pax_emutramp,
181
+ [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC],
182
+ if test "$enable_pax_emutramp" = "yes"; then
183
+ AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1,
184
+ [Define this if you want to enable pax emulated trampolines])
185
+ fi)
331
186
 
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
187
+ LT_SYS_SYMBOL_USCORE
188
+ if test "x$sys_symbol_underscore" = xyes; then
189
+ AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
337
190
  fi
338
191
 
339
-
340
192
  FFI_EXEC_TRAMPOLINE_TABLE=0
341
193
  case "$target" in
342
- *arm*-apple-darwin*)
194
+ *arm*-apple-darwin* | aarch64-apple-darwin*)
343
195
  FFI_EXEC_TRAMPOLINE_TABLE=1
344
196
  AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1,
345
197
  [Cannot use PROT_EXEC on this target, so, we revert to
346
198
  alternative means])
347
199
  ;;
348
- *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
200
+ *-apple-darwin* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
349
201
  AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
350
202
  [Cannot use malloc on this target, so, we revert to
351
203
  alternative means])
@@ -355,12 +207,28 @@ AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
355
207
  AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
356
208
 
357
209
  if test x$TARGET = xX86_64; then
358
- AC_CACHE_CHECK([assembler supports unwind section type],
210
+ AC_CACHE_CHECK([toolchain supports unwind section type],
359
211
  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
212
+ cat > conftest1.s << EOF
213
+ .text
214
+ .globl foo
215
+ foo:
216
+ jmp bar
217
+ .section .eh_frame,"a",@unwind
218
+ bar:
219
+ EOF
220
+
221
+ cat > conftest2.c << EOF
222
+ extern void foo();
223
+ int main(){foo();}
224
+ EOF
225
+
226
+ libffi_cv_as_x86_64_unwind_section_type=no
227
+ # we ensure that we can compile _and_ link an assembly file containing an @unwind section
228
+ # since the compiler can support it and not the linker (ie old binutils)
229
+ if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
230
+ $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
231
+ libffi_cv_as_x86_64_unwind_section_type=yes
364
232
  fi
365
233
  ])
366
234
  if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
@@ -374,13 +242,16 @@ if test "x$GCC" = "xyes"; then
374
242
  libffi_cv_ro_eh_frame, [
375
243
  libffi_cv_ro_eh_frame=no
376
244
  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
245
+ if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
246
+ objdump -h conftest.o > conftest.dump 2>&1
247
+ libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
248
+ if test "x$libffi_eh_frame_line" != "x"; then
249
+ libffi_test_line=`expr $libffi_eh_frame_line + 1`p
250
+ sed -n $libffi_test_line conftest.dump > conftest.line
251
+ if grep READONLY conftest.line > /dev/null; then
252
+ libffi_cv_ro_eh_frame=yes
253
+ fi
254
+ fi
384
255
  fi
385
256
  rm -f conftest.*
386
257
  ])
@@ -411,6 +282,13 @@ if test "x$GCC" = "xyes"; then
411
282
  fi
412
283
  fi
413
284
 
285
+ AC_ARG_ENABLE(docs,
286
+ AC_HELP_STRING([--disable-docs],
287
+ [Disable building of docs (default: no)]),
288
+ [enable_docs=no],
289
+ [enable_docs=yes])
290
+ AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes])
291
+
414
292
  AH_BOTTOM([
415
293
  #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
416
294
  #ifdef LIBFFI_ASM
@@ -430,6 +308,14 @@ AH_BOTTOM([
430
308
  AC_SUBST(TARGET)
431
309
  AC_SUBST(TARGETDIR)
432
310
 
311
+ changequote(<,>)
312
+ TARGET_OBJ=
313
+ for i in $SOURCES; do
314
+ TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'`
315
+ done
316
+ changequote([,])
317
+ AC_SUBST(TARGET_OBJ)
318
+
433
319
  AC_SUBST(SHELL)
434
320
 
435
321
  AC_ARG_ENABLE(debug,
@@ -442,13 +328,14 @@ AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
442
328
  AC_ARG_ENABLE(structs,
443
329
  [ --disable-structs omit code for struct support],
444
330
  if test "$enable_structs" = "no"; then
445
- AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.])
331
+ AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.])
446
332
  fi)
333
+ AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
447
334
 
448
335
  AC_ARG_ENABLE(raw-api,
449
336
  [ --disable-raw-api make the raw api unavailable],
450
337
  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.])
338
+ AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.])
452
339
  fi)
453
340
 
454
341
  AC_ARG_ENABLE(purify-safety,
@@ -457,31 +344,36 @@ AC_ARG_ENABLE(purify-safety,
457
344
  AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
458
345
  fi)
459
346
 
347
+ AC_ARG_ENABLE(multi-os-directory,
348
+ [ --disable-multi-os-directory
349
+ disable use of gcc --print-multi-os-directory to change the library installation directory])
350
+
460
351
  # These variables are only ever used when we cross-build to X86_WIN32.
461
352
  # And we only support this with GCC, so...
462
- if test x"$GCC" != x"no"; then
353
+ if test "x$GCC" = "xyes"; then
463
354
  if test -n "$with_cross_host" &&
464
355
  test x"$with_cross_host" != x"no"; then
465
- toolexecdir='$(exec_prefix)/$(target_alias)'
466
- toolexeclibdir='$(toolexecdir)/lib'
356
+ toolexecdir="${exec_prefix}"/'$(target_alias)'
357
+ toolexeclibdir="${toolexecdir}"/lib
467
358
  else
468
- toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
469
- toolexeclibdir='$(libdir)'
359
+ toolexecdir="${libdir}"/gcc-lib/'$(target_alias)'
360
+ toolexeclibdir="${libdir}"
361
+ fi
362
+ if test x"$enable_multi_os_directory" != x"no"; then
363
+ multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
364
+ case $multi_os_directory in
365
+ .) ;; # Avoid trailing /.
366
+ ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
367
+ esac
470
368
  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
369
  AC_SUBST(toolexecdir)
477
- AC_SUBST(toolexeclibdir)
478
- fi
479
-
480
- if test "${multilib}" = "yes"; then
481
- multilib_arg="--enable-multilib"
482
370
  else
483
- multilib_arg=
371
+ toolexeclibdir="${libdir}"
484
372
  fi
373
+ AC_SUBST(toolexeclibdir)
374
+
375
+ # Check linker support.
376
+ LIBFFI_ENABLE_SYMVERS
485
377
 
486
378
  AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
487
379
  AC_CONFIG_COMMANDS(src, [
@@ -491,6 +383,6 @@ test -d src/$TARGETDIR || mkdir src/$TARGETDIR
491
383
 
492
384
  AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
493
385
 
494
- AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc)
386
+ AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc)
495
387
 
496
388
  AC_OUTPUT