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,711 +0,0 @@
1
- /* -----------------------------------------------------------------------
2
- unix64.S - Copyright (c) 2013 The Written Word, Inc.
3
- - Copyright (c) 2008 Red Hat, Inc
4
- - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
5
-
6
- x86-64 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
- #ifdef __x86_64__
30
- #define LIBFFI_ASM
31
- #include <fficonfig.h>
32
- #include <ffi.h>
33
- #include "internal64.h"
34
- #include "asmnames.h"
35
-
36
- .text
37
-
38
- /* This macro allows the safe creation of jump tables without an
39
- actual table. The entry points into the table are all 8 bytes.
40
- The use of ORG asserts that we're at the correct location. */
41
- /* ??? The clang assembler doesn't handle .org with symbolic expressions. */
42
- #ifdef __CET__
43
- /* Double slot size to 16 byte to add 4 bytes of ENDBR64. */
44
- # define E(BASE, X) .balign 8; .org BASE + X * 16
45
- #elif defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__))
46
- # define E(BASE, X) .balign 8
47
- #else
48
- # define E(BASE, X) .balign 8; .org BASE + X * 8
49
- #endif
50
-
51
- /* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
52
- void *raddr, void (*fnaddr)(void));
53
-
54
- Bit o trickiness here -- ARGS+BYTES is the base of the stack frame
55
- for this function. This has been allocated by ffi_call. We also
56
- deallocate some of the stack that has been alloca'd. */
57
-
58
- .balign 8
59
- .globl C(ffi_call_unix64)
60
- FFI_HIDDEN(C(ffi_call_unix64))
61
-
62
- C(ffi_call_unix64):
63
- L(UW0):
64
- _CET_ENDBR
65
- movq (%rsp), %r10 /* Load return address. */
66
- leaq (%rdi, %rsi), %rax /* Find local stack base. */
67
- movq %rdx, (%rax) /* Save flags. */
68
- movq %rcx, 8(%rax) /* Save raddr. */
69
- movq %rbp, 16(%rax) /* Save old frame pointer. */
70
- movq %r10, 24(%rax) /* Relocate return address. */
71
- movq %rax, %rbp /* Finalize local stack frame. */
72
-
73
- /* New stack frame based off rbp. This is a itty bit of unwind
74
- trickery in that the CFA *has* changed. There is no easy way
75
- to describe it correctly on entry to the function. Fortunately,
76
- it doesn't matter too much since at all points we can correctly
77
- unwind back to ffi_call. Note that the location to which we
78
- moved the return address is (the new) CFA-8, so from the
79
- perspective of the unwind info, it hasn't moved. */
80
- L(UW1):
81
- /* cfi_def_cfa(%rbp, 32) */
82
- /* cfi_rel_offset(%rbp, 16) */
83
-
84
- movq %rdi, %r10 /* Save a copy of the register area. */
85
- movq %r8, %r11 /* Save a copy of the target fn. */
86
-
87
- /* Load up all argument registers. */
88
- movq (%r10), %rdi
89
- movq 0x08(%r10), %rsi
90
- movq 0x10(%r10), %rdx
91
- movq 0x18(%r10), %rcx
92
- movq 0x20(%r10), %r8
93
- movq 0x28(%r10), %r9
94
- movl 0xb0(%r10), %eax /* Set number of SSE registers. */
95
- testl %eax, %eax
96
- jnz L(load_sse)
97
- L(ret_from_load_sse):
98
-
99
- /* Deallocate the reg arg area, except for r10, then load via pop. */
100
- leaq 0xb8(%r10), %rsp
101
- popq %r10
102
-
103
- /* Call the user function. */
104
- call *%r11
105
-
106
- /* Deallocate stack arg area; local stack frame in redzone. */
107
- leaq 24(%rbp), %rsp
108
-
109
- movq 0(%rbp), %rcx /* Reload flags. */
110
- movq 8(%rbp), %rdi /* Reload raddr. */
111
- movq 16(%rbp), %rbp /* Reload old frame pointer. */
112
- L(UW2):
113
- /* cfi_remember_state */
114
- /* cfi_def_cfa(%rsp, 8) */
115
- /* cfi_restore(%rbp) */
116
-
117
- /* The first byte of the flags contains the FFI_TYPE. */
118
- cmpb $UNIX64_RET_LAST, %cl
119
- movzbl %cl, %r10d
120
- leaq L(store_table)(%rip), %r11
121
- ja L(sa)
122
- #ifdef __CET__
123
- /* NB: Originally, each slot is 8 byte. 4 bytes of ENDBR64 +
124
- 4 bytes NOP padding double slot size to 16 bytes. */
125
- addl %r10d, %r10d
126
- #endif
127
- leaq (%r11, %r10, 8), %r10
128
-
129
- /* Prep for the structure cases: scratch area in redzone. */
130
- leaq -20(%rsp), %rsi
131
- jmp *%r10
132
-
133
- .balign 8
134
- L(store_table):
135
- E(L(store_table), UNIX64_RET_VOID)
136
- _CET_ENDBR
137
- ret
138
- E(L(store_table), UNIX64_RET_UINT8)
139
- _CET_ENDBR
140
- movzbl %al, %eax
141
- movq %rax, (%rdi)
142
- ret
143
- E(L(store_table), UNIX64_RET_UINT16)
144
- _CET_ENDBR
145
- movzwl %ax, %eax
146
- movq %rax, (%rdi)
147
- ret
148
- E(L(store_table), UNIX64_RET_UINT32)
149
- _CET_ENDBR
150
- movl %eax, %eax
151
- movq %rax, (%rdi)
152
- ret
153
- E(L(store_table), UNIX64_RET_SINT8)
154
- _CET_ENDBR
155
- movsbq %al, %rax
156
- movq %rax, (%rdi)
157
- ret
158
- E(L(store_table), UNIX64_RET_SINT16)
159
- _CET_ENDBR
160
- movswq %ax, %rax
161
- movq %rax, (%rdi)
162
- ret
163
- E(L(store_table), UNIX64_RET_SINT32)
164
- _CET_ENDBR
165
- cltq
166
- movq %rax, (%rdi)
167
- ret
168
- E(L(store_table), UNIX64_RET_INT64)
169
- _CET_ENDBR
170
- movq %rax, (%rdi)
171
- ret
172
- E(L(store_table), UNIX64_RET_XMM32)
173
- _CET_ENDBR
174
- movd %xmm0, (%rdi)
175
- ret
176
- E(L(store_table), UNIX64_RET_XMM64)
177
- _CET_ENDBR
178
- movq %xmm0, (%rdi)
179
- ret
180
- E(L(store_table), UNIX64_RET_X87)
181
- _CET_ENDBR
182
- fstpt (%rdi)
183
- ret
184
- E(L(store_table), UNIX64_RET_X87_2)
185
- _CET_ENDBR
186
- fstpt (%rdi)
187
- fstpt 16(%rdi)
188
- ret
189
- E(L(store_table), UNIX64_RET_ST_XMM0_RAX)
190
- _CET_ENDBR
191
- movq %rax, 8(%rsi)
192
- jmp L(s3)
193
- E(L(store_table), UNIX64_RET_ST_RAX_XMM0)
194
- _CET_ENDBR
195
- movq %xmm0, 8(%rsi)
196
- jmp L(s2)
197
- E(L(store_table), UNIX64_RET_ST_XMM0_XMM1)
198
- _CET_ENDBR
199
- movq %xmm1, 8(%rsi)
200
- jmp L(s3)
201
- E(L(store_table), UNIX64_RET_ST_RAX_RDX)
202
- _CET_ENDBR
203
- movq %rdx, 8(%rsi)
204
- L(s2):
205
- movq %rax, (%rsi)
206
- shrl $UNIX64_SIZE_SHIFT, %ecx
207
- rep movsb
208
- ret
209
- .balign 8
210
- L(s3):
211
- movq %xmm0, (%rsi)
212
- shrl $UNIX64_SIZE_SHIFT, %ecx
213
- rep movsb
214
- ret
215
-
216
- L(sa): call PLT(C(abort))
217
-
218
- /* Many times we can avoid loading any SSE registers at all.
219
- It's not worth an indirect jump to load the exact set of
220
- SSE registers needed; zero or all is a good compromise. */
221
- .balign 2
222
- L(UW3):
223
- /* cfi_restore_state */
224
- L(load_sse):
225
- movdqa 0x30(%r10), %xmm0
226
- movdqa 0x40(%r10), %xmm1
227
- movdqa 0x50(%r10), %xmm2
228
- movdqa 0x60(%r10), %xmm3
229
- movdqa 0x70(%r10), %xmm4
230
- movdqa 0x80(%r10), %xmm5
231
- movdqa 0x90(%r10), %xmm6
232
- movdqa 0xa0(%r10), %xmm7
233
- jmp L(ret_from_load_sse)
234
-
235
- L(UW4):
236
- ENDF(C(ffi_call_unix64))
237
-
238
- /* 6 general registers, 8 vector registers,
239
- 32 bytes of rvalue, 8 bytes of alignment. */
240
- #define ffi_closure_OFS_G 0
241
- #define ffi_closure_OFS_V (6*8)
242
- #define ffi_closure_OFS_RVALUE (ffi_closure_OFS_V + 8*16)
243
- #define ffi_closure_FS (ffi_closure_OFS_RVALUE + 32 + 8)
244
-
245
- /* The location of rvalue within the red zone after deallocating the frame. */
246
- #define ffi_closure_RED_RVALUE (ffi_closure_OFS_RVALUE - ffi_closure_FS)
247
-
248
- .balign 2
249
- .globl C(ffi_closure_unix64_sse)
250
- FFI_HIDDEN(C(ffi_closure_unix64_sse))
251
-
252
- C(ffi_closure_unix64_sse):
253
- L(UW5):
254
- _CET_ENDBR
255
- subq $ffi_closure_FS, %rsp
256
- L(UW6):
257
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
258
-
259
- movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp)
260
- movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp)
261
- movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp)
262
- movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp)
263
- movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp)
264
- movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp)
265
- movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp)
266
- movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp)
267
- jmp L(sse_entry1)
268
-
269
- L(UW7):
270
- ENDF(C(ffi_closure_unix64_sse))
271
-
272
- .balign 2
273
- .globl C(ffi_closure_unix64)
274
- FFI_HIDDEN(C(ffi_closure_unix64))
275
-
276
- C(ffi_closure_unix64):
277
- L(UW8):
278
- _CET_ENDBR
279
- subq $ffi_closure_FS, %rsp
280
- L(UW9):
281
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
282
- L(sse_entry1):
283
- movq %rdi, ffi_closure_OFS_G+0x00(%rsp)
284
- movq %rsi, ffi_closure_OFS_G+0x08(%rsp)
285
- movq %rdx, ffi_closure_OFS_G+0x10(%rsp)
286
- movq %rcx, ffi_closure_OFS_G+0x18(%rsp)
287
- movq %r8, ffi_closure_OFS_G+0x20(%rsp)
288
- movq %r9, ffi_closure_OFS_G+0x28(%rsp)
289
-
290
- #ifdef __ILP32__
291
- movl FFI_TRAMPOLINE_SIZE(%r10), %edi /* Load cif */
292
- movl FFI_TRAMPOLINE_SIZE+4(%r10), %esi /* Load fun */
293
- movl FFI_TRAMPOLINE_SIZE+8(%r10), %edx /* Load user_data */
294
- #else
295
- movq FFI_TRAMPOLINE_SIZE(%r10), %rdi /* Load cif */
296
- movq FFI_TRAMPOLINE_SIZE+8(%r10), %rsi /* Load fun */
297
- movq FFI_TRAMPOLINE_SIZE+16(%r10), %rdx /* Load user_data */
298
- #endif
299
- L(do_closure):
300
- leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */
301
- movq %rsp, %r8 /* Load reg_args */
302
- leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */
303
- call PLT(C(ffi_closure_unix64_inner))
304
-
305
- /* Deallocate stack frame early; return value is now in redzone. */
306
- addq $ffi_closure_FS, %rsp
307
- L(UW10):
308
- /* cfi_adjust_cfa_offset(-ffi_closure_FS) */
309
-
310
- /* The first byte of the return value contains the FFI_TYPE. */
311
- cmpb $UNIX64_RET_LAST, %al
312
- movzbl %al, %r10d
313
- leaq L(load_table)(%rip), %r11
314
- ja L(la)
315
- #ifdef __CET__
316
- /* NB: Originally, each slot is 8 byte. 4 bytes of ENDBR64 +
317
- 4 bytes NOP padding double slot size to 16 bytes. */
318
- addl %r10d, %r10d
319
- #endif
320
- leaq (%r11, %r10, 8), %r10
321
- leaq ffi_closure_RED_RVALUE(%rsp), %rsi
322
- jmp *%r10
323
-
324
- .balign 8
325
- L(load_table):
326
- E(L(load_table), UNIX64_RET_VOID)
327
- _CET_ENDBR
328
- ret
329
- E(L(load_table), UNIX64_RET_UINT8)
330
- _CET_ENDBR
331
- movzbl (%rsi), %eax
332
- ret
333
- E(L(load_table), UNIX64_RET_UINT16)
334
- _CET_ENDBR
335
- movzwl (%rsi), %eax
336
- ret
337
- E(L(load_table), UNIX64_RET_UINT32)
338
- _CET_ENDBR
339
- movl (%rsi), %eax
340
- ret
341
- E(L(load_table), UNIX64_RET_SINT8)
342
- _CET_ENDBR
343
- movsbl (%rsi), %eax
344
- ret
345
- E(L(load_table), UNIX64_RET_SINT16)
346
- _CET_ENDBR
347
- movswl (%rsi), %eax
348
- ret
349
- E(L(load_table), UNIX64_RET_SINT32)
350
- _CET_ENDBR
351
- movl (%rsi), %eax
352
- ret
353
- E(L(load_table), UNIX64_RET_INT64)
354
- _CET_ENDBR
355
- movq (%rsi), %rax
356
- ret
357
- E(L(load_table), UNIX64_RET_XMM32)
358
- _CET_ENDBR
359
- movd (%rsi), %xmm0
360
- ret
361
- E(L(load_table), UNIX64_RET_XMM64)
362
- _CET_ENDBR
363
- movq (%rsi), %xmm0
364
- ret
365
- E(L(load_table), UNIX64_RET_X87)
366
- _CET_ENDBR
367
- fldt (%rsi)
368
- ret
369
- E(L(load_table), UNIX64_RET_X87_2)
370
- _CET_ENDBR
371
- fldt 16(%rsi)
372
- fldt (%rsi)
373
- ret
374
- E(L(load_table), UNIX64_RET_ST_XMM0_RAX)
375
- _CET_ENDBR
376
- movq 8(%rsi), %rax
377
- jmp L(l3)
378
- E(L(load_table), UNIX64_RET_ST_RAX_XMM0)
379
- _CET_ENDBR
380
- movq 8(%rsi), %xmm0
381
- jmp L(l2)
382
- E(L(load_table), UNIX64_RET_ST_XMM0_XMM1)
383
- _CET_ENDBR
384
- movq 8(%rsi), %xmm1
385
- jmp L(l3)
386
- E(L(load_table), UNIX64_RET_ST_RAX_RDX)
387
- _CET_ENDBR
388
- movq 8(%rsi), %rdx
389
- L(l2):
390
- movq (%rsi), %rax
391
- ret
392
- .balign 8
393
- L(l3):
394
- movq (%rsi), %xmm0
395
- ret
396
-
397
- L(la): call PLT(C(abort))
398
-
399
- L(UW11):
400
- ENDF(C(ffi_closure_unix64))
401
-
402
- .balign 2
403
- .globl C(ffi_go_closure_unix64_sse)
404
- FFI_HIDDEN(C(ffi_go_closure_unix64_sse))
405
-
406
- C(ffi_go_closure_unix64_sse):
407
- L(UW12):
408
- _CET_ENDBR
409
- subq $ffi_closure_FS, %rsp
410
- L(UW13):
411
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
412
-
413
- movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp)
414
- movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp)
415
- movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp)
416
- movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp)
417
- movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp)
418
- movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp)
419
- movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp)
420
- movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp)
421
- jmp L(sse_entry2)
422
-
423
- L(UW14):
424
- ENDF(C(ffi_go_closure_unix64_sse))
425
-
426
- .balign 2
427
- .globl C(ffi_go_closure_unix64)
428
- FFI_HIDDEN(C(ffi_go_closure_unix64))
429
-
430
- C(ffi_go_closure_unix64):
431
- L(UW15):
432
- _CET_ENDBR
433
- subq $ffi_closure_FS, %rsp
434
- L(UW16):
435
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
436
- L(sse_entry2):
437
- movq %rdi, ffi_closure_OFS_G+0x00(%rsp)
438
- movq %rsi, ffi_closure_OFS_G+0x08(%rsp)
439
- movq %rdx, ffi_closure_OFS_G+0x10(%rsp)
440
- movq %rcx, ffi_closure_OFS_G+0x18(%rsp)
441
- movq %r8, ffi_closure_OFS_G+0x20(%rsp)
442
- movq %r9, ffi_closure_OFS_G+0x28(%rsp)
443
-
444
- #ifdef __ILP32__
445
- movl 4(%r10), %edi /* Load cif */
446
- movl 8(%r10), %esi /* Load fun */
447
- movl %r10d, %edx /* Load closure (user_data) */
448
- #else
449
- movq 8(%r10), %rdi /* Load cif */
450
- movq 16(%r10), %rsi /* Load fun */
451
- movq %r10, %rdx /* Load closure (user_data) */
452
- #endif
453
- jmp L(do_closure)
454
-
455
- L(UW17):
456
- ENDF(C(ffi_go_closure_unix64))
457
-
458
- #if defined(FFI_EXEC_STATIC_TRAMP)
459
- .balign 8
460
- .globl C(ffi_closure_unix64_sse_alt)
461
- FFI_HIDDEN(C(ffi_closure_unix64_sse_alt))
462
-
463
- C(ffi_closure_unix64_sse_alt):
464
- /* See the comments above trampoline_code_table. */
465
- _CET_ENDBR
466
- movq 8(%rsp), %r10 /* Load closure in r10 */
467
- addq $16, %rsp /* Restore the stack */
468
- jmp C(ffi_closure_unix64_sse)
469
- ENDF(C(ffi_closure_unix64_sse_alt))
470
-
471
- .balign 8
472
- .globl C(ffi_closure_unix64_alt)
473
- FFI_HIDDEN(C(ffi_closure_unix64_alt))
474
-
475
- C(ffi_closure_unix64_alt):
476
- /* See the comments above trampoline_code_table. */
477
- _CET_ENDBR
478
- movq 8(%rsp), %r10 /* Load closure in r10 */
479
- addq $16, %rsp /* Restore the stack */
480
- jmp C(ffi_closure_unix64)
481
- ENDF(C(ffi_closure_unix64_alt))
482
-
483
- /*
484
- * Below is the definition of the trampoline code table. Each element in
485
- * the code table is a trampoline.
486
- *
487
- * Because we jump to the trampoline, we place a _CET_ENDBR at the
488
- * beginning of the trampoline to mark it as a valid branch target. This is
489
- * part of the the Intel CET (Control Flow Enforcement Technology).
490
- */
491
- /*
492
- * The trampoline uses register r10. It saves the original value of r10 on
493
- * the stack.
494
- *
495
- * The trampoline has two parameters - target code to jump to and data for
496
- * the target code. The trampoline extracts the parameters from its parameter
497
- * block (see tramp_table_map()). The trampoline saves the data address on
498
- * the stack. Finally, it jumps to the target code.
499
- *
500
- * The target code can choose to:
501
- *
502
- * - restore the value of r10
503
- * - load the data address in a register
504
- * - restore the stack pointer to what it was when the trampoline was invoked.
505
- */
506
- #ifdef ENDBR_PRESENT
507
- # define X86_DATA_OFFSET 4077
508
- # ifdef __ILP32__
509
- # define X86_CODE_OFFSET 4069
510
- # else
511
- # define X86_CODE_OFFSET 4073
512
- # endif
513
- #else
514
- # define X86_DATA_OFFSET 4081
515
- # ifdef __ILP32__
516
- # define X86_CODE_OFFSET 4073
517
- # else
518
- # define X86_CODE_OFFSET 4077
519
- # endif
520
- #endif
521
-
522
- .align UNIX64_TRAMP_MAP_SIZE
523
- .globl trampoline_code_table
524
- FFI_HIDDEN(C(trampoline_code_table))
525
-
526
- C(trampoline_code_table):
527
- .rept UNIX64_TRAMP_MAP_SIZE / UNIX64_TRAMP_SIZE
528
- _CET_ENDBR
529
- subq $16, %rsp /* Make space on the stack */
530
- movq %r10, (%rsp) /* Save %r10 on stack */
531
- #ifdef __ILP32__
532
- movl X86_DATA_OFFSET(%rip), %r10d /* Copy data into %r10 */
533
- #else
534
- movq X86_DATA_OFFSET(%rip), %r10 /* Copy data into %r10 */
535
- #endif
536
- movq %r10, 8(%rsp) /* Save data on stack */
537
- #ifdef __ILP32__
538
- movl X86_CODE_OFFSET(%rip), %r10d /* Copy code into %r10 */
539
- #else
540
- movq X86_CODE_OFFSET(%rip), %r10 /* Copy code into %r10 */
541
- #endif
542
- jmp *%r10 /* Jump to code */
543
- .align 8
544
- .endr
545
- ENDF(C(trampoline_code_table))
546
- .align UNIX64_TRAMP_MAP_SIZE
547
- #endif /* FFI_EXEC_STATIC_TRAMP */
548
-
549
- /* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */
550
-
551
- #ifdef __APPLE__
552
- .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
553
- EHFrame0:
554
- #elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE)
555
- .section .eh_frame,"a",@unwind
556
- #else
557
- .section .eh_frame,"a",@progbits
558
- #endif
559
-
560
- #ifdef HAVE_AS_X86_PCREL
561
- # define PCREL(X) X - .
562
- #else
563
- # define PCREL(X) X@rel
564
- #endif
565
-
566
- /* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */
567
- #ifdef __CET__
568
- /* Use DW_CFA_advance_loc2 when IBT is enabled. */
569
- # define ADV(N, P) .byte 3; .2byte L(N)-L(P)
570
- #else
571
- # define ADV(N, P) .byte 2, L(N)-L(P)
572
- #endif
573
-
574
- .balign 8
575
- L(CIE):
576
- .set L(set0),L(ECIE)-L(SCIE)
577
- .long L(set0) /* CIE Length */
578
- L(SCIE):
579
- .long 0 /* CIE Identifier Tag */
580
- .byte 1 /* CIE Version */
581
- .ascii "zR\0" /* CIE Augmentation */
582
- .byte 1 /* CIE Code Alignment Factor */
583
- .byte 0x78 /* CIE Data Alignment Factor */
584
- .byte 0x10 /* CIE RA Column */
585
- .byte 1 /* Augmentation size */
586
- .byte 0x1b /* FDE Encoding (pcrel sdata4) */
587
- .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp offset 8 */
588
- .byte 0x80+16, 1 /* DW_CFA_offset, %rip offset 1*-8 */
589
- .balign 8
590
- L(ECIE):
591
-
592
- .set L(set1),L(EFDE1)-L(SFDE1)
593
- .long L(set1) /* FDE Length */
594
- L(SFDE1):
595
- .long L(SFDE1)-L(CIE) /* FDE CIE offset */
596
- .long PCREL(L(UW0)) /* Initial location */
597
- .long L(UW4)-L(UW0) /* Address range */
598
- .byte 0 /* Augmentation size */
599
- ADV(UW1, UW0)
600
- .byte 0xc, 6, 32 /* DW_CFA_def_cfa, %rbp 32 */
601
- .byte 0x80+6, 2 /* DW_CFA_offset, %rbp 2*-8 */
602
- ADV(UW2, UW1)
603
- .byte 0xa /* DW_CFA_remember_state */
604
- .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp 8 */
605
- .byte 0xc0+6 /* DW_CFA_restore, %rbp */
606
- ADV(UW3, UW2)
607
- .byte 0xb /* DW_CFA_restore_state */
608
- .balign 8
609
- L(EFDE1):
610
-
611
- .set L(set2),L(EFDE2)-L(SFDE2)
612
- .long L(set2) /* FDE Length */
613
- L(SFDE2):
614
- .long L(SFDE2)-L(CIE) /* FDE CIE offset */
615
- .long PCREL(L(UW5)) /* Initial location */
616
- .long L(UW7)-L(UW5) /* Address range */
617
- .byte 0 /* Augmentation size */
618
- ADV(UW6, UW5)
619
- .byte 0xe /* DW_CFA_def_cfa_offset */
620
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
621
- .balign 8
622
- L(EFDE2):
623
-
624
- .set L(set3),L(EFDE3)-L(SFDE3)
625
- .long L(set3) /* FDE Length */
626
- L(SFDE3):
627
- .long L(SFDE3)-L(CIE) /* FDE CIE offset */
628
- .long PCREL(L(UW8)) /* Initial location */
629
- .long L(UW11)-L(UW8) /* Address range */
630
- .byte 0 /* Augmentation size */
631
- ADV(UW9, UW8)
632
- .byte 0xe /* DW_CFA_def_cfa_offset */
633
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
634
- ADV(UW10, UW9)
635
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset 8 */
636
- L(EFDE3):
637
-
638
- .set L(set4),L(EFDE4)-L(SFDE4)
639
- .long L(set4) /* FDE Length */
640
- L(SFDE4):
641
- .long L(SFDE4)-L(CIE) /* FDE CIE offset */
642
- .long PCREL(L(UW12)) /* Initial location */
643
- .long L(UW14)-L(UW12) /* Address range */
644
- .byte 0 /* Augmentation size */
645
- ADV(UW13, UW12)
646
- .byte 0xe /* DW_CFA_def_cfa_offset */
647
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
648
- .balign 8
649
- L(EFDE4):
650
-
651
- .set L(set5),L(EFDE5)-L(SFDE5)
652
- .long L(set5) /* FDE Length */
653
- L(SFDE5):
654
- .long L(SFDE5)-L(CIE) /* FDE CIE offset */
655
- .long PCREL(L(UW15)) /* Initial location */
656
- .long L(UW17)-L(UW15) /* Address range */
657
- .byte 0 /* Augmentation size */
658
- ADV(UW16, UW15)
659
- .byte 0xe /* DW_CFA_def_cfa_offset */
660
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
661
- .balign 8
662
- L(EFDE5):
663
- #ifdef __APPLE__
664
- .subsections_via_symbols
665
- .section __LD,__compact_unwind,regular,debug
666
-
667
- /* compact unwind for ffi_call_unix64 */
668
- .quad C(ffi_call_unix64)
669
- .set L1,L(UW4)-L(UW0)
670
- .long L1
671
- .long 0x04000000 /* use dwarf unwind info */
672
- .quad 0
673
- .quad 0
674
-
675
- /* compact unwind for ffi_closure_unix64_sse */
676
- .quad C(ffi_closure_unix64_sse)
677
- .set L2,L(UW7)-L(UW5)
678
- .long L2
679
- .long 0x04000000 /* use dwarf unwind info */
680
- .quad 0
681
- .quad 0
682
-
683
- /* compact unwind for ffi_closure_unix64 */
684
- .quad C(ffi_closure_unix64)
685
- .set L3,L(UW11)-L(UW8)
686
- .long L3
687
- .long 0x04000000 /* use dwarf unwind info */
688
- .quad 0
689
- .quad 0
690
-
691
- /* compact unwind for ffi_go_closure_unix64_sse */
692
- .quad C(ffi_go_closure_unix64_sse)
693
- .set L4,L(UW14)-L(UW12)
694
- .long L4
695
- .long 0x04000000 /* use dwarf unwind info */
696
- .quad 0
697
- .quad 0
698
-
699
- /* compact unwind for ffi_go_closure_unix64 */
700
- .quad C(ffi_go_closure_unix64)
701
- .set L5,L(UW17)-L(UW15)
702
- .long L5
703
- .long 0x04000000 /* use dwarf unwind info */
704
- .quad 0
705
- .quad 0
706
- #endif
707
-
708
- #endif /* __x86_64__ */
709
- #if defined __ELF__ && defined __linux__
710
- .section .note.GNU-stack,"",@progbits
711
- #endif