ffi 1.16.3 → 1.17.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +42 -0
  4. data/Gemfile +9 -2
  5. data/README.md +1 -1
  6. data/Rakefile +17 -5
  7. data/lib/ffi/autopointer.rb +1 -9
  8. data/lib/ffi/dynamic_library.rb +34 -5
  9. data/lib/ffi/enum.rb +0 -1
  10. data/lib/ffi/function.rb +1 -1
  11. data/lib/ffi/io.rb +2 -2
  12. data/lib/ffi/library.rb +23 -23
  13. data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
  14. data/lib/ffi/pointer.rb +6 -6
  15. data/lib/ffi/struct.rb +4 -4
  16. data/lib/ffi/struct_layout.rb +2 -2
  17. data/lib/ffi/struct_layout_builder.rb +8 -8
  18. data/lib/ffi/types.rb +51 -49
  19. data/lib/ffi/version.rb +1 -1
  20. data/sig/ffi/abstract_memory.rbs +165 -0
  21. data/sig/ffi/auto_pointer.rbs +27 -0
  22. data/sig/ffi/buffer.rbs +18 -0
  23. data/sig/ffi/data_converter.rbs +10 -0
  24. data/sig/ffi/dynamic_library.rbs +9 -0
  25. data/sig/ffi/enum.rbs +38 -0
  26. data/sig/ffi/function.rbs +39 -0
  27. data/sig/ffi/library.rbs +42 -0
  28. data/sig/ffi/native_type.rbs +86 -0
  29. data/sig/ffi/pointer.rbs +42 -0
  30. data/sig/ffi/struct.rbs +76 -0
  31. data/sig/ffi/struct_by_reference.rbs +11 -0
  32. data/sig/ffi/struct_by_value.rbs +7 -0
  33. data/sig/ffi/struct_layout.rbs +9 -0
  34. data/sig/ffi/struct_layout_builder.rbs +5 -0
  35. data/sig/ffi/type.rbs +39 -0
  36. data/sig/ffi.rbs +26 -0
  37. data.tar.gz.sig +0 -0
  38. metadata +34 -532
  39. metadata.gz.sig +0 -0
  40. data/ext/ffi_c/AbstractMemory.c +0 -1128
  41. data/ext/ffi_c/AbstractMemory.h +0 -176
  42. data/ext/ffi_c/ArrayType.c +0 -198
  43. data/ext/ffi_c/ArrayType.h +0 -60
  44. data/ext/ffi_c/Buffer.c +0 -417
  45. data/ext/ffi_c/Call.c +0 -498
  46. data/ext/ffi_c/Call.h +0 -107
  47. data/ext/ffi_c/ClosurePool.c +0 -333
  48. data/ext/ffi_c/ClosurePool.h +0 -59
  49. data/ext/ffi_c/DynamicLibrary.c +0 -397
  50. data/ext/ffi_c/DynamicLibrary.h +0 -98
  51. data/ext/ffi_c/Function.c +0 -1063
  52. data/ext/ffi_c/Function.h +0 -84
  53. data/ext/ffi_c/FunctionInfo.c +0 -322
  54. data/ext/ffi_c/LastError.c +0 -243
  55. data/ext/ffi_c/LastError.h +0 -47
  56. data/ext/ffi_c/LongDouble.c +0 -65
  57. data/ext/ffi_c/LongDouble.h +0 -47
  58. data/ext/ffi_c/MappedType.c +0 -211
  59. data/ext/ffi_c/MappedType.h +0 -57
  60. data/ext/ffi_c/MemoryPointer.c +0 -219
  61. data/ext/ffi_c/MemoryPointer.h +0 -49
  62. data/ext/ffi_c/MethodHandle.c +0 -350
  63. data/ext/ffi_c/MethodHandle.h +0 -56
  64. data/ext/ffi_c/Platform.c +0 -78
  65. data/ext/ffi_c/Platform.h +0 -45
  66. data/ext/ffi_c/Pointer.c +0 -546
  67. data/ext/ffi_c/Pointer.h +0 -60
  68. data/ext/ffi_c/Struct.c +0 -897
  69. data/ext/ffi_c/Struct.h +0 -115
  70. data/ext/ffi_c/StructByValue.c +0 -177
  71. data/ext/ffi_c/StructByValue.h +0 -55
  72. data/ext/ffi_c/StructLayout.c +0 -769
  73. data/ext/ffi_c/Thread.c +0 -129
  74. data/ext/ffi_c/Thread.h +0 -76
  75. data/ext/ffi_c/Type.c +0 -447
  76. data/ext/ffi_c/Type.h +0 -63
  77. data/ext/ffi_c/Types.c +0 -138
  78. data/ext/ffi_c/Types.h +0 -88
  79. data/ext/ffi_c/Variadic.c +0 -345
  80. data/ext/ffi_c/compat.h +0 -82
  81. data/ext/ffi_c/extconf.rb +0 -115
  82. data/ext/ffi_c/ffi.c +0 -97
  83. data/ext/ffi_c/libffi/.appveyor/site.exp +0 -16
  84. data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +0 -7
  85. data/ext/ffi_c/libffi/.appveyor.yml +0 -84
  86. data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
  87. data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
  88. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
  89. data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
  90. data/ext/ffi_c/libffi/.ci/build.sh +0 -124
  91. data/ext/ffi_c/libffi/.ci/compile +0 -351
  92. data/ext/ffi_c/libffi/.ci/install.sh +0 -78
  93. data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
  94. data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
  95. data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
  96. data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
  97. data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
  98. data/ext/ffi_c/libffi/.ci/site.exp +0 -29
  99. data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
  100. data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
  101. data/ext/ffi_c/libffi/.gitattributes +0 -4
  102. data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
  103. data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -460
  104. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -171
  105. data/ext/ffi_c/libffi/.gitignore +0 -46
  106. data/ext/ffi_c/libffi/ChangeLog.old +0 -7407
  107. data/ext/ffi_c/libffi/LICENSE +0 -21
  108. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +0 -353
  109. data/ext/ffi_c/libffi/Makefile.am +0 -157
  110. data/ext/ffi_c/libffi/Makefile.in +0 -2127
  111. data/ext/ffi_c/libffi/README.md +0 -526
  112. data/ext/ffi_c/libffi/acinclude.m4 +0 -377
  113. data/ext/ffi_c/libffi/autogen.sh +0 -2
  114. data/ext/ffi_c/libffi/compile +0 -348
  115. data/ext/ffi_c/libffi/config.guess +0 -1754
  116. data/ext/ffi_c/libffi/config.sub +0 -1892
  117. data/ext/ffi_c/libffi/configure +0 -22791
  118. data/ext/ffi_c/libffi/configure.ac +0 -451
  119. data/ext/ffi_c/libffi/configure.host +0 -337
  120. data/ext/ffi_c/libffi/doc/Makefile.am +0 -3
  121. data/ext/ffi_c/libffi/doc/Makefile.in +0 -818
  122. data/ext/ffi_c/libffi/doc/libffi.texi +0 -1046
  123. data/ext/ffi_c/libffi/doc/version.texi +0 -4
  124. data/ext/ffi_c/libffi/fficonfig.h.in +0 -188
  125. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +0 -312
  126. data/ext/ffi_c/libffi/include/Makefile.am +0 -9
  127. data/ext/ffi_c/libffi/include/Makefile.in +0 -609
  128. data/ext/ffi_c/libffi/include/ffi.h.in +0 -527
  129. data/ext/ffi_c/libffi/include/ffi_cfi.h +0 -76
  130. data/ext/ffi_c/libffi/include/ffi_common.h +0 -182
  131. data/ext/ffi_c/libffi/include/tramp.h +0 -45
  132. data/ext/ffi_c/libffi/install-sh +0 -541
  133. data/ext/ffi_c/libffi/libffi.map.in +0 -76
  134. data/ext/ffi_c/libffi/libffi.pc.in +0 -11
  135. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +0 -997
  136. data/ext/ffi_c/libffi/libtool-ldflags +0 -106
  137. data/ext/ffi_c/libffi/libtool-version +0 -29
  138. data/ext/ffi_c/libffi/ltmain.sh +0 -11448
  139. data/ext/ffi_c/libffi/m4/asmcfi.m4 +0 -13
  140. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +0 -50
  141. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +0 -198
  142. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +0 -158
  143. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +0 -53
  144. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +0 -119
  145. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +0 -49
  146. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +0 -302
  147. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +0 -267
  148. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +0 -89
  149. data/ext/ffi_c/libffi/m4/ax_prepend_flag.m4 +0 -51
  150. data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +0 -37
  151. data/ext/ffi_c/libffi/make_sunver.pl +0 -333
  152. data/ext/ffi_c/libffi/man/Makefile.am +0 -8
  153. data/ext/ffi_c/libffi/man/Makefile.in +0 -565
  154. data/ext/ffi_c/libffi/man/ffi.3 +0 -41
  155. data/ext/ffi_c/libffi/man/ffi_call.3 +0 -103
  156. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +0 -68
  157. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +0 -73
  158. data/ext/ffi_c/libffi/missing +0 -215
  159. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.sln +0 -33
  160. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj +0 -130
  161. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters +0 -57
  162. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user +0 -4
  163. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +0 -511
  164. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h +0 -219
  165. data/ext/ffi_c/libffi/msvcc.sh +0 -353
  166. data/ext/ffi_c/libffi/src/aarch64/ffi.c +0 -1129
  167. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +0 -97
  168. data/ext/ffi_c/libffi/src/aarch64/internal.h +0 -100
  169. data/ext/ffi_c/libffi/src/aarch64/sysv.S +0 -543
  170. data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +0 -506
  171. data/ext/ffi_c/libffi/src/alpha/ffi.c +0 -521
  172. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +0 -57
  173. data/ext/ffi_c/libffi/src/alpha/internal.h +0 -23
  174. data/ext/ffi_c/libffi/src/alpha/osf.S +0 -282
  175. data/ext/ffi_c/libffi/src/arc/arcompact.S +0 -210
  176. data/ext/ffi_c/libffi/src/arc/ffi.c +0 -443
  177. data/ext/ffi_c/libffi/src/arc/ffitarget.h +0 -67
  178. data/ext/ffi_c/libffi/src/arm/ffi.c +0 -921
  179. data/ext/ffi_c/libffi/src/arm/ffitarget.h +0 -89
  180. data/ext/ffi_c/libffi/src/arm/internal.h +0 -17
  181. data/ext/ffi_c/libffi/src/arm/sysv.S +0 -456
  182. data/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +0 -311
  183. data/ext/ffi_c/libffi/src/avr32/ffi.c +0 -423
  184. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +0 -55
  185. data/ext/ffi_c/libffi/src/avr32/sysv.S +0 -208
  186. data/ext/ffi_c/libffi/src/bfin/ffi.c +0 -196
  187. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +0 -43
  188. data/ext/ffi_c/libffi/src/bfin/sysv.S +0 -179
  189. data/ext/ffi_c/libffi/src/closures.c +0 -1107
  190. data/ext/ffi_c/libffi/src/cris/ffi.c +0 -386
  191. data/ext/ffi_c/libffi/src/cris/ffitarget.h +0 -56
  192. data/ext/ffi_c/libffi/src/cris/sysv.S +0 -215
  193. data/ext/ffi_c/libffi/src/csky/ffi.c +0 -395
  194. data/ext/ffi_c/libffi/src/csky/ffitarget.h +0 -63
  195. data/ext/ffi_c/libffi/src/csky/sysv.S +0 -371
  196. data/ext/ffi_c/libffi/src/debug.c +0 -64
  197. data/ext/ffi_c/libffi/src/dlmalloc.c +0 -5171
  198. data/ext/ffi_c/libffi/src/frv/eabi.S +0 -128
  199. data/ext/ffi_c/libffi/src/frv/ffi.c +0 -292
  200. data/ext/ffi_c/libffi/src/frv/ffitarget.h +0 -62
  201. data/ext/ffi_c/libffi/src/ia64/ffi.c +0 -616
  202. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +0 -56
  203. data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +0 -40
  204. data/ext/ffi_c/libffi/src/ia64/unix.S +0 -585
  205. data/ext/ffi_c/libffi/src/java_raw_api.c +0 -374
  206. data/ext/ffi_c/libffi/src/kvx/asm.h +0 -5
  207. data/ext/ffi_c/libffi/src/kvx/ffi.c +0 -273
  208. data/ext/ffi_c/libffi/src/kvx/ffitarget.h +0 -75
  209. data/ext/ffi_c/libffi/src/kvx/sysv.S +0 -127
  210. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +0 -621
  211. data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +0 -82
  212. data/ext/ffi_c/libffi/src/loongarch64/sysv.S +0 -327
  213. data/ext/ffi_c/libffi/src/m32r/ffi.c +0 -249
  214. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +0 -53
  215. data/ext/ffi_c/libffi/src/m32r/sysv.S +0 -121
  216. data/ext/ffi_c/libffi/src/m68k/ffi.c +0 -362
  217. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +0 -54
  218. data/ext/ffi_c/libffi/src/m68k/sysv.S +0 -357
  219. data/ext/ffi_c/libffi/src/m88k/ffi.c +0 -400
  220. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +0 -49
  221. data/ext/ffi_c/libffi/src/m88k/obsd.S +0 -209
  222. data/ext/ffi_c/libffi/src/metag/ffi.c +0 -330
  223. data/ext/ffi_c/libffi/src/metag/ffitarget.h +0 -53
  224. data/ext/ffi_c/libffi/src/metag/sysv.S +0 -311
  225. data/ext/ffi_c/libffi/src/microblaze/ffi.c +0 -321
  226. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +0 -53
  227. data/ext/ffi_c/libffi/src/microblaze/sysv.S +0 -302
  228. data/ext/ffi_c/libffi/src/mips/ffi.c +0 -1309
  229. data/ext/ffi_c/libffi/src/mips/ffitarget.h +0 -251
  230. data/ext/ffi_c/libffi/src/mips/n32.S +0 -772
  231. data/ext/ffi_c/libffi/src/mips/o32.S +0 -561
  232. data/ext/ffi_c/libffi/src/moxie/eabi.S +0 -101
  233. data/ext/ffi_c/libffi/src/moxie/ffi.c +0 -310
  234. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +0 -52
  235. data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
  236. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
  237. data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
  238. data/ext/ffi_c/libffi/src/or1k/ffi.c +0 -341
  239. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +0 -58
  240. data/ext/ffi_c/libffi/src/or1k/sysv.S +0 -107
  241. data/ext/ffi_c/libffi/src/pa/ffi.c +0 -673
  242. data/ext/ffi_c/libffi/src/pa/ffi64.c +0 -614
  243. data/ext/ffi_c/libffi/src/pa/ffitarget.h +0 -94
  244. data/ext/ffi_c/libffi/src/pa/hpux32.S +0 -417
  245. data/ext/ffi_c/libffi/src/pa/hpux64.S +0 -681
  246. data/ext/ffi_c/libffi/src/pa/linux.S +0 -427
  247. data/ext/ffi_c/libffi/src/powerpc/aix.S +0 -566
  248. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +0 -694
  249. data/ext/ffi_c/libffi/src/powerpc/asm.h +0 -125
  250. data/ext/ffi_c/libffi/src/powerpc/darwin.S +0 -378
  251. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +0 -571
  252. data/ext/ffi_c/libffi/src/powerpc/ffi.c +0 -175
  253. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +0 -1452
  254. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +0 -1153
  255. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +0 -105
  256. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +0 -923
  257. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +0 -204
  258. data/ext/ffi_c/libffi/src/powerpc/linux64.S +0 -293
  259. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +0 -566
  260. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +0 -397
  261. data/ext/ffi_c/libffi/src/powerpc/sysv.S +0 -173
  262. data/ext/ffi_c/libffi/src/powerpc/t-aix +0 -5
  263. data/ext/ffi_c/libffi/src/prep_cif.c +0 -283
  264. data/ext/ffi_c/libffi/src/raw_api.c +0 -267
  265. data/ext/ffi_c/libffi/src/riscv/ffi.c +0 -514
  266. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +0 -69
  267. data/ext/ffi_c/libffi/src/riscv/sysv.S +0 -293
  268. data/ext/ffi_c/libffi/src/s390/ffi.c +0 -756
  269. data/ext/ffi_c/libffi/src/s390/ffitarget.h +0 -70
  270. data/ext/ffi_c/libffi/src/s390/internal.h +0 -11
  271. data/ext/ffi_c/libffi/src/s390/sysv.S +0 -325
  272. data/ext/ffi_c/libffi/src/sh/ffi.c +0 -717
  273. data/ext/ffi_c/libffi/src/sh/ffitarget.h +0 -54
  274. data/ext/ffi_c/libffi/src/sh/sysv.S +0 -850
  275. data/ext/ffi_c/libffi/src/sh64/ffi.c +0 -469
  276. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +0 -58
  277. data/ext/ffi_c/libffi/src/sh64/sysv.S +0 -539
  278. data/ext/ffi_c/libffi/src/sparc/ffi.c +0 -468
  279. data/ext/ffi_c/libffi/src/sparc/ffi64.c +0 -624
  280. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +0 -81
  281. data/ext/ffi_c/libffi/src/sparc/internal.h +0 -26
  282. data/ext/ffi_c/libffi/src/sparc/v8.S +0 -443
  283. data/ext/ffi_c/libffi/src/sparc/v9.S +0 -440
  284. data/ext/ffi_c/libffi/src/tile/ffi.c +0 -355
  285. data/ext/ffi_c/libffi/src/tile/ffitarget.h +0 -65
  286. data/ext/ffi_c/libffi/src/tile/tile.S +0 -360
  287. data/ext/ffi_c/libffi/src/tramp.c +0 -716
  288. data/ext/ffi_c/libffi/src/types.c +0 -108
  289. data/ext/ffi_c/libffi/src/vax/elfbsd.S +0 -195
  290. data/ext/ffi_c/libffi/src/vax/ffi.c +0 -276
  291. data/ext/ffi_c/libffi/src/vax/ffitarget.h +0 -49
  292. data/ext/ffi_c/libffi/src/wasm32/ffi.c +0 -934
  293. data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +0 -62
  294. data/ext/ffi_c/libffi/src/x86/asmnames.h +0 -30
  295. data/ext/ffi_c/libffi/src/x86/ffi.c +0 -832
  296. data/ext/ffi_c/libffi/src/x86/ffi64.c +0 -950
  297. data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -164
  298. data/ext/ffi_c/libffi/src/x86/ffiw64.c +0 -361
  299. data/ext/ffi_c/libffi/src/x86/internal.h +0 -43
  300. data/ext/ffi_c/libffi/src/x86/internal64.h +0 -36
  301. data/ext/ffi_c/libffi/src/x86/sysv.S +0 -1272
  302. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +0 -998
  303. data/ext/ffi_c/libffi/src/x86/unix64.S +0 -711
  304. data/ext/ffi_c/libffi/src/x86/win64.S +0 -254
  305. data/ext/ffi_c/libffi/src/x86/win64_intel.S +0 -238
  306. data/ext/ffi_c/libffi/src/xtensa/ffi.c +0 -306
  307. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +0 -57
  308. data/ext/ffi_c/libffi/src/xtensa/sysv.S +0 -268
  309. data/ext/ffi_c/libffi/stamp-h.in +0 -1
  310. data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -135
  311. data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -664
  312. data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
  313. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -54
  314. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -63
  315. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -80
  316. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -48
  317. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
  318. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
  319. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -682
  320. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
  321. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
  322. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
  323. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
  324. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
  325. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
  326. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
  327. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
  328. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
  329. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
  330. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
  331. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
  332. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
  333. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
  334. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -163
  335. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
  336. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
  337. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
  338. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
  339. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
  340. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
  341. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
  342. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
  343. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
  344. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
  345. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
  346. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
  347. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
  348. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
  349. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
  350. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
  351. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
  352. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
  353. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
  354. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
  355. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
  356. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
  357. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
  358. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
  359. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
  360. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
  361. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
  362. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
  363. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
  364. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
  365. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
  366. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
  367. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
  368. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
  369. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
  370. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
  371. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
  372. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
  373. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
  374. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
  375. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
  376. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
  377. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
  378. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
  379. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
  380. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
  381. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
  382. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
  383. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
  384. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
  385. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
  386. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
  387. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
  388. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
  389. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
  390. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
  391. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
  392. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
  393. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -134
  394. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -140
  395. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
  396. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
  397. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
  398. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
  399. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
  400. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
  401. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
  402. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
  403. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
  404. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
  405. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
  406. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
  407. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
  408. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
  409. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
  410. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
  411. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
  412. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
  413. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
  414. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
  415. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
  416. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
  417. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
  418. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
  419. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
  420. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
  421. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
  422. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
  423. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
  424. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
  425. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
  426. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
  427. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
  428. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
  429. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
  430. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
  431. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
  432. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
  433. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
  434. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
  435. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
  436. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
  437. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
  438. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
  439. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
  440. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
  441. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
  442. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
  443. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
  444. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
  445. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
  446. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
  447. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
  448. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
  449. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
  450. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
  451. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
  452. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
  453. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
  454. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
  455. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
  456. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
  457. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
  458. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
  459. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
  460. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
  461. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
  462. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
  463. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
  464. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
  465. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
  466. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
  467. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
  468. data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
  469. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
  470. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -343
  471. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
  472. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
  473. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
  474. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
  475. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
  476. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
  477. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
  478. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
  479. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
  480. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
  481. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
  482. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
  483. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
  484. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
  485. data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
  486. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
  487. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
  488. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
  489. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
  490. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
  491. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
  492. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
  493. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
  494. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -118
  495. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -55
  496. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
  497. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
  498. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
  499. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
  500. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
  501. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
  502. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
  503. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
  504. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
  505. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
  506. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
  507. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
  508. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
  509. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
  510. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
  511. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
  512. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
  513. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
  514. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
  515. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
  516. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
  517. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
  518. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
  519. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
  520. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
  521. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
  522. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
  523. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
  524. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
  525. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
  526. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
  527. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
  528. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
  529. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
  530. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
  531. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
  532. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
  533. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
  534. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
  535. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
  536. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
  537. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
  538. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
  539. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
  540. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
  541. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
  542. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
  543. data/ext/ffi_c/libffi.bsd.mk +0 -40
  544. data/ext/ffi_c/libffi.darwin.mk +0 -105
  545. data/ext/ffi_c/libffi.gnu.mk +0 -32
  546. data/ext/ffi_c/libffi.mk +0 -18
  547. data/ext/ffi_c/libffi.vc.mk +0 -26
  548. data/ext/ffi_c/libffi.vc64.mk +0 -26
  549. data/ext/ffi_c/rbffi.h +0 -55
  550. data/ext/ffi_c/rbffi_endian.h +0 -59
@@ -1,998 +0,0 @@
1
- /* -----------------------------------------------------------------------
2
- sysv.S - Copyright (c) 2017, 2022 Anthony Green
3
- - Copyright (c) 2013 The Written Word, Inc.
4
- - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
5
-
6
- X86 Foreign Function Interface
7
-
8
- Permission is hereby granted, free of charge, to any person obtaining
9
- a copy of this software and associated documentation files (the
10
- ``Software''), to deal in the Software without restriction, including
11
- without limitation the rights to use, copy, modify, merge, publish,
12
- distribute, sublicense, and/or sell copies of the Software, and to
13
- permit persons to whom the Software is furnished to do so, subject to
14
- the following conditions:
15
-
16
- The above copyright notice and this permission notice shall be included
17
- in all copies or substantial portions of the Software.
18
-
19
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
20
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26
- DEALINGS IN THE SOFTWARE.
27
- ----------------------------------------------------------------------- */
28
-
29
- #ifndef __x86_64__
30
- #ifdef _MSC_VER
31
-
32
- #define LIBFFI_ASM
33
- #include <fficonfig.h>
34
- #include <ffi.h>
35
- #include <ffi_cfi.h>
36
- #include "internal.h"
37
-
38
- #define C2(X, Y) X ## Y
39
- #define C1(X, Y) C2(X, Y)
40
- #define L(X) C1(L, X)
41
- # define ENDF(X) X ENDP
42
-
43
- /* This macro allows the safe creation of jump tables without an
44
- actual table. The entry points into the table are all 8 bytes.
45
- The use of ORG asserts that we're at the correct location. */
46
- /* ??? The clang assembler doesn't handle .org with symbolic expressions. */
47
- #if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__))
48
- # define E(BASE, X) ALIGN 8
49
- #else
50
- # define E(BASE, X) ALIGN 8; ORG BASE + X * 8
51
- #endif
52
-
53
- .686P
54
- .MODEL FLAT
55
-
56
- EXTRN @ffi_closure_inner@8:PROC
57
- _TEXT SEGMENT
58
-
59
- /* This is declared as
60
-
61
- void ffi_call_i386(struct call_frame *frame, char *argp)
62
- __attribute__((fastcall));
63
-
64
- Thus the arguments are present in
65
-
66
- ecx: frame
67
- edx: argp
68
- */
69
-
70
- ALIGN 16
71
- PUBLIC @ffi_call_i386@8
72
- @ffi_call_i386@8 PROC
73
- L(UW0):
74
- cfi_startproc
75
- #if !HAVE_FASTCALL
76
- mov ecx, [esp+4]
77
- mov edx, [esp+8]
78
- #endif
79
- mov eax, [esp] /* move the return address */
80
- mov [ecx], ebp /* store ebp into local frame */
81
- mov [ecx+4], eax /* store retaddr into local frame */
82
-
83
- /* New stack frame based off ebp. This is a itty bit of unwind
84
- trickery in that the CFA *has* changed. There is no easy way
85
- to describe it correctly on entry to the function. Fortunately,
86
- it doesn't matter too much since at all points we can correctly
87
- unwind back to ffi_call. Note that the location to which we
88
- moved the return address is (the new) CFA-4, so from the
89
- perspective of the unwind info, it hasn't moved. */
90
- mov ebp, ecx
91
- L(UW1):
92
- /* cfi_def_cfa(%ebp, 8) */
93
- /* cfi_rel_offset(%ebp, 0) */
94
-
95
- mov esp, edx /* set outgoing argument stack */
96
- mov eax, [20+R_EAX*4+ebp] /* set register arguments */
97
- mov edx, [20+R_EDX*4+ebp]
98
- mov ecx, [20+R_ECX*4+ebp]
99
-
100
- call dword ptr [ebp+8]
101
-
102
- mov ecx, [12+ebp] /* load return type code */
103
- mov [ebp+8], ebx /* preserve %ebx */
104
- L(UW2):
105
- /* cfi_rel_offset(%ebx, 8) */
106
-
107
- and ecx, X86_RET_TYPE_MASK
108
- lea ebx, [L(store_table) + ecx * 8]
109
- mov ecx, [ebp+16] /* load result address */
110
- jmp ebx
111
-
112
- ALIGN 8
113
- L(store_table):
114
- E(L(store_table), X86_RET_FLOAT)
115
- fstp DWORD PTR [ecx]
116
- jmp L(e1)
117
- E(L(store_table), X86_RET_DOUBLE)
118
- fstp QWORD PTR [ecx]
119
- jmp L(e1)
120
- E(L(store_table), X86_RET_LDOUBLE)
121
- fstp QWORD PTR [ecx]
122
- jmp L(e1)
123
- E(L(store_table), X86_RET_SINT8)
124
- movsx eax, al
125
- mov [ecx], eax
126
- jmp L(e1)
127
- E(L(store_table), X86_RET_SINT16)
128
- movsx eax, ax
129
- mov [ecx], eax
130
- jmp L(e1)
131
- E(L(store_table), X86_RET_UINT8)
132
- movzx eax, al
133
- mov [ecx], eax
134
- jmp L(e1)
135
- E(L(store_table), X86_RET_UINT16)
136
- movzx eax, ax
137
- mov [ecx], eax
138
- jmp L(e1)
139
- E(L(store_table), X86_RET_INT64)
140
- mov [ecx+4], edx
141
- /* fallthru */
142
- E(L(store_table), X86_RET_int 32)
143
- mov [ecx], eax
144
- /* fallthru */
145
- E(L(store_table), X86_RET_VOID)
146
- L(e1):
147
- mov ebx, [ebp+8]
148
- mov esp, ebp
149
- pop ebp
150
- L(UW3):
151
- /* cfi_remember_state */
152
- /* cfi_def_cfa(%esp, 4) */
153
- /* cfi_restore(%ebx) */
154
- /* cfi_restore(%ebp) */
155
- ret
156
- L(UW4):
157
- /* cfi_restore_state */
158
-
159
- E(L(store_table), X86_RET_STRUCTPOP)
160
- jmp L(e1)
161
- E(L(store_table), X86_RET_STRUCTARG)
162
- jmp L(e1)
163
- E(L(store_table), X86_RET_STRUCT_1B)
164
- mov [ecx], al
165
- jmp L(e1)
166
- E(L(store_table), X86_RET_STRUCT_2B)
167
- mov [ecx], ax
168
- jmp L(e1)
169
-
170
- /* Fill out the table so that bad values are predictable. */
171
- E(L(store_table), X86_RET_UNUSED14)
172
- int 3
173
- E(L(store_table), X86_RET_UNUSED15)
174
- int 3
175
-
176
- L(UW5):
177
- /* cfi_endproc */
178
- ENDF(@ffi_call_i386@8)
179
-
180
- /* The inner helper is declared as
181
-
182
- void ffi_closure_inner(struct closure_frame *frame, char *argp)
183
- __attribute_((fastcall))
184
-
185
- Thus the arguments are placed in
186
-
187
- ecx: frame
188
- edx: argp
189
- */
190
-
191
- /* Macros to help setting up the closure_data structure. */
192
-
193
- #if HAVE_FASTCALL
194
- # define closure_FS (40 + 4)
195
- # define closure_CF 0
196
- #else
197
- # define closure_FS (8 + 40 + 12)
198
- # define closure_CF 8
199
- #endif
200
-
201
- FFI_CLOSURE_SAVE_REGS MACRO
202
- mov [esp + closure_CF+16+R_EAX*4], eax
203
- mov [esp + closure_CF+16+R_EDX*4], edx
204
- mov [esp + closure_CF+16+R_ECX*4], ecx
205
- ENDM
206
-
207
- FFI_CLOSURE_COPY_TRAMP_DATA MACRO
208
- mov edx, [eax+FFI_TRAMPOLINE_SIZE] /* copy cif */
209
- mov ecx, [eax+FFI_TRAMPOLINE_SIZE+4] /* copy fun */
210
- mov eax, [eax+FFI_TRAMPOLINE_SIZE+8]; /* copy user_data */
211
- mov [esp+closure_CF+28], edx
212
- mov [esp+closure_CF+32], ecx
213
- mov [esp+closure_CF+36], eax
214
- ENDM
215
-
216
- #if HAVE_FASTCALL
217
- FFI_CLOSURE_PREP_CALL MACRO
218
- mov ecx, esp /* load closure_data */
219
- lea edx, [esp+closure_FS+4] /* load incoming stack */
220
- ENDM
221
- #else
222
- FFI_CLOSURE_PREP_CALL MACRO
223
- lea ecx, [esp+closure_CF] /* load closure_data */
224
- lea edx, [esp+closure_FS+4] /* load incoming stack */
225
- mov [esp], ecx
226
- mov [esp+4], edx
227
- ENDM
228
- #endif
229
-
230
- FFI_CLOSURE_CALL_INNER MACRO UWN
231
- call @ffi_closure_inner@8
232
- ENDM
233
-
234
- FFI_CLOSURE_MASK_AND_JUMP MACRO LABEL
235
- and eax, X86_RET_TYPE_MASK
236
- lea edx, [LABEL+eax*8]
237
- mov eax, [esp+closure_CF] /* optimiztic load */
238
- jmp edx
239
- ENDM
240
-
241
- ALIGN 16
242
- PUBLIC ffi_go_closure_EAX
243
- ffi_go_closure_EAX PROC C
244
- L(UW6):
245
- /* cfi_startproc */
246
- sub esp, closure_FS
247
- L(UW7):
248
- /* cfi_def_cfa_offset(closure_FS + 4) */
249
- FFI_CLOSURE_SAVE_REGS
250
- mov edx, [eax+4] /* copy cif */
251
- mov ecx, [eax +8] /* copy fun */
252
- mov [esp+closure_CF+28], edx
253
- mov [esp+closure_CF+32], ecx
254
- mov [esp+closure_CF+36], eax /* closure is user_data */
255
- jmp L(do_closure_i386)
256
- L(UW8):
257
- /* cfi_endproc */
258
- ENDF(ffi_go_closure_EAX)
259
-
260
- ALIGN 16
261
- PUBLIC ffi_go_closure_ECX
262
- ffi_go_closure_ECX PROC C
263
- L(UW9):
264
- /* cfi_startproc */
265
- sub esp, closure_FS
266
- L(UW10):
267
- /* cfi_def_cfa_offset(closure_FS + 4) */
268
- FFI_CLOSURE_SAVE_REGS
269
- mov edx, [ecx+4] /* copy cif */
270
- mov eax, [ecx+8] /* copy fun */
271
- mov [esp+closure_CF+28], edx
272
- mov [esp+closure_CF+32], eax
273
- mov [esp+closure_CF+36], ecx /* closure is user_data */
274
- jmp L(do_closure_i386)
275
- L(UW11):
276
- /* cfi_endproc */
277
- ENDF(ffi_go_closure_ECX)
278
-
279
- /* The closure entry points are reached from the ffi_closure trampoline.
280
- On entry, %eax contains the address of the ffi_closure. */
281
-
282
- ALIGN 16
283
- PUBLIC ffi_closure_i386
284
- ffi_closure_i386 PROC C
285
- L(UW12):
286
- /* cfi_startproc */
287
- sub esp, closure_FS
288
- L(UW13):
289
- /* cfi_def_cfa_offset(closure_FS + 4) */
290
-
291
- FFI_CLOSURE_SAVE_REGS
292
- FFI_CLOSURE_COPY_TRAMP_DATA
293
-
294
- /* Entry point from preceeding Go closures. */
295
- L(do_closure_i386)::
296
-
297
- FFI_CLOSURE_PREP_CALL
298
- FFI_CLOSURE_CALL_INNER(14)
299
- FFI_CLOSURE_MASK_AND_JUMP L(C1(load_table,2))
300
-
301
- ALIGN 8
302
- L(load_table2):
303
- E(L(load_table2), X86_RET_FLOAT)
304
- fld dword ptr [esp+closure_CF]
305
- jmp L(e2)
306
- E(L(load_table2), X86_RET_DOUBLE)
307
- fld qword ptr [esp+closure_CF]
308
- jmp L(e2)
309
- E(L(load_table2), X86_RET_LDOUBLE)
310
- fld qword ptr [esp+closure_CF]
311
- jmp L(e2)
312
- E(L(load_table2), X86_RET_SINT8)
313
- movsx eax, al
314
- jmp L(e2)
315
- E(L(load_table2), X86_RET_SINT16)
316
- movsx eax, ax
317
- jmp L(e2)
318
- E(L(load_table2), X86_RET_UINT8)
319
- movzx eax, al
320
- jmp L(e2)
321
- E(L(load_table2), X86_RET_UINT16)
322
- movzx eax, ax
323
- jmp L(e2)
324
- E(L(load_table2), X86_RET_INT64)
325
- mov edx, [esp+closure_CF+4]
326
- jmp L(e2)
327
- E(L(load_table2), X86_RET_INT32)
328
- nop
329
- /* fallthru */
330
- E(L(load_table2), X86_RET_VOID)
331
- L(e2):
332
- add esp, closure_FS
333
- L(UW16):
334
- /* cfi_adjust_cfa_offset(-closure_FS) */
335
- ret
336
- L(UW17):
337
- /* cfi_adjust_cfa_offset(closure_FS) */
338
- E(L(load_table2), X86_RET_STRUCTPOP)
339
- add esp, closure_FS
340
- L(UW18):
341
- /* cfi_adjust_cfa_offset(-closure_FS) */
342
- ret 4
343
- L(UW19):
344
- /* cfi_adjust_cfa_offset(closure_FS) */
345
- E(L(load_table2), X86_RET_STRUCTARG)
346
- jmp L(e2)
347
- E(L(load_table2), X86_RET_STRUCT_1B)
348
- movzx eax, al
349
- jmp L(e2)
350
- E(L(load_table2), X86_RET_STRUCT_2B)
351
- movzx eax, ax
352
- jmp L(e2)
353
-
354
- /* Fill out the table so that bad values are predictable. */
355
- E(L(load_table2), X86_RET_UNUSED14)
356
- int 3
357
- E(L(load_table2), X86_RET_UNUSED15)
358
- int 3
359
-
360
- L(UW20):
361
- /* cfi_endproc */
362
- ENDF(ffi_closure_i386)
363
-
364
- ALIGN 16
365
- PUBLIC ffi_go_closure_STDCALL
366
- ffi_go_closure_STDCALL PROC C
367
- L(UW21):
368
- /* cfi_startproc */
369
- sub esp, closure_FS
370
- L(UW22):
371
- /* cfi_def_cfa_offset(closure_FS + 4) */
372
- FFI_CLOSURE_SAVE_REGS
373
- mov edx, [ecx+4] /* copy cif */
374
- mov eax, [ecx+8] /* copy fun */
375
- mov [esp+closure_CF+28], edx
376
- mov [esp+closure_CF+32], eax
377
- mov [esp+closure_CF+36], ecx /* closure is user_data */
378
- jmp L(do_closure_STDCALL)
379
- L(UW23):
380
- /* cfi_endproc */
381
- ENDF(ffi_go_closure_STDCALL)
382
-
383
- /* For REGISTER, we have no available parameter registers, and so we
384
- enter here having pushed the closure onto the stack. */
385
-
386
- ALIGN 16
387
- PUBLIC ffi_closure_REGISTER
388
- ffi_closure_REGISTER PROC C
389
- L(UW24):
390
- /* cfi_startproc */
391
- /* cfi_def_cfa(%esp, 8) */
392
- /* cfi_offset(%eip, -8) */
393
- sub esp, closure_FS-4
394
- L(UW25):
395
- /* cfi_def_cfa_offset(closure_FS + 4) */
396
- FFI_CLOSURE_SAVE_REGS
397
- mov ecx, [esp+closure_FS-4] /* load retaddr */
398
- mov eax, [esp+closure_FS] /* load closure */
399
- mov [esp+closure_FS], ecx /* move retaddr */
400
- jmp L(do_closure_REGISTER)
401
- L(UW26):
402
- /* cfi_endproc */
403
- ENDF(ffi_closure_REGISTER)
404
-
405
- /* For STDCALL (and others), we need to pop N bytes of arguments off
406
- the stack following the closure. The amount needing to be popped
407
- is returned to us from ffi_closure_inner. */
408
-
409
- ALIGN 16
410
- PUBLIC ffi_closure_STDCALL
411
- ffi_closure_STDCALL PROC C
412
- L(UW27):
413
- /* cfi_startproc */
414
- sub esp, closure_FS
415
- L(UW28):
416
- /* cfi_def_cfa_offset(closure_FS + 4) */
417
-
418
- FFI_CLOSURE_SAVE_REGS
419
-
420
- /* Entry point from ffi_closure_REGISTER. */
421
- L(do_closure_REGISTER)::
422
-
423
- FFI_CLOSURE_COPY_TRAMP_DATA
424
-
425
- /* Entry point from preceeding Go closure. */
426
- L(do_closure_STDCALL)::
427
-
428
- FFI_CLOSURE_PREP_CALL
429
- FFI_CLOSURE_CALL_INNER(29)
430
-
431
- mov ecx, eax
432
- shr ecx, X86_RET_POP_SHIFT /* isolate pop count */
433
- lea ecx, [esp+closure_FS+ecx] /* compute popped esp */
434
- mov edx, [esp+closure_FS] /* move return address */
435
- mov [ecx], edx
436
-
437
- /* From this point on, the value of %esp upon return is %ecx+4,
438
- and we've copied the return address to %ecx to make return easy.
439
- There's no point in representing this in the unwind info, as
440
- there is always a window between the mov and the ret which
441
- will be wrong from one point of view or another. */
442
-
443
- FFI_CLOSURE_MASK_AND_JUMP L(C1(load_table,3))
444
-
445
- ALIGN 8
446
- L(load_table3):
447
- E(L(load_table3), X86_RET_FLOAT)
448
- fld DWORD PTR [esp+closure_CF]
449
- mov esp, ecx
450
- ret
451
- E(L(load_table3), X86_RET_DOUBLE)
452
- fld QWORD PTR [esp+closure_CF]
453
- mov esp, ecx
454
- ret
455
- E(L(load_table3), X86_RET_LDOUBLE)
456
- fld QWORD PTR [esp+closure_CF]
457
- mov esp, ecx
458
- ret
459
- E(L(load_table3), X86_RET_SINT8)
460
- movsx eax, al
461
- mov esp, ecx
462
- ret
463
- E(L(load_table3), X86_RET_SINT16)
464
- movsx eax, ax
465
- mov esp, ecx
466
- ret
467
- E(L(load_table3), X86_RET_UINT8)
468
- movzx eax, al
469
- mov esp, ecx
470
- ret
471
- E(L(load_table3), X86_RET_UINT16)
472
- movzx eax, ax
473
- mov esp, ecx
474
- ret
475
- E(L(load_table3), X86_RET_INT64)
476
- mov edx, [esp+closure_CF+4]
477
- mov esp, ecx
478
- ret
479
- E(L(load_table3), X86_RET_int 32)
480
- mov esp, ecx
481
- ret
482
- E(L(load_table3), X86_RET_VOID)
483
- mov esp, ecx
484
- ret
485
- E(L(load_table3), X86_RET_STRUCTPOP)
486
- mov esp, ecx
487
- ret
488
- E(L(load_table3), X86_RET_STRUCTARG)
489
- mov esp, ecx
490
- ret
491
- E(L(load_table3), X86_RET_STRUCT_1B)
492
- movzx eax, al
493
- mov esp, ecx
494
- ret
495
- E(L(load_table3), X86_RET_STRUCT_2B)
496
- movzx eax, ax
497
- mov esp, ecx
498
- ret
499
-
500
- /* Fill out the table so that bad values are predictable. */
501
- E(L(load_table3), X86_RET_UNUSED14)
502
- int 3
503
- E(L(load_table3), X86_RET_UNUSED15)
504
- int 3
505
-
506
- L(UW31):
507
- /* cfi_endproc */
508
- ENDF(ffi_closure_STDCALL)
509
-
510
- #if !FFI_NO_RAW_API
511
-
512
- #define raw_closure_S_FS (16+16+12)
513
-
514
- ALIGN 16
515
- PUBLIC ffi_closure_raw_SYSV
516
- ffi_closure_raw_SYSV PROC C
517
- L(UW32):
518
- /* cfi_startproc */
519
- sub esp, raw_closure_S_FS
520
- L(UW33):
521
- /* cfi_def_cfa_offset(raw_closure_S_FS + 4) */
522
- mov [esp+raw_closure_S_FS-4], ebx
523
- L(UW34):
524
- /* cfi_rel_offset(%ebx, raw_closure_S_FS-4) */
525
-
526
- mov edx, [eax+FFI_TRAMPOLINE_SIZE+8] /* load cl->user_data */
527
- mov [esp+12], edx
528
- lea edx, [esp+raw_closure_S_FS+4] /* load raw_args */
529
- mov [esp+8], edx
530
- lea edx, [esp+16] /* load &res */
531
- mov [esp+4], edx
532
- mov ebx, [eax+FFI_TRAMPOLINE_SIZE] /* load cl->cif */
533
- mov [esp], ebx
534
- call DWORD PTR [eax+FFI_TRAMPOLINE_SIZE+4] /* call cl->fun */
535
-
536
- mov eax, [ebx+20] /* load cif->flags */
537
- and eax, X86_RET_TYPE_MASK
538
- /* #ifdef __PIC__ */
539
- /* call __x86.get_pc_thunk.bx */
540
- /* L(pc4): */
541
- /* lea ecx, L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx */
542
- /* #else */
543
- lea ecx, [L(load_table4)+eax+8]
544
- /* #endif */
545
- mov ebx, [esp+raw_closure_S_FS-4]
546
- L(UW35):
547
- /* cfi_restore(%ebx) */
548
- mov eax, [esp+16] /* Optimistic load */
549
- jmp dword ptr [ecx]
550
-
551
- ALIGN 8
552
- L(load_table4):
553
- E(L(load_table4), X86_RET_FLOAT)
554
- fld DWORD PTR [esp +16]
555
- jmp L(e4)
556
- E(L(load_table4), X86_RET_DOUBLE)
557
- fld QWORD PTR [esp +16]
558
- jmp L(e4)
559
- E(L(load_table4), X86_RET_LDOUBLE)
560
- fld QWORD PTR [esp +16]
561
- jmp L(e4)
562
- E(L(load_table4), X86_RET_SINT8)
563
- movsx eax, al
564
- jmp L(e4)
565
- E(L(load_table4), X86_RET_SINT16)
566
- movsx eax, ax
567
- jmp L(e4)
568
- E(L(load_table4), X86_RET_UINT8)
569
- movzx eax, al
570
- jmp L(e4)
571
- E(L(load_table4), X86_RET_UINT16)
572
- movzx eax, ax
573
- jmp L(e4)
574
- E(L(load_table4), X86_RET_INT64)
575
- mov edx, [esp+16+4]
576
- jmp L(e4)
577
- E(L(load_table4), X86_RET_int 32)
578
- nop
579
- /* fallthru */
580
- E(L(load_table4), X86_RET_VOID)
581
- L(e4):
582
- add esp, raw_closure_S_FS
583
- L(UW36):
584
- /* cfi_adjust_cfa_offset(-raw_closure_S_FS) */
585
- ret
586
- L(UW37):
587
- /* cfi_adjust_cfa_offset(raw_closure_S_FS) */
588
- E(L(load_table4), X86_RET_STRUCTPOP)
589
- add esp, raw_closure_S_FS
590
- L(UW38):
591
- /* cfi_adjust_cfa_offset(-raw_closure_S_FS) */
592
- ret 4
593
- L(UW39):
594
- /* cfi_adjust_cfa_offset(raw_closure_S_FS) */
595
- E(L(load_table4), X86_RET_STRUCTARG)
596
- jmp L(e4)
597
- E(L(load_table4), X86_RET_STRUCT_1B)
598
- movzx eax, al
599
- jmp L(e4)
600
- E(L(load_table4), X86_RET_STRUCT_2B)
601
- movzx eax, ax
602
- jmp L(e4)
603
-
604
- /* Fill out the table so that bad values are predictable. */
605
- E(L(load_table4), X86_RET_UNUSED14)
606
- int 3
607
- E(L(load_table4), X86_RET_UNUSED15)
608
- int 3
609
-
610
- L(UW40):
611
- /* cfi_endproc */
612
- ENDF(ffi_closure_raw_SYSV)
613
-
614
- #define raw_closure_T_FS (16+16+8)
615
-
616
- ALIGN 16
617
- PUBLIC ffi_closure_raw_THISCALL
618
- ffi_closure_raw_THISCALL PROC C
619
- L(UW41):
620
- /* cfi_startproc */
621
- /* Rearrange the stack such that %ecx is the first argument.
622
- This means moving the return address. */
623
- pop edx
624
- L(UW42):
625
- /* cfi_def_cfa_offset(0) */
626
- /* cfi_register(%eip, %edx) */
627
- push ecx
628
- L(UW43):
629
- /* cfi_adjust_cfa_offset(4) */
630
- push edx
631
- L(UW44):
632
- /* cfi_adjust_cfa_offset(4) */
633
- /* cfi_rel_offset(%eip, 0) */
634
- sub esp, raw_closure_T_FS
635
- L(UW45):
636
- /* cfi_adjust_cfa_offset(raw_closure_T_FS) */
637
- mov [esp+raw_closure_T_FS-4], ebx
638
- L(UW46):
639
- /* cfi_rel_offset(%ebx, raw_closure_T_FS-4) */
640
-
641
- mov edx, [eax+FFI_TRAMPOLINE_SIZE+8] /* load cl->user_data */
642
- mov [esp+12], edx
643
- lea edx, [esp+raw_closure_T_FS+4] /* load raw_args */
644
- mov [esp+8], edx
645
- lea edx, [esp+16] /* load &res */
646
- mov [esp+4], edx
647
- mov ebx, [eax+FFI_TRAMPOLINE_SIZE] /* load cl->cif */
648
- mov [esp], ebx
649
- call DWORD PTR [eax+FFI_TRAMPOLINE_SIZE+4] /* call cl->fun */
650
-
651
- mov eax, [ebx+20] /* load cif->flags */
652
- and eax, X86_RET_TYPE_MASK
653
- /* #ifdef __PIC__ */
654
- /* call __x86.get_pc_thunk.bx */
655
- /* L(pc5): */
656
- /* leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx */
657
- /* #else */
658
- lea ecx, [L(load_table5)+eax*8]
659
- /*#endif */
660
- mov ebx, [esp+raw_closure_T_FS-4]
661
- L(UW47):
662
- /* cfi_restore(%ebx) */
663
- mov eax, [esp+16] /* Optimistic load */
664
- jmp DWORD PTR [ecx]
665
-
666
- AlIGN 4
667
- L(load_table5):
668
- E(L(load_table5), X86_RET_FLOAT)
669
- fld DWORD PTR [esp +16]
670
- jmp L(e5)
671
- E(L(load_table5), X86_RET_DOUBLE)
672
- fld QWORD PTR [esp +16]
673
- jmp L(e5)
674
- E(L(load_table5), X86_RET_LDOUBLE)
675
- fld QWORD PTR [esp+16]
676
- jmp L(e5)
677
- E(L(load_table5), X86_RET_SINT8)
678
- movsx eax, al
679
- jmp L(e5)
680
- E(L(load_table5), X86_RET_SINT16)
681
- movsx eax, ax
682
- jmp L(e5)
683
- E(L(load_table5), X86_RET_UINT8)
684
- movzx eax, al
685
- jmp L(e5)
686
- E(L(load_table5), X86_RET_UINT16)
687
- movzx eax, ax
688
- jmp L(e5)
689
- E(L(load_table5), X86_RET_INT64)
690
- mov edx, [esp+16+4]
691
- jmp L(e5)
692
- E(L(load_table5), X86_RET_int 32)
693
- nop
694
- /* fallthru */
695
- E(L(load_table5), X86_RET_VOID)
696
- L(e5):
697
- add esp, raw_closure_T_FS
698
- L(UW48):
699
- /* cfi_adjust_cfa_offset(-raw_closure_T_FS) */
700
- /* Remove the extra %ecx argument we pushed. */
701
- ret 4
702
- L(UW49):
703
- /* cfi_adjust_cfa_offset(raw_closure_T_FS) */
704
- E(L(load_table5), X86_RET_STRUCTPOP)
705
- add esp, raw_closure_T_FS
706
- L(UW50):
707
- /* cfi_adjust_cfa_offset(-raw_closure_T_FS) */
708
- ret 8
709
- L(UW51):
710
- /* cfi_adjust_cfa_offset(raw_closure_T_FS) */
711
- E(L(load_table5), X86_RET_STRUCTARG)
712
- jmp L(e5)
713
- E(L(load_table5), X86_RET_STRUCT_1B)
714
- movzx eax, al
715
- jmp L(e5)
716
- E(L(load_table5), X86_RET_STRUCT_2B)
717
- movzx eax, ax
718
- jmp L(e5)
719
-
720
- /* Fill out the table so that bad values are predictable. */
721
- E(L(load_table5), X86_RET_UNUSED14)
722
- int 3
723
- E(L(load_table5), X86_RET_UNUSED15)
724
- int 3
725
-
726
- L(UW52):
727
- /* cfi_endproc */
728
- ENDF(ffi_closure_raw_THISCALL)
729
-
730
- #endif /* !FFI_NO_RAW_API */
731
-
732
- #ifdef X86_DARWIN
733
- # define COMDAT(X) \
734
- .section __TEXT,__text,coalesced,pure_instructions; \
735
- .weak_definition X; \
736
- FFI_HIDDEN(X)
737
- #elif defined __ELF__ && !(defined(__sun__) && defined(__svr4__))
738
- # define COMDAT(X) \
739
- .section .text.X,"axG",@progbits,X,comdat; \
740
- PUBLIC X; \
741
- FFI_HIDDEN(X)
742
- #else
743
- # define COMDAT(X)
744
- #endif
745
-
746
- #if 0
747
- #if defined(__PIC__)
748
- COMDAT(C(__x86.get_pc_thunk.bx))
749
- C(__x86.get_pc_thunk.bx):
750
- movl (%esp), %ebx
751
- ret
752
- ENDF(C(__x86.get_pc_thunk.bx))
753
- # if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
754
- COMDAT(C(__x86.get_pc_thunk.dx))
755
- C(__x86.get_pc_thunk.dx):
756
- movl (%esp), %edx
757
- ret
758
- ENDF(C(__x86.get_pc_thunk.dx))
759
- #endif /* DARWIN || HIDDEN */
760
- #endif /* __PIC__ */
761
- #endif
762
-
763
-
764
- #if 0
765
- /* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */
766
-
767
- #ifdef __APPLE__
768
- .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
769
- EHFrame0:
770
- #elif defined(X86_WIN32)
771
- .section .eh_frame,"r"
772
- #elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE)
773
- .section .eh_frame,EH_FRAME_FLAGS,@unwind
774
- #else
775
- .section .eh_frame,EH_FRAME_FLAGS,@progbits
776
- #endif
777
-
778
- #ifdef HAVE_AS_X86_PCREL
779
- # define PCREL(X) X - .
780
- #else
781
- # define PCREL(X) X@rel
782
- #endif
783
-
784
- /* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */
785
- #define ADV(N, P) .byte 2, L(N)-L(P)
786
-
787
- .balign 4
788
- L(CIE):
789
- .set L(set0),L(ECIE)-L(SCIE)
790
- .long L(set0) /* CIE Length */
791
- L(SCIE):
792
- .long 0 /* CIE Identifier Tag */
793
- .byte 1 /* CIE Version */
794
- .ascii "zR\0" /* CIE Augmentation */
795
- .byte 1 /* CIE Code Alignment Factor */
796
- .byte 0x7c /* CIE Data Alignment Factor */
797
- .byte 0x8 /* CIE RA Column */
798
- .byte 1 /* Augmentation size */
799
- .byte 0x1b /* FDE Encoding (pcrel sdata4) */
800
- .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp offset 4 */
801
- .byte 0x80+8, 1 /* DW_CFA_offset, %eip offset 1*-4 */
802
- .balign 4
803
- L(ECIE):
804
-
805
- .set L(set1),L(EFDE1)-L(SFDE1)
806
- .long L(set1) /* FDE Length */
807
- L(SFDE1):
808
- .long L(SFDE1)-L(CIE) /* FDE CIE offset */
809
- .long PCREL(L(UW0)) /* Initial location */
810
- .long L(UW5)-L(UW0) /* Address range */
811
- .byte 0 /* Augmentation size */
812
- ADV(UW1, UW0)
813
- .byte 0xc, 5, 8 /* DW_CFA_def_cfa, %ebp 8 */
814
- .byte 0x80+5, 2 /* DW_CFA_offset, %ebp 2*-4 */
815
- ADV(UW2, UW1)
816
- .byte 0x80+3, 0 /* DW_CFA_offset, %ebx 0*-4 */
817
- ADV(UW3, UW2)
818
- .byte 0xa /* DW_CFA_remember_state */
819
- .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp 4 */
820
- .byte 0xc0+3 /* DW_CFA_restore, %ebx */
821
- .byte 0xc0+5 /* DW_CFA_restore, %ebp */
822
- ADV(UW4, UW3)
823
- .byte 0xb /* DW_CFA_restore_state */
824
- .balign 4
825
- L(EFDE1):
826
-
827
- .set L(set2),L(EFDE2)-L(SFDE2)
828
- .long L(set2) /* FDE Length */
829
- L(SFDE2):
830
- .long L(SFDE2)-L(CIE) /* FDE CIE offset */
831
- .long PCREL(L(UW6)) /* Initial location */
832
- .long L(UW8)-L(UW6) /* Address range */
833
- .byte 0 /* Augmentation size */
834
- ADV(UW7, UW6)
835
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
836
- .balign 4
837
- L(EFDE2):
838
-
839
- .set L(set3),L(EFDE3)-L(SFDE3)
840
- .long L(set3) /* FDE Length */
841
- L(SFDE3):
842
- .long L(SFDE3)-L(CIE) /* FDE CIE offset */
843
- .long PCREL(L(UW9)) /* Initial location */
844
- .long L(UW11)-L(UW9) /* Address range */
845
- .byte 0 /* Augmentation size */
846
- ADV(UW10, UW9)
847
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
848
- .balign 4
849
- L(EFDE3):
850
-
851
- .set L(set4),L(EFDE4)-L(SFDE4)
852
- .long L(set4) /* FDE Length */
853
- L(SFDE4):
854
- .long L(SFDE4)-L(CIE) /* FDE CIE offset */
855
- .long PCREL(L(UW12)) /* Initial location */
856
- .long L(UW20)-L(UW12) /* Address range */
857
- .byte 0 /* Augmentation size */
858
- ADV(UW13, UW12)
859
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
860
- #ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX
861
- ADV(UW14, UW13)
862
- .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */
863
- ADV(UW15, UW14)
864
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
865
- ADV(UW16, UW15)
866
- #else
867
- ADV(UW16, UW13)
868
- #endif
869
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
870
- ADV(UW17, UW16)
871
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
872
- ADV(UW18, UW17)
873
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
874
- ADV(UW19, UW18)
875
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
876
- .balign 4
877
- L(EFDE4):
878
-
879
- .set L(set5),L(EFDE5)-L(SFDE5)
880
- .long L(set5) /* FDE Length */
881
- L(SFDE5):
882
- .long L(SFDE5)-L(CIE) /* FDE CIE offset */
883
- .long PCREL(L(UW21)) /* Initial location */
884
- .long L(UW23)-L(UW21) /* Address range */
885
- .byte 0 /* Augmentation size */
886
- ADV(UW22, UW21)
887
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
888
- .balign 4
889
- L(EFDE5):
890
-
891
- .set L(set6),L(EFDE6)-L(SFDE6)
892
- .long L(set6) /* FDE Length */
893
- L(SFDE6):
894
- .long L(SFDE6)-L(CIE) /* FDE CIE offset */
895
- .long PCREL(L(UW24)) /* Initial location */
896
- .long L(UW26)-L(UW24) /* Address range */
897
- .byte 0 /* Augmentation size */
898
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
899
- .byte 0x80+8, 2 /* DW_CFA_offset %eip, 2*-4 */
900
- ADV(UW25, UW24)
901
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
902
- .balign 4
903
- L(EFDE6):
904
-
905
- .set L(set7),L(EFDE7)-L(SFDE7)
906
- .long L(set7) /* FDE Length */
907
- L(SFDE7):
908
- .long L(SFDE7)-L(CIE) /* FDE CIE offset */
909
- .long PCREL(L(UW27)) /* Initial location */
910
- .long L(UW31)-L(UW27) /* Address range */
911
- .byte 0 /* Augmentation size */
912
- ADV(UW28, UW27)
913
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
914
- #ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX
915
- ADV(UW29, UW28)
916
- .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */
917
- ADV(UW30, UW29)
918
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
919
- #endif
920
- .balign 4
921
- L(EFDE7):
922
-
923
- #if !FFI_NO_RAW_API
924
- .set L(set8),L(EFDE8)-L(SFDE8)
925
- .long L(set8) /* FDE Length */
926
- L(SFDE8):
927
- .long L(SFDE8)-L(CIE) /* FDE CIE offset */
928
- .long PCREL(L(UW32)) /* Initial location */
929
- .long L(UW40)-L(UW32) /* Address range */
930
- .byte 0 /* Augmentation size */
931
- ADV(UW33, UW32)
932
- .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
933
- ADV(UW34, UW33)
934
- .byte 0x80+3, 2 /* DW_CFA_offset %ebx 2*-4 */
935
- ADV(UW35, UW34)
936
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
937
- ADV(UW36, UW35)
938
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
939
- ADV(UW37, UW36)
940
- .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
941
- ADV(UW38, UW37)
942
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
943
- ADV(UW39, UW38)
944
- .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
945
- .balign 4
946
- L(EFDE8):
947
-
948
- .set L(set9),L(EFDE9)-L(SFDE9)
949
- .long L(set9) /* FDE Length */
950
- L(SFDE9):
951
- .long L(SFDE9)-L(CIE) /* FDE CIE offset */
952
- .long PCREL(L(UW41)) /* Initial location */
953
- .long L(UW52)-L(UW41) /* Address range */
954
- .byte 0 /* Augmentation size */
955
- ADV(UW42, UW41)
956
- .byte 0xe, 0 /* DW_CFA_def_cfa_offset */
957
- .byte 0x9, 8, 2 /* DW_CFA_register %eip, %edx */
958
- ADV(UW43, UW42)
959
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
960
- ADV(UW44, UW43)
961
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
962
- .byte 0x80+8, 2 /* DW_CFA_offset %eip 2*-4 */
963
- ADV(UW45, UW44)
964
- .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
965
- ADV(UW46, UW45)
966
- .byte 0x80+3, 3 /* DW_CFA_offset %ebx 3*-4 */
967
- ADV(UW47, UW46)
968
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
969
- ADV(UW48, UW47)
970
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
971
- ADV(UW49, UW48)
972
- .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
973
- ADV(UW50, UW49)
974
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
975
- ADV(UW51, UW50)
976
- .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
977
- .balign 4
978
- L(EFDE9):
979
- #endif /* !FFI_NO_RAW_API */
980
-
981
- #ifdef _WIN32
982
- .def @feat.00;
983
- .scl 3;
984
- .type 0;
985
- .endef
986
- PUBLIC @feat.00
987
- @feat.00 = 1
988
- #endif
989
-
990
- #endif /* ifndef _MSC_VER */
991
- #endif /* ifndef __x86_64__ */
992
-
993
- #if defined __ELF__ && defined __linux__
994
- .section .note.GNU-stack,"",@progbits
995
- #endif
996
- #endif
997
-
998
- END