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
@@ -0,0 +1,19 @@
1
+ #ifdef __aarch64__
2
+ # define STATIC_CHAIN_REG "x18"
3
+ #elif defined(__alpha__)
4
+ # define STATIC_CHAIN_REG "$1"
5
+ #elif defined(__arm__)
6
+ # define STATIC_CHAIN_REG "ip"
7
+ #elif defined(__sparc__)
8
+ # if defined(__arch64__) || defined(__sparcv9)
9
+ # define STATIC_CHAIN_REG "g5"
10
+ # else
11
+ # define STATIC_CHAIN_REG "g2"
12
+ # endif
13
+ #elif defined(__x86_64__)
14
+ # define STATIC_CHAIN_REG "r10"
15
+ #elif defined(__i386__)
16
+ # ifndef ABI_NUM
17
+ # define STATIC_CHAIN_REG "ecx" /* FFI_DEFAULT_ABI only */
18
+ # endif
19
+ #endif
@@ -14,10 +14,10 @@ Gem::Specification.new do |s|
14
14
  s.rdoc_options = %w[--exclude=ext/ffi_c/.*\.o$ --exclude=ffi_c\.(bundle|so)$]
15
15
  s.license = 'BSD-3-Clause'
16
16
  s.require_paths << 'ext/ffi_c'
17
- s.required_ruby_version = '>= 1.8.7'
17
+ s.required_ruby_version = '>= 1.9'
18
18
  s.add_development_dependency 'rake', '~> 10.1'
19
19
  s.add_development_dependency 'rake-compiler', '~> 1.0'
20
- s.add_development_dependency 'rake-compiler-dock', '~> 0.6.0'
20
+ s.add_development_dependency 'rake-compiler-dock', '~> 0.6.2'
21
21
  s.add_development_dependency 'rspec', '~> 2.14.1'
22
22
  s.add_development_dependency 'rubygems-tasks', "~> 0.2.4"
23
23
  end
@@ -169,4 +169,128 @@ module FFI
169
169
  @vk_map[val] || val
170
170
  end
171
171
  end
172
+
173
+ # Represents a C enum whose values are power of 2
174
+ #
175
+ # @example
176
+ # enum {
177
+ # red = (1<<0),
178
+ # green = (1<<1),
179
+ # blue = (1<<2)
180
+ # }
181
+ #
182
+ # Contrary to classical enums, bitmask values are usually combined
183
+ # when used.
184
+ class Bitmask < Enum
185
+
186
+ # @overload initialize(info, tag=nil)
187
+ # @param [nil, Enumerable] info symbols and bit rank for new Bitmask
188
+ # @param [nil, Symbol] tag name of new Bitmask
189
+ # @overload initialize(native_type, info, tag=nil)
190
+ # @param [FFI::Type] native_type Native type for new Bitmask
191
+ # @param [nil, Enumerable] info symbols and bit rank for new Bitmask
192
+ # @param [nil, Symbol] tag name of new Bitmask
193
+ def initialize(*args)
194
+ @native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT
195
+ info, @tag = *args
196
+ @kv_map = Hash.new
197
+ unless info.nil?
198
+ last_cst = nil
199
+ value = 0
200
+ info.each do |i|
201
+ case i
202
+ when Symbol
203
+ raise ArgumentError, "duplicate bitmask key" if @kv_map.has_key?(i)
204
+ @kv_map[i] = 1 << value
205
+ last_cst = i
206
+ value += 1
207
+ when Integer
208
+ raise ArgumentError, "bitmask index should be positive" if i<0
209
+ @kv_map[last_cst] = 1 << i
210
+ value = i+1
211
+ end
212
+ end
213
+ end
214
+ @vk_map = @kv_map.invert
215
+ end
216
+
217
+ # Get a symbol list or a value from the bitmask
218
+ # @overload [](*query)
219
+ # Get bitmask value from symbol list
220
+ # @param [Symbol] query
221
+ # @return [Integer]
222
+ # @overload [](query)
223
+ # Get bitmaks value from symbol array
224
+ # @param [Array<Symbol>] query
225
+ # @return [Integer]
226
+ # @overload [](*query)
227
+ # Get a list of bitmask symbols corresponding to
228
+ # the or reduction of a list of integer
229
+ # @param [Integer] query
230
+ # @return [Array<Symbol>]
231
+ # @overload [](query)
232
+ # Get a list of bitmask symbols corresponding to
233
+ # the or reduction of a list of integer
234
+ # @param [Array<Integer>] query
235
+ # @return [Array<Symbol>]
236
+ def [](*query)
237
+ flat_query = query.flatten
238
+ raise ArgumentError, "query should be homogeneous, #{query.inspect}" unless flat_query.all? { |o| o.is_a?(Symbol) } || flat_query.all? { |o| o.is_a?(Integer) || o.respond_to?(:to_int) }
239
+ case flat_query[0]
240
+ when Symbol
241
+ flat_query.inject(0) do |val, o|
242
+ v = @kv_map[o]
243
+ if v then val |= v else val end
244
+ end
245
+ when Integer, ->(o) { o.respond_to?(:to_int) }
246
+ val = flat_query.inject(0) { |mask, o| mask |= o.to_int }
247
+ @kv_map.select { |_, v| v & val != 0 }.keys
248
+ end
249
+ end
250
+
251
+ # Get the native value of a bitmask
252
+ # @overload to_native(query, ctx)
253
+ # @param [Symbol, Integer, #to_int] query
254
+ # @param ctx unused
255
+ # @return [Integer] value of a bitmask
256
+ # @overload to_native(query, ctx)
257
+ # @param [Array<Symbol, Integer, #to_int>] query
258
+ # @param ctx unused
259
+ # @return [Integer] value of a bitmask
260
+ def to_native(query, ctx)
261
+ return 0 if query.nil?
262
+ flat_query = [query].flatten
263
+ flat_query.inject(0) do |val, o|
264
+ case o
265
+ when Symbol
266
+ v = @kv_map[o]
267
+ raise ArgumentError, "invalid bitmask value, #{o.inspect}" unless v
268
+ val |= v
269
+ when Integer
270
+ val |= o
271
+ when ->(obj) { obj.respond_to?(:to_int) }
272
+ val |= o.to_int
273
+ else
274
+ raise ArgumentError, "invalid bitmask value, #{o.inspect}"
275
+ end
276
+ end
277
+ end
278
+
279
+ # @param [Integer] val
280
+ # @param ctx unused
281
+ # @return [Array<Symbol, Integer>] list of symbol names corresponding to val, plus an optional remainder if some bits don't match any constant
282
+ def from_native(val, ctx)
283
+ list = @kv_map.select { |_, v| v & val != 0 }.keys
284
+ # If there are unmatch flags,
285
+ # return them in an integer,
286
+ # else information can be lost.
287
+ # Similar to Enum behavior.
288
+ remainder = val ^ list.inject(0) do |tmp, o|
289
+ v = @kv_map[o]
290
+ if v then tmp |= v else tmp end
291
+ end
292
+ list.push remainder unless remainder == 0
293
+ return list
294
+ end
295
+ end
172
296
  end
@@ -447,6 +447,28 @@ module FFI
447
447
  end
448
448
  end
449
449
 
450
+ private
451
+ # Generic enum builder
452
+ # @param [Class] klass can be one of FFI::Enum or FFI::Bitmask
453
+ # @param args (see #enum or #bitmask)
454
+ def generic_enum(klass, *args)
455
+ native_type = args.first.kind_of?(FFI::Type) ? args.shift : nil
456
+ name, values = if args[0].kind_of?(Symbol) && args[1].kind_of?(Array)
457
+ [ args[0], args[1] ]
458
+ elsif args[0].kind_of?(Array)
459
+ [ nil, args[0] ]
460
+ else
461
+ [ nil, args ]
462
+ end
463
+ @ffi_enums = FFI::Enums.new unless defined?(@ffi_enums)
464
+ @ffi_enums << (e = native_type ? klass.new(native_type, values, name) : klass.new(values, name))
465
+
466
+ # If called with a name, add a typedef alias
467
+ typedef(e, name) if name
468
+ e
469
+ end
470
+
471
+ public
450
472
  # @overload enum(name, values)
451
473
  # Create a named enum.
452
474
  # @example
@@ -485,20 +507,50 @@ module FFI
485
507
  # @return [FFI::Enum]
486
508
  # Create a new {FFI::Enum}.
487
509
  def enum(*args)
488
- native_type = args.first.kind_of?(FFI::Type) ? args.shift : nil
489
- name, values = if args[0].kind_of?(Symbol) && args[1].kind_of?(Array)
490
- [ args[0], args[1] ]
491
- elsif args[0].kind_of?(Array)
492
- [ nil, args[0] ]
493
- else
494
- [ nil, args ]
495
- end
496
- @ffi_enums = FFI::Enums.new unless defined?(@ffi_enums)
497
- @ffi_enums << (e = native_type ? FFI::Enum.new(native_type, values, name) : FFI::Enum.new(values, name))
510
+ generic_enum(FFI::Enum, *args)
511
+ end
498
512
 
499
- # If called as enum :foo, [ :zero, :one, :two ], add a typedef alias
500
- typedef(e, name) if name
501
- e
513
+ # @overload bitmask(name, values)
514
+ # Create a named bitmask
515
+ # @example
516
+ # bitmask :foo, [:red, :green, :blue] # bits 0,1,2 are used
517
+ # bitmask :foo, [:red, :green, 5, :blue] # bits 0,5,6 are used
518
+ # @param [Symbol] name for new bitmask
519
+ # @param [Array<Symbol, Integer>] values for new bitmask
520
+ # @overload bitmask(*args)
521
+ # Create an unamed bitmask
522
+ # @example
523
+ # bm = bitmask :red, :green, :blue # bits 0,1,2 are used
524
+ # bm = bitmask :red, :green, 5, blue # bits 0,5,6 are used
525
+ # @param [Symbol, Integer] args values for new bitmask
526
+ # @overload bitmask(values)
527
+ # Create an unamed bitmask
528
+ # @example
529
+ # bm = bitmask [:red, :green, :blue] # bits 0,1,2 are used
530
+ # bm = bitmask [:red, :green, 5, blue] # bits 0,5,6 are used
531
+ # @param [Array<Symbol, Integer>] values for new bitmask
532
+ # @overload bitmask(native_type, name, values)
533
+ # Create a named enum and specify the native type.
534
+ # @example
535
+ # bitmask FFI::Type::UINT64, :foo, [:red, :green, :blue]
536
+ # @param [FFI::Type] native_type native type for new bitmask
537
+ # @param [Symbol] name for new bitmask
538
+ # @param [Array<Symbol, Integer>] values for new bitmask
539
+ # @overload bitmask(native_type, *args)
540
+ # @example
541
+ # bitmask FFI::Type::UINT64, :red, :green, :blue
542
+ # @param [FFI::Type] native_type native type for new bitmask
543
+ # @param [Symbol, Integer] args values for new bitmask
544
+ # @overload bitmask(native_type, values)
545
+ # Create a named enum and specify the native type.
546
+ # @example
547
+ # bitmask FFI::Type::UINT64, [:red, :green, :blue]
548
+ # @param [FFI::Type] native_type native type for new bitmask
549
+ # @param [Array<Symbol, Integer>] values for new bitmask
550
+ # @return [FFI::Bitmask]
551
+ # Create a new FFI::Bitmask
552
+ def bitmask(*args)
553
+ generic_enum(FFI::Bitmask, *args)
502
554
  end
503
555
 
504
556
  # @param name
@@ -63,6 +63,8 @@ module FFI
63
63
  "powerpc64"
64
64
  when /ppc|powerpc/
65
65
  "powerpc"
66
+ when /sparcv9|sparc64/
67
+ "sparcv9"
66
68
  else
67
69
  case RbConfig::CONFIG['host_cpu']
68
70
  when /^arm/
@@ -95,7 +97,7 @@ module FFI
95
97
  public
96
98
 
97
99
  LIBPREFIX = case OS
98
- when /windows/
100
+ when /windows|msys/
99
101
  ''
100
102
  when /cygwin/
101
103
  'cyg'
@@ -108,7 +110,7 @@ module FFI
108
110
  'dylib'
109
111
  when /linux|bsd|solaris/
110
112
  'so'
111
- when /windows|cygwin/
113
+ when /windows|cygwin|msys/
112
114
  'dll'
113
115
  else
114
116
  # Punt and just assume a sane unix (i.e. anything but AIX)
@@ -121,6 +123,9 @@ module FFI
121
123
  GNU_LIBC
122
124
  elsif OS == 'cygwin'
123
125
  "cygwin1.dll"
126
+ elsif OS == 'msys'
127
+ # Not sure how msys 1.0 behaves, tested on MSYS2.
128
+ "msys-2.0.dll"
124
129
  else
125
130
  "#{LIBPREFIX}c.#{LIBSUFFIX}"
126
131
  end
@@ -0,0 +1,102 @@
1
+ rbx.platform.typedef.__u_char = uchar
2
+ rbx.platform.typedef.__u_short = ushort
3
+ rbx.platform.typedef.__u_int = uint
4
+ rbx.platform.typedef.__u_long = ulong
5
+ rbx.platform.typedef.__int8_t = char
6
+ rbx.platform.typedef.__uint8_t = uchar
7
+ rbx.platform.typedef.__int16_t = short
8
+ rbx.platform.typedef.__uint16_t = ushort
9
+ rbx.platform.typedef.__int32_t = int
10
+ rbx.platform.typedef.__uint32_t = uint
11
+ rbx.platform.typedef.__int64_t = long
12
+ rbx.platform.typedef.__uint64_t = ulong
13
+ rbx.platform.typedef.__quad_t = long
14
+ rbx.platform.typedef.__u_quad_t = ulong
15
+ rbx.platform.typedef.__dev_t = ulong
16
+ rbx.platform.typedef.__uid_t = uint
17
+ rbx.platform.typedef.__gid_t = uint
18
+ rbx.platform.typedef.__ino_t = ulong
19
+ rbx.platform.typedef.__ino64_t = ulong
20
+ rbx.platform.typedef.__mode_t = uint
21
+ rbx.platform.typedef.__nlink_t = uint
22
+ rbx.platform.typedef.__off_t = long
23
+ rbx.platform.typedef.__off64_t = long
24
+ rbx.platform.typedef.__pid_t = int
25
+ rbx.platform.typedef.__clock_t = long
26
+ rbx.platform.typedef.__rlim_t = ulong
27
+ rbx.platform.typedef.__rlim64_t = ulong
28
+ rbx.platform.typedef.__id_t = uint
29
+ rbx.platform.typedef.__time_t = long
30
+ rbx.platform.typedef.__useconds_t = uint
31
+ rbx.platform.typedef.__suseconds_t = int
32
+ rbx.platform.typedef.__daddr_t = int
33
+ rbx.platform.typedef.__swblk_t = long
34
+ rbx.platform.typedef.__key_t = int
35
+ rbx.platform.typedef.__clockid_t = int
36
+ rbx.platform.typedef.__timer_t = pointer
37
+ rbx.platform.typedef.__blksize_t = long
38
+ rbx.platform.typedef.__blkcnt_t = long
39
+ rbx.platform.typedef.__blkcnt64_t = long
40
+ rbx.platform.typedef.__fsblkcnt_t = ulong
41
+ rbx.platform.typedef.__fsblkcnt64_t = ulong
42
+ rbx.platform.typedef.__fsfilcnt_t = ulong
43
+ rbx.platform.typedef.__fsfilcnt64_t = ulong
44
+ rbx.platform.typedef.__ssize_t = long
45
+ rbx.platform.typedef.__loff_t = long
46
+ rbx.platform.typedef.*__qaddr_t = long
47
+ rbx.platform.typedef.*__caddr_t = char
48
+ rbx.platform.typedef.__intptr_t = long
49
+ rbx.platform.typedef.__socklen_t = uint
50
+ rbx.platform.typedef.u_char = uchar
51
+ rbx.platform.typedef.u_short = ushort
52
+ rbx.platform.typedef.u_int = uint
53
+ rbx.platform.typedef.u_long = ulong
54
+ rbx.platform.typedef.quad_t = long
55
+ rbx.platform.typedef.u_quad_t = ulong
56
+ rbx.platform.typedef.loff_t = long
57
+ rbx.platform.typedef.ino_t = ulong
58
+ rbx.platform.typedef.dev_t = ulong
59
+ rbx.platform.typedef.gid_t = uint
60
+ rbx.platform.typedef.mode_t = uint
61
+ rbx.platform.typedef.nlink_t = uint
62
+ rbx.platform.typedef.uid_t = uint
63
+ rbx.platform.typedef.off_t = long
64
+ rbx.platform.typedef.pid_t = int
65
+ rbx.platform.typedef.id_t = uint
66
+ rbx.platform.typedef.ssize_t = long
67
+ rbx.platform.typedef.daddr_t = int
68
+ rbx.platform.typedef.key_t = int
69
+ rbx.platform.typedef.clock_t = long
70
+ rbx.platform.typedef.time_t = long
71
+ rbx.platform.typedef.clockid_t = int
72
+ rbx.platform.typedef.timer_t = pointer
73
+ rbx.platform.typedef.size_t = ulong
74
+ rbx.platform.typedef.ulong = ulong
75
+ rbx.platform.typedef.ushort = ushort
76
+ rbx.platform.typedef.uint = uint
77
+ rbx.platform.typedef.int8_t = char
78
+ rbx.platform.typedef.int16_t = short
79
+ rbx.platform.typedef.int32_t = int
80
+ rbx.platform.typedef.int64_t = long_long
81
+ rbx.platform.typedef.u_int8_t = uchar
82
+ rbx.platform.typedef.u_int16_t = ushort
83
+ rbx.platform.typedef.u_int32_t = uint
84
+ rbx.platform.typedef.u_int64_t = ulong_long
85
+ rbx.platform.typedef.register_t = long
86
+ rbx.platform.typedef.__sig_atomic_t = int
87
+ rbx.platform.typedef.suseconds_t = int
88
+ rbx.platform.typedef.__fd_mask = long
89
+ rbx.platform.typedef.fd_mask = long
90
+ rbx.platform.typedef.blksize_t = long
91
+ rbx.platform.typedef.blkcnt_t = long
92
+ rbx.platform.typedef.fsblkcnt_t = ulong
93
+ rbx.platform.typedef.fsfilcnt_t = ulong
94
+ rbx.platform.typedef.pthread_t = ulong
95
+ rbx.platform.typedef.pthread_key_t = uint
96
+ rbx.platform.typedef.pthread_once_t = int
97
+ rbx.platform.typedef.socklen_t = uint
98
+ rbx.platform.typedef.sa_family_t = ushort
99
+ rbx.platform.typedef.rlim_t = ulong
100
+ rbx.platform.typedef.__rlimit_resource_t = int
101
+ rbx.platform.typedef.__rusage_who_t = int
102
+ rbx.platform.typedef.__priority_which_t = int
@@ -1,27 +1,120 @@
1
- rbx.platform.typedef.size_t = ulong_long
2
- rbx.platform.typedef.ssize_t = long_long
3
- rbx.platform.typedef.intptr_t = long_long
4
- rbx.platform.typedef.uintptr_t = ulong_long
5
- rbx.platform.typedef.ptrdiff_t = long_long
1
+ rbx.platform.typedef.__int8_t = char
2
+ rbx.platform.typedef.__uint8_t = uchar
3
+ rbx.platform.typedef.__int16_t = short
4
+ rbx.platform.typedef.__uint16_t = ushort
5
+ rbx.platform.typedef.__int_least16_t = short
6
+ rbx.platform.typedef.__uint_least16_t = ushort
7
+ rbx.platform.typedef.__int32_t = int
8
+ rbx.platform.typedef.__uint32_t = uint
9
+ rbx.platform.typedef.__int_least32_t = int
10
+ rbx.platform.typedef.__uint_least32_t = uint
11
+ rbx.platform.typedef.__int64_t = long_long
12
+ rbx.platform.typedef.__uint64_t = ulong_long
13
+ rbx.platform.typedef._off_t = long
14
+ rbx.platform.typedef.__dev_t = short
15
+ rbx.platform.typedef.__uid_t = ushort
16
+ rbx.platform.typedef.__gid_t = ushort
17
+ rbx.platform.typedef._off64_t = long_long
18
+ rbx.platform.typedef.fpos_t = long_long
19
+ rbx.platform.typedef._fpos_t = long_long
20
+ rbx.platform.typedef._fpos64_t = long_long
21
+ rbx.platform.typedef._ssize_t = long_long
6
22
  rbx.platform.typedef.wchar_t = ushort
7
- rbx.platform.typedef.wint_t = ushort
23
+ rbx.platform.typedef.wint_t = uint
8
24
  rbx.platform.typedef.wctype_t = ushort
9
- rbx.platform.typedef.errno_t = int
10
- rbx.platform.typedef.__time32_t = long
11
- rbx.platform.typedef.__time64_t = long_long
25
+ rbx.platform.typedef.ptrdiff_t = long_long
26
+ rbx.platform.typedef.size_t = ulong_long
27
+ rbx.platform.typedef.__off_t = long
28
+ rbx.platform.typedef.__pid_t = int
29
+ rbx.platform.typedef.__loff_t = long_long
30
+ rbx.platform.typedef.u_char = uchar
31
+ rbx.platform.typedef.u_short = ushort
32
+ rbx.platform.typedef.u_int = uint
33
+ rbx.platform.typedef.u_long = ulong
34
+ rbx.platform.typedef.ushort = ushort
35
+ rbx.platform.typedef.uint = uint
36
+ rbx.platform.typedef.ulong = ulong
37
+ rbx.platform.typedef.clock_t = ulong
12
38
  rbx.platform.typedef.time_t = long_long
13
- rbx.platform.typedef._ino_t = ushort
14
- rbx.platform.typedef.ino_t = ushort
39
+ rbx.platform.typedef.daddr_t = long
40
+ rbx.platform.typedef.caddr_t = string
41
+ rbx.platform.typedef.pid_t = int
42
+ rbx.platform.typedef.ssize_t = int
43
+ rbx.platform.typedef.nlink_t = ushort
44
+ rbx.platform.typedef.fd_mask = long
45
+ rbx.platform.typedef.clockid_t = ulong
46
+ rbx.platform.typedef.timer_t = ulong
47
+ rbx.platform.typedef.useconds_t = ulong
48
+ rbx.platform.typedef.suseconds_t = long
49
+ rbx.platform.typedef.int8_t = char
50
+ rbx.platform.typedef.int16_t = short
51
+ rbx.platform.typedef.int32_t = int
52
+ rbx.platform.typedef.int64_t = long_long
53
+ rbx.platform.typedef.uint8_t = uchar
54
+ rbx.platform.typedef.uint16_t = ushort
55
+ rbx.platform.typedef.uint32_t = uint
56
+ rbx.platform.typedef.uint64_t = ulong_long
57
+ rbx.platform.typedef.int_least8_t = char
58
+ rbx.platform.typedef.int_least16_t = short
59
+ rbx.platform.typedef.int_least32_t = int
60
+ rbx.platform.typedef.int_least64_t = long_long
61
+ rbx.platform.typedef.uint_least8_t = uchar
62
+ rbx.platform.typedef.uint_least16_t = ushort
63
+ rbx.platform.typedef.uint_least32_t = uint
64
+ rbx.platform.typedef.uint_least64_t = ulong_long
65
+ rbx.platform.typedef.int_fast8_t = char
66
+ rbx.platform.typedef.int_fast16_t = int
67
+ rbx.platform.typedef.int_fast32_t = int
68
+ rbx.platform.typedef.int_fast64_t = long_long
69
+ rbx.platform.typedef.uint_fast8_t = uchar
70
+ rbx.platform.typedef.uint_fast16_t = uint
71
+ rbx.platform.typedef.uint_fast32_t = uint
72
+ rbx.platform.typedef.uint_fast64_t = ulong_long
73
+ rbx.platform.typedef.intptr_t = long_long
74
+ rbx.platform.typedef.uintptr_t = ulong_long
75
+ rbx.platform.typedef.intmax_t = long_long
76
+ rbx.platform.typedef.uintmax_t = ulong_long
77
+ rbx.platform.typedef.off_t = long_long
78
+ rbx.platform.typedef.loff_t = long_long
79
+ rbx.platform.typedef.__dev16_t = short
80
+ rbx.platform.typedef.__dev32_t = ulong
15
81
  rbx.platform.typedef._dev_t = uint
16
82
  rbx.platform.typedef.dev_t = uint
17
- rbx.platform.typedef._pid_t = long_long
18
- rbx.platform.typedef.pid_t = long_long
83
+ rbx.platform.typedef.blksize_t = long
84
+ rbx.platform.typedef.__blkcnt32_t = long
85
+ rbx.platform.typedef.__blkcnt64_t = long_long
86
+ rbx.platform.typedef.blkcnt_t = long_long
87
+ rbx.platform.typedef.fsblkcnt_t = ulong
88
+ rbx.platform.typedef.fsfilcnt_t = ulong
89
+ rbx.platform.typedef.__uid16_t = ushort
90
+ rbx.platform.typedef.__uid32_t = ulong
91
+ rbx.platform.typedef.uid_t = ulong
92
+ rbx.platform.typedef.__gid16_t = ushort
93
+ rbx.platform.typedef.__gid32_t = ulong
94
+ rbx.platform.typedef.gid_t = ulong
95
+ rbx.platform.typedef.__ino32_t = ulong
96
+ rbx.platform.typedef.__ino64_t = ulong_long
97
+ rbx.platform.typedef.ino_t = ushort
98
+ rbx.platform.typedef._ino_t = ushort
99
+ rbx.platform.typedef.id_t = ulong
100
+ rbx.platform.typedef.key_t = long_long
101
+ rbx.platform.typedef.vm_offset_t = ulong
102
+ rbx.platform.typedef.vm_size_t = ulong
103
+ rbx.platform.typedef.u_int8_t = uchar
104
+ rbx.platform.typedef.u_int16_t = ushort
105
+ rbx.platform.typedef.u_int32_t = uint
106
+ rbx.platform.typedef.u_int64_t = ulong_long
107
+ rbx.platform.typedef.register_t = int
108
+ rbx.platform.typedef.*addr_t = char
109
+ rbx.platform.typedef.socklen_t = int
110
+ rbx.platform.typedef.sa_family_t = ushort
111
+ rbx.platform.typedef.__ULong = ulong
112
+ rbx.platform.typedef.sigset_t = ulong
113
+ rbx.platform.typedef.sig_atomic_t = int
114
+ rbx.platform.typedef.rlim_t = ulong
115
+ rbx.platform.typedef._sigset_t = ulong_long
116
+ rbx.platform.typedef.__time32_t = long
117
+ rbx.platform.typedef.__time64_t = long_long
118
+ rbx.platform.typedef.errno_t = int
19
119
  rbx.platform.typedef._mode_t = ushort
20
120
  rbx.platform.typedef.mode_t = ushort
21
- rbx.platform.typedef._off_t = long
22
- rbx.platform.typedef.off32_t = long
23
- rbx.platform.typedef._off64_t = long_long
24
- rbx.platform.typedef.off64_t = long_long
25
- rbx.platform.typedef.off_t = long_long
26
- rbx.platform.typedef.useconds_t = uint
27
- rbx.platform.typedef._sigset_t = ulong_long