ffi 1.9.21-x86-mingw32 → 1.9.22-x86-mingw32

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

Potentially problematic release.


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

Files changed (551) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +22 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +52 -0
  5. data/.yardopts +5 -0
  6. data/Gemfile +15 -0
  7. data/{spec/ffi/LICENSE.SPECS → LICENSE.SPECS} +1 -1
  8. data/README.md +1 -1
  9. data/Rakefile +28 -3
  10. data/appveyor.yml +22 -0
  11. data/ffi.gemspec +14 -1
  12. data/lib/2.0/ffi_c.so +0 -0
  13. data/lib/2.1/ffi_c.so +0 -0
  14. data/lib/2.2/ffi_c.so +0 -0
  15. data/lib/2.3/ffi_c.so +0 -0
  16. data/lib/2.4/ffi_c.so +0 -0
  17. data/lib/2.5/ffi_c.so +0 -0
  18. data/lib/ffi/library.rb +1 -1
  19. data/lib/ffi/version.rb +1 -1
  20. data/samples/getlogin.rb +8 -0
  21. data/samples/getpid.rb +8 -0
  22. data/samples/gettimeofday.rb +18 -0
  23. data/samples/hello.rb +7 -0
  24. data/samples/inotify.rb +60 -0
  25. data/samples/pty.rb +76 -0
  26. data/samples/qsort.rb +21 -0
  27. data/samples/sample_helper.rb +6 -0
  28. metadata +17 -526
  29. data/ext/ffi_c/AbstractMemory.c +0 -1109
  30. data/ext/ffi_c/AbstractMemory.h +0 -175
  31. data/ext/ffi_c/ArrayType.c +0 -162
  32. data/ext/ffi_c/ArrayType.h +0 -59
  33. data/ext/ffi_c/Buffer.c +0 -365
  34. data/ext/ffi_c/Call.c +0 -517
  35. data/ext/ffi_c/Call.h +0 -110
  36. data/ext/ffi_c/ClosurePool.c +0 -283
  37. data/ext/ffi_c/ClosurePool.h +0 -57
  38. data/ext/ffi_c/DataConverter.c +0 -91
  39. data/ext/ffi_c/DynamicLibrary.c +0 -339
  40. data/ext/ffi_c/DynamicLibrary.h +0 -98
  41. data/ext/ffi_c/Function.c +0 -998
  42. data/ext/ffi_c/Function.h +0 -87
  43. data/ext/ffi_c/FunctionInfo.c +0 -271
  44. data/ext/ffi_c/LastError.c +0 -184
  45. data/ext/ffi_c/LastError.h +0 -47
  46. data/ext/ffi_c/LongDouble.c +0 -63
  47. data/ext/ffi_c/LongDouble.h +0 -51
  48. data/ext/ffi_c/MappedType.c +0 -168
  49. data/ext/ffi_c/MappedType.h +0 -59
  50. data/ext/ffi_c/MemoryPointer.c +0 -197
  51. data/ext/ffi_c/MemoryPointer.h +0 -53
  52. data/ext/ffi_c/MethodHandle.c +0 -358
  53. data/ext/ffi_c/MethodHandle.h +0 -55
  54. data/ext/ffi_c/Platform.c +0 -129
  55. data/ext/ffi_c/Platform.h +0 -45
  56. data/ext/ffi_c/Pointer.c +0 -508
  57. data/ext/ffi_c/Pointer.h +0 -63
  58. data/ext/ffi_c/Struct.c +0 -829
  59. data/ext/ffi_c/Struct.h +0 -106
  60. data/ext/ffi_c/StructByReference.c +0 -190
  61. data/ext/ffi_c/StructByReference.h +0 -50
  62. data/ext/ffi_c/StructByValue.c +0 -150
  63. data/ext/ffi_c/StructByValue.h +0 -55
  64. data/ext/ffi_c/StructLayout.c +0 -698
  65. data/ext/ffi_c/Thread.c +0 -352
  66. data/ext/ffi_c/Thread.h +0 -95
  67. data/ext/ffi_c/Type.c +0 -397
  68. data/ext/ffi_c/Type.h +0 -62
  69. data/ext/ffi_c/Types.c +0 -139
  70. data/ext/ffi_c/Types.h +0 -89
  71. data/ext/ffi_c/Variadic.c +0 -304
  72. data/ext/ffi_c/compat.h +0 -78
  73. data/ext/ffi_c/extconf.rb +0 -71
  74. data/ext/ffi_c/ffi.c +0 -98
  75. data/ext/ffi_c/libffi.bsd.mk +0 -40
  76. data/ext/ffi_c/libffi.darwin.mk +0 -105
  77. data/ext/ffi_c/libffi.gnu.mk +0 -32
  78. data/ext/ffi_c/libffi.mk +0 -18
  79. data/ext/ffi_c/libffi.vc.mk +0 -26
  80. data/ext/ffi_c/libffi.vc64.mk +0 -26
  81. data/ext/ffi_c/libffi/ChangeLog.libffi +0 -584
  82. data/ext/ffi_c/libffi/ChangeLog.libffi-3.1 +0 -6000
  83. data/ext/ffi_c/libffi/ChangeLog.libgcj +0 -40
  84. data/ext/ffi_c/libffi/ChangeLog.v1 +0 -764
  85. data/ext/ffi_c/libffi/LICENSE +0 -21
  86. data/ext/ffi_c/libffi/Makefile.am +0 -205
  87. data/ext/ffi_c/libffi/Makefile.in +0 -1805
  88. data/ext/ffi_c/libffi/README +0 -454
  89. data/ext/ffi_c/libffi/acinclude.m4 +0 -473
  90. data/ext/ffi_c/libffi/aclocal.m4 +0 -2134
  91. data/ext/ffi_c/libffi/autogen.sh +0 -2
  92. data/ext/ffi_c/libffi/autom4te.cache/output.0 +0 -21972
  93. data/ext/ffi_c/libffi/autom4te.cache/output.1 +0 -21972
  94. data/ext/ffi_c/libffi/autom4te.cache/output.2 +0 -21972
  95. data/ext/ffi_c/libffi/autom4te.cache/output.3 +0 -21972
  96. data/ext/ffi_c/libffi/autom4te.cache/requests +0 -331
  97. data/ext/ffi_c/libffi/autom4te.cache/traces.0 +0 -4010
  98. data/ext/ffi_c/libffi/autom4te.cache/traces.1 +0 -1005
  99. data/ext/ffi_c/libffi/autom4te.cache/traces.2 +0 -4010
  100. data/ext/ffi_c/libffi/autom4te.cache/traces.3 +0 -4010
  101. data/ext/ffi_c/libffi/compile +0 -347
  102. data/ext/ffi_c/libffi/config.guess +0 -1462
  103. data/ext/ffi_c/libffi/config.sub +0 -1825
  104. data/ext/ffi_c/libffi/configure +0 -21972
  105. data/ext/ffi_c/libffi/configure.ac +0 -388
  106. data/ext/ffi_c/libffi/configure.host +0 -272
  107. data/ext/ffi_c/libffi/depcomp +0 -791
  108. data/ext/ffi_c/libffi/doc/Makefile.am +0 -3
  109. data/ext/ffi_c/libffi/doc/Makefile.in +0 -811
  110. data/ext/ffi_c/libffi/doc/libffi.texi +0 -985
  111. data/ext/ffi_c/libffi/doc/mdate-sh +0 -228
  112. data/ext/ffi_c/libffi/doc/texinfo.tex +0 -10079
  113. data/ext/ffi_c/libffi/doc/version.texi +0 -4
  114. data/ext/ffi_c/libffi/fficonfig.h.in +0 -210
  115. data/ext/ffi_c/libffi/fficonfig.h.in~ +0 -210
  116. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +0 -207
  117. data/ext/ffi_c/libffi/include/Makefile.am +0 -9
  118. data/ext/ffi_c/libffi/include/Makefile.in +0 -604
  119. data/ext/ffi_c/libffi/include/ffi.h.in +0 -484
  120. data/ext/ffi_c/libffi/include/ffi_cfi.h +0 -55
  121. data/ext/ffi_c/libffi/include/ffi_common.h +0 -147
  122. data/ext/ffi_c/libffi/install-sh +0 -508
  123. data/ext/ffi_c/libffi/libffi.map.in +0 -80
  124. data/ext/ffi_c/libffi/libffi.pc.in +0 -11
  125. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +0 -637
  126. data/ext/ffi_c/libffi/libtool-ldflags +0 -106
  127. data/ext/ffi_c/libffi/libtool-version +0 -29
  128. data/ext/ffi_c/libffi/ltmain.sh +0 -11156
  129. data/ext/ffi_c/libffi/m4/asmcfi.m4 +0 -13
  130. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +0 -69
  131. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +0 -181
  132. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +0 -122
  133. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +0 -72
  134. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +0 -84
  135. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +0 -70
  136. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +0 -301
  137. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +0 -225
  138. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +0 -79
  139. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -8387
  140. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -437
  141. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -124
  142. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  143. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -99
  144. data/ext/ffi_c/libffi/man/Makefile.am +0 -8
  145. data/ext/ffi_c/libffi/man/Makefile.in +0 -558
  146. data/ext/ffi_c/libffi/man/ffi.3 +0 -41
  147. data/ext/ffi_c/libffi/man/ffi_call.3 +0 -103
  148. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +0 -68
  149. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +0 -73
  150. data/ext/ffi_c/libffi/missing +0 -215
  151. data/ext/ffi_c/libffi/msvcc.sh +0 -260
  152. data/ext/ffi_c/libffi/src/aarch64/ffi.c +0 -941
  153. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +0 -81
  154. data/ext/ffi_c/libffi/src/aarch64/internal.h +0 -67
  155. data/ext/ffi_c/libffi/src/aarch64/sysv.S +0 -438
  156. data/ext/ffi_c/libffi/src/alpha/ffi.c +0 -521
  157. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +0 -57
  158. data/ext/ffi_c/libffi/src/alpha/internal.h +0 -23
  159. data/ext/ffi_c/libffi/src/alpha/osf.S +0 -282
  160. data/ext/ffi_c/libffi/src/arc/arcompact.S +0 -135
  161. data/ext/ffi_c/libffi/src/arc/ffi.c +0 -266
  162. data/ext/ffi_c/libffi/src/arc/ffitarget.h +0 -53
  163. data/ext/ffi_c/libffi/src/arm/ffi.c +0 -808
  164. data/ext/ffi_c/libffi/src/arm/ffitarget.h +0 -82
  165. data/ext/ffi_c/libffi/src/arm/internal.h +0 -7
  166. data/ext/ffi_c/libffi/src/arm/sysv.S +0 -383
  167. data/ext/ffi_c/libffi/src/avr32/ffi.c +0 -423
  168. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +0 -55
  169. data/ext/ffi_c/libffi/src/avr32/sysv.S +0 -208
  170. data/ext/ffi_c/libffi/src/bfin/ffi.c +0 -196
  171. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +0 -43
  172. data/ext/ffi_c/libffi/src/bfin/sysv.S +0 -179
  173. data/ext/ffi_c/libffi/src/closures.c +0 -890
  174. data/ext/ffi_c/libffi/src/cris/ffi.c +0 -386
  175. data/ext/ffi_c/libffi/src/cris/ffitarget.h +0 -56
  176. data/ext/ffi_c/libffi/src/cris/sysv.S +0 -215
  177. data/ext/ffi_c/libffi/src/debug.c +0 -64
  178. data/ext/ffi_c/libffi/src/dlmalloc.c +0 -5166
  179. data/ext/ffi_c/libffi/src/frv/eabi.S +0 -128
  180. data/ext/ffi_c/libffi/src/frv/ffi.c +0 -292
  181. data/ext/ffi_c/libffi/src/frv/ffitarget.h +0 -62
  182. data/ext/ffi_c/libffi/src/ia64/ffi.c +0 -586
  183. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +0 -55
  184. data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +0 -40
  185. data/ext/ffi_c/libffi/src/ia64/unix.S +0 -560
  186. data/ext/ffi_c/libffi/src/java_raw_api.c +0 -374
  187. data/ext/ffi_c/libffi/src/m32r/ffi.c +0 -232
  188. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +0 -53
  189. data/ext/ffi_c/libffi/src/m32r/sysv.S +0 -121
  190. data/ext/ffi_c/libffi/src/m68k/ffi.c +0 -362
  191. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +0 -54
  192. data/ext/ffi_c/libffi/src/m68k/sysv.S +0 -357
  193. data/ext/ffi_c/libffi/src/m88k/ffi.c +0 -400
  194. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +0 -49
  195. data/ext/ffi_c/libffi/src/m88k/obsd.S +0 -209
  196. data/ext/ffi_c/libffi/src/metag/ffi.c +0 -330
  197. data/ext/ffi_c/libffi/src/metag/ffitarget.h +0 -53
  198. data/ext/ffi_c/libffi/src/metag/sysv.S +0 -311
  199. data/ext/ffi_c/libffi/src/microblaze/ffi.c +0 -321
  200. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +0 -53
  201. data/ext/ffi_c/libffi/src/microblaze/sysv.S +0 -302
  202. data/ext/ffi_c/libffi/src/mips/ffi.c +0 -1105
  203. data/ext/ffi_c/libffi/src/mips/ffitarget.h +0 -249
  204. data/ext/ffi_c/libffi/src/mips/n32.S +0 -661
  205. data/ext/ffi_c/libffi/src/mips/o32.S +0 -502
  206. data/ext/ffi_c/libffi/src/moxie/eabi.S +0 -101
  207. data/ext/ffi_c/libffi/src/moxie/ffi.c +0 -272
  208. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +0 -52
  209. data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
  210. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
  211. data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
  212. data/ext/ffi_c/libffi/src/or1k/ffi.c +0 -328
  213. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +0 -58
  214. data/ext/ffi_c/libffi/src/or1k/sysv.S +0 -107
  215. data/ext/ffi_c/libffi/src/pa/ffi.c +0 -719
  216. data/ext/ffi_c/libffi/src/pa/ffitarget.h +0 -85
  217. data/ext/ffi_c/libffi/src/pa/hpux32.S +0 -368
  218. data/ext/ffi_c/libffi/src/pa/linux.S +0 -357
  219. data/ext/ffi_c/libffi/src/powerpc/aix.S +0 -328
  220. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +0 -447
  221. data/ext/ffi_c/libffi/src/powerpc/asm.h +0 -125
  222. data/ext/ffi_c/libffi/src/powerpc/darwin.S +0 -378
  223. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +0 -571
  224. data/ext/ffi_c/libffi/src/powerpc/ffi.c +0 -173
  225. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +0 -1359
  226. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +0 -945
  227. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +0 -94
  228. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +0 -923
  229. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +0 -195
  230. data/ext/ffi_c/libffi/src/powerpc/linux64.S +0 -228
  231. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +0 -488
  232. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +0 -397
  233. data/ext/ffi_c/libffi/src/powerpc/sysv.S +0 -175
  234. data/ext/ffi_c/libffi/src/prep_cif.c +0 -261
  235. data/ext/ffi_c/libffi/src/raw_api.c +0 -267
  236. data/ext/ffi_c/libffi/src/s390/ffi.c +0 -756
  237. data/ext/ffi_c/libffi/src/s390/ffitarget.h +0 -70
  238. data/ext/ffi_c/libffi/src/s390/internal.h +0 -11
  239. data/ext/ffi_c/libffi/src/s390/sysv.S +0 -325
  240. data/ext/ffi_c/libffi/src/sh/ffi.c +0 -717
  241. data/ext/ffi_c/libffi/src/sh/ffitarget.h +0 -54
  242. data/ext/ffi_c/libffi/src/sh/sysv.S +0 -850
  243. data/ext/ffi_c/libffi/src/sh64/ffi.c +0 -469
  244. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +0 -58
  245. data/ext/ffi_c/libffi/src/sh64/sysv.S +0 -539
  246. data/ext/ffi_c/libffi/src/sparc/ffi.c +0 -468
  247. data/ext/ffi_c/libffi/src/sparc/ffi64.c +0 -608
  248. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +0 -81
  249. data/ext/ffi_c/libffi/src/sparc/internal.h +0 -26
  250. data/ext/ffi_c/libffi/src/sparc/v8.S +0 -443
  251. data/ext/ffi_c/libffi/src/sparc/v9.S +0 -440
  252. data/ext/ffi_c/libffi/src/tile/ffi.c +0 -355
  253. data/ext/ffi_c/libffi/src/tile/ffitarget.h +0 -65
  254. data/ext/ffi_c/libffi/src/tile/tile.S +0 -360
  255. data/ext/ffi_c/libffi/src/types.c +0 -106
  256. data/ext/ffi_c/libffi/src/vax/elfbsd.S +0 -195
  257. data/ext/ffi_c/libffi/src/vax/ffi.c +0 -276
  258. data/ext/ffi_c/libffi/src/vax/ffitarget.h +0 -49
  259. data/ext/ffi_c/libffi/src/x86/asmnames.h +0 -30
  260. data/ext/ffi_c/libffi/src/x86/ffi.c +0 -733
  261. data/ext/ffi_c/libffi/src/x86/ffi64.c +0 -857
  262. data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -141
  263. data/ext/ffi_c/libffi/src/x86/ffiw64.c +0 -287
  264. data/ext/ffi_c/libffi/src/x86/internal.h +0 -29
  265. data/ext/ffi_c/libffi/src/x86/internal64.h +0 -22
  266. data/ext/ffi_c/libffi/src/x86/sysv.S +0 -1043
  267. data/ext/ffi_c/libffi/src/x86/unix64.S +0 -525
  268. data/ext/ffi_c/libffi/src/x86/win64.S +0 -232
  269. data/ext/ffi_c/libffi/src/x86/win64_intel.S +0 -237
  270. data/ext/ffi_c/libffi/src/xtensa/ffi.c +0 -298
  271. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +0 -53
  272. data/ext/ffi_c/libffi/src/xtensa/sysv.S +0 -253
  273. data/ext/ffi_c/libffi/stamp-h.in +0 -1
  274. data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -85
  275. data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -607
  276. data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
  277. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -445
  278. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
  279. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -30
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +0 -89
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +0 -81
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +0 -81
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +0 -82
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +0 -89
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +0 -92
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +0 -90
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +0 -95
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c +0 -55
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +0 -94
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +0 -95
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +0 -96
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +0 -102
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +0 -89
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +0 -91
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +0 -93
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +0 -113
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +0 -90
  300. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +0 -95
  301. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +0 -90
  302. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +0 -90
  303. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +0 -98
  304. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +0 -90
  305. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +0 -109
  306. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +0 -98
  307. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +0 -124
  308. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +0 -113
  309. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +0 -99
  310. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +0 -117
  311. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +0 -97
  312. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +0 -88
  313. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +0 -90
  314. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +0 -91
  315. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +0 -93
  316. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +0 -91
  317. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +0 -92
  318. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +0 -132
  319. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +0 -115
  320. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +0 -95
  321. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +0 -91
  322. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +0 -91
  323. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +0 -92
  324. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +0 -91
  325. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +0 -91
  326. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +0 -93
  327. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +0 -66
  328. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +0 -43
  329. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +0 -61
  330. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +0 -42
  331. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +0 -105
  332. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +0 -61
  333. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +0 -70
  334. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +0 -55
  335. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +0 -74
  336. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +0 -74
  337. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +0 -86
  338. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +0 -91
  339. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +0 -74
  340. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +0 -86
  341. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +0 -74
  342. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +0 -142
  343. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +0 -44
  344. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +0 -42
  345. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +0 -42
  346. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +0 -114
  347. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +0 -42
  348. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +0 -44
  349. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +0 -43
  350. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +0 -45
  351. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +0 -45
  352. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +0 -47
  353. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +0 -43
  354. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +0 -44
  355. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +0 -36
  356. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
  357. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -136
  358. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
  359. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
  360. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -60
  361. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
  362. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
  363. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -107
  364. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +0 -341
  365. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
  366. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
  367. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
  368. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
  369. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
  370. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +0 -152
  371. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +0 -161
  372. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +0 -133
  373. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +0 -121
  374. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +0 -110
  375. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +0 -111
  376. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +0 -111
  377. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +0 -112
  378. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +0 -131
  379. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +0 -111
  380. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +0 -131
  381. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +0 -131
  382. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
  383. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
  384. data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +0 -90
  385. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
  386. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +0 -114
  387. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
  388. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
  389. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
  390. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
  391. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
  392. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
  393. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
  394. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
  395. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
  396. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -43
  397. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
  398. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -38
  399. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
  400. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -38
  401. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +0 -145
  402. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +0 -148
  403. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +0 -124
  404. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +0 -125
  405. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -44
  406. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
  407. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
  408. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
  409. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
  410. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
  411. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
  412. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
  413. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
  414. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
  415. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
  416. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
  417. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
  418. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +0 -70
  419. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
  420. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc +0 -117
  421. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc +0 -54
  422. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -196
  423. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -121
  424. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -123
  425. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -125
  426. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
  427. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
  428. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
  429. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
  430. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
  431. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
  432. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
  433. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
  434. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
  435. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
  436. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
  437. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
  438. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
  439. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
  440. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
  441. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
  442. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
  443. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
  444. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
  445. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
  446. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
  447. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
  448. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
  449. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
  450. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
  451. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
  452. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
  453. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
  454. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
  455. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
  456. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
  457. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
  458. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
  459. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
  460. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
  461. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
  462. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
  463. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
  464. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
  465. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
  466. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
  467. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
  468. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
  469. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
  470. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
  471. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
  472. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
  473. data/ext/ffi_c/rbffi.h +0 -57
  474. data/ext/ffi_c/rbffi_endian.h +0 -59
  475. data/ext/ffi_c/win32/stdbool.h +0 -8
  476. data/ext/ffi_c/win32/stdint.h +0 -201
  477. data/gen/Rakefile +0 -30
  478. data/libtest/Benchmark.c +0 -52
  479. data/libtest/BoolTest.c +0 -34
  480. data/libtest/BufferTest.c +0 -31
  481. data/libtest/ClosureTest.c +0 -205
  482. data/libtest/EnumTest.c +0 -51
  483. data/libtest/FunctionTest.c +0 -70
  484. data/libtest/GNUmakefile +0 -149
  485. data/libtest/GlobalVariable.c +0 -62
  486. data/libtest/LastErrorTest.c +0 -21
  487. data/libtest/NumberTest.c +0 -132
  488. data/libtest/PointerTest.c +0 -63
  489. data/libtest/ReferenceTest.c +0 -23
  490. data/libtest/StringTest.c +0 -34
  491. data/libtest/StructTest.c +0 -243
  492. data/libtest/UnionTest.c +0 -43
  493. data/libtest/VariadicTest.c +0 -99
  494. data/spec/ffi/async_callback_spec.rb +0 -35
  495. data/spec/ffi/bitmask_spec.rb +0 -575
  496. data/spec/ffi/bool_spec.rb +0 -32
  497. data/spec/ffi/buffer_spec.rb +0 -279
  498. data/spec/ffi/callback_spec.rb +0 -773
  499. data/spec/ffi/custom_param_type.rb +0 -37
  500. data/spec/ffi/custom_type_spec.rb +0 -74
  501. data/spec/ffi/dup_spec.rb +0 -52
  502. data/spec/ffi/embed-test/ext/Makefile +0 -242
  503. data/spec/ffi/enum_spec.rb +0 -423
  504. data/spec/ffi/errno_spec.rb +0 -20
  505. data/spec/ffi/ffi_spec.rb +0 -28
  506. data/spec/ffi/fixtures/Benchmark.c +0 -52
  507. data/spec/ffi/fixtures/BitmaskTest.c +0 -51
  508. data/spec/ffi/fixtures/BoolTest.c +0 -34
  509. data/spec/ffi/fixtures/BufferTest.c +0 -31
  510. data/spec/ffi/fixtures/ClosureTest.c +0 -205
  511. data/spec/ffi/fixtures/EnumTest.c +0 -51
  512. data/spec/ffi/fixtures/FunctionTest.c +0 -142
  513. data/spec/ffi/fixtures/GNUmakefile +0 -149
  514. data/spec/ffi/fixtures/GlobalVariable.c +0 -62
  515. data/spec/ffi/fixtures/LastErrorTest.c +0 -21
  516. data/spec/ffi/fixtures/NumberTest.c +0 -132
  517. data/spec/ffi/fixtures/PipeHelper.h +0 -21
  518. data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
  519. data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
  520. data/spec/ffi/fixtures/PointerTest.c +0 -63
  521. data/spec/ffi/fixtures/ReferenceTest.c +0 -23
  522. data/spec/ffi/fixtures/StringTest.c +0 -34
  523. data/spec/ffi/fixtures/StructTest.c +0 -243
  524. data/spec/ffi/fixtures/UnionTest.c +0 -43
  525. data/spec/ffi/fixtures/VariadicTest.c +0 -99
  526. data/spec/ffi/fixtures/classes.rb +0 -438
  527. data/spec/ffi/function_spec.rb +0 -97
  528. data/spec/ffi/io_spec.rb +0 -16
  529. data/spec/ffi/library_spec.rb +0 -286
  530. data/spec/ffi/long_double.rb +0 -30
  531. data/spec/ffi/managed_struct_spec.rb +0 -68
  532. data/spec/ffi/memorypointer_spec.rb +0 -78
  533. data/spec/ffi/number_spec.rb +0 -247
  534. data/spec/ffi/platform_spec.rb +0 -114
  535. data/spec/ffi/pointer_spec.rb +0 -285
  536. data/spec/ffi/rbx/attach_function_spec.rb +0 -34
  537. data/spec/ffi/rbx/memory_pointer_spec.rb +0 -198
  538. data/spec/ffi/rbx/spec_helper.rb +0 -6
  539. data/spec/ffi/rbx/struct_spec.rb +0 -18
  540. data/spec/ffi/spec_helper.rb +0 -93
  541. data/spec/ffi/string_spec.rb +0 -118
  542. data/spec/ffi/strptr_spec.rb +0 -50
  543. data/spec/ffi/struct_by_ref_spec.rb +0 -43
  544. data/spec/ffi/struct_callback_spec.rb +0 -69
  545. data/spec/ffi/struct_initialize_spec.rb +0 -35
  546. data/spec/ffi/struct_packed_spec.rb +0 -50
  547. data/spec/ffi/struct_spec.rb +0 -882
  548. data/spec/ffi/typedef_spec.rb +0 -91
  549. data/spec/ffi/union_spec.rb +0 -67
  550. data/spec/ffi/variadic_spec.rb +0 -132
  551. data/spec/spec.opts +0 -4
@@ -1,249 +0,0 @@
1
- /* -----------------------------------------------------------------*-C-*-
2
- ffitarget.h - Copyright (c) 2012 Anthony Green
3
- Copyright (c) 1996-2003 Red Hat, Inc.
4
- Target configuration macros for MIPS.
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- ``Software''), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included
15
- in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
- DEALINGS IN THE SOFTWARE.
25
-
26
- ----------------------------------------------------------------------- */
27
-
28
- #ifndef LIBFFI_TARGET_H
29
- #define LIBFFI_TARGET_H
30
-
31
- #ifndef LIBFFI_H
32
- #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
33
- #endif
34
-
35
- #ifdef linux
36
- # include <asm/sgidefs.h>
37
- #elif defined(__rtems__)
38
- /*
39
- * Subprogram calling convention - copied from sgidefs.h
40
- */
41
- #define _MIPS_SIM_ABI32 1
42
- #define _MIPS_SIM_NABI32 2
43
- #define _MIPS_SIM_ABI64 3
44
- #elif !defined(__OpenBSD__)
45
- # include <sgidefs.h>
46
- #endif
47
-
48
- # ifndef _ABIN32
49
- # define _ABIN32 _MIPS_SIM_NABI32
50
- # endif
51
- # ifndef _ABI64
52
- # define _ABI64 _MIPS_SIM_ABI64
53
- # endif
54
- # ifndef _ABIO32
55
- # define _ABIO32 _MIPS_SIM_ABI32
56
- # endif
57
-
58
- #if !defined(_MIPS_SIM)
59
- # error -- something is very wrong --
60
- #else
61
- # if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64))
62
- # define FFI_MIPS_N32
63
- # else
64
- # if (_MIPS_SIM==_ABIO32 && defined(_ABIO32))
65
- # define FFI_MIPS_O32
66
- # else
67
- # error -- this is an unsupported platform --
68
- # endif
69
- # endif
70
- #endif
71
-
72
- #ifdef FFI_MIPS_O32
73
- /* O32 stack frames have 32bit integer args */
74
- # define FFI_SIZEOF_ARG 4
75
- #else
76
- /* N32 and N64 frames have 64bit integer args */
77
- # define FFI_SIZEOF_ARG 8
78
- # if _MIPS_SIM == _ABIN32
79
- # define FFI_SIZEOF_JAVA_RAW 4
80
- # endif
81
- #endif
82
-
83
- #define FFI_FLAG_BITS 2
84
-
85
- /* SGI's strange assembler requires that we multiply by 4 rather
86
- than shift left by FFI_FLAG_BITS */
87
-
88
- #define FFI_ARGS_D FFI_TYPE_DOUBLE
89
- #define FFI_ARGS_F FFI_TYPE_FLOAT
90
- #define FFI_ARGS_DD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_DOUBLE
91
- #define FFI_ARGS_FF FFI_TYPE_FLOAT * 4 + FFI_TYPE_FLOAT
92
- #define FFI_ARGS_FD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_FLOAT
93
- #define FFI_ARGS_DF FFI_TYPE_FLOAT * 4 + FFI_TYPE_DOUBLE
94
-
95
- /* Needed for N32 structure returns */
96
- #define FFI_TYPE_SMALLSTRUCT FFI_TYPE_UINT8
97
- #define FFI_TYPE_SMALLSTRUCT2 FFI_TYPE_SINT8
98
-
99
- #if 0
100
- /* The SGI assembler can't handle this.. */
101
- #define FFI_TYPE_STRUCT_DD (( FFI_ARGS_DD ) << 4) + FFI_TYPE_STRUCT
102
- /* (and so on) */
103
- #else
104
- /* ...so we calculate these by hand! */
105
- #define FFI_TYPE_STRUCT_D 61
106
- #define FFI_TYPE_STRUCT_F 45
107
- #define FFI_TYPE_STRUCT_DD 253
108
- #define FFI_TYPE_STRUCT_FF 173
109
- #define FFI_TYPE_STRUCT_FD 237
110
- #define FFI_TYPE_STRUCT_DF 189
111
- #define FFI_TYPE_STRUCT_SMALL 93
112
- #define FFI_TYPE_STRUCT_SMALL2 109
113
-
114
- /* and for n32 soft float, add 16 * 2^4 */
115
- #define FFI_TYPE_STRUCT_D_SOFT 317
116
- #define FFI_TYPE_STRUCT_F_SOFT 301
117
- #define FFI_TYPE_STRUCT_DD_SOFT 509
118
- #define FFI_TYPE_STRUCT_FF_SOFT 429
119
- #define FFI_TYPE_STRUCT_FD_SOFT 493
120
- #define FFI_TYPE_STRUCT_DF_SOFT 445
121
- #define FFI_TYPE_STRUCT_SOFT 16
122
- #endif
123
-
124
- #ifdef LIBFFI_ASM
125
- #define v0 $2
126
- #define v1 $3
127
- #define a0 $4
128
- #define a1 $5
129
- #define a2 $6
130
- #define a3 $7
131
- #define a4 $8
132
- #define a5 $9
133
- #define a6 $10
134
- #define a7 $11
135
- #define t0 $8
136
- #define t1 $9
137
- #define t2 $10
138
- #define t3 $11
139
- #define t4 $12
140
- #define t5 $13
141
- #define t6 $14
142
- #define t7 $15
143
- #define t8 $24
144
- #define t9 $25
145
- #define ra $31
146
-
147
- #ifdef FFI_MIPS_O32
148
- # define REG_L lw
149
- # define REG_S sw
150
- # define SUBU subu
151
- # define ADDU addu
152
- # define SRL srl
153
- # define LI li
154
- #else /* !FFI_MIPS_O32 */
155
- # define REG_L ld
156
- # define REG_S sd
157
- # define SUBU dsubu
158
- # define ADDU daddu
159
- # define SRL dsrl
160
- # define LI dli
161
- # if (_MIPS_SIM==_ABI64)
162
- # define LA dla
163
- # define EH_FRAME_ALIGN 3
164
- # define FDE_ADDR_BYTES .8byte
165
- # else
166
- # define LA la
167
- # define EH_FRAME_ALIGN 2
168
- # define FDE_ADDR_BYTES .4byte
169
- # endif /* _MIPS_SIM==_ABI64 */
170
- #endif /* !FFI_MIPS_O32 */
171
- #else /* !LIBFFI_ASM */
172
- # ifdef __GNUC__
173
- # ifdef FFI_MIPS_O32
174
- /* O32 stack frames have 32bit integer args */
175
- typedef unsigned int ffi_arg __attribute__((__mode__(__SI__)));
176
- typedef signed int ffi_sarg __attribute__((__mode__(__SI__)));
177
- #else
178
- /* N32 and N64 frames have 64bit integer args */
179
- typedef unsigned int ffi_arg __attribute__((__mode__(__DI__)));
180
- typedef signed int ffi_sarg __attribute__((__mode__(__DI__)));
181
- # endif
182
- # else
183
- # ifdef FFI_MIPS_O32
184
- /* O32 stack frames have 32bit integer args */
185
- typedef __uint32_t ffi_arg;
186
- typedef __int32_t ffi_sarg;
187
- # else
188
- /* N32 and N64 frames have 64bit integer args */
189
- typedef __uint64_t ffi_arg;
190
- typedef __int64_t ffi_sarg;
191
- # endif
192
- # endif /* __GNUC__ */
193
-
194
- typedef enum ffi_abi {
195
- FFI_FIRST_ABI = 0,
196
- FFI_O32,
197
- FFI_N32,
198
- FFI_N64,
199
- FFI_O32_SOFT_FLOAT,
200
- FFI_N32_SOFT_FLOAT,
201
- FFI_N64_SOFT_FLOAT,
202
- FFI_LAST_ABI,
203
-
204
- #ifdef FFI_MIPS_O32
205
- #ifdef __mips_soft_float
206
- FFI_DEFAULT_ABI = FFI_O32_SOFT_FLOAT
207
- #else
208
- FFI_DEFAULT_ABI = FFI_O32
209
- #endif
210
- #else
211
- # if _MIPS_SIM==_ABI64
212
- # ifdef __mips_soft_float
213
- FFI_DEFAULT_ABI = FFI_N64_SOFT_FLOAT
214
- # else
215
- FFI_DEFAULT_ABI = FFI_N64
216
- # endif
217
- # else
218
- # ifdef __mips_soft_float
219
- FFI_DEFAULT_ABI = FFI_N32_SOFT_FLOAT
220
- # else
221
- FFI_DEFAULT_ABI = FFI_N32
222
- # endif
223
- # endif
224
- #endif
225
- } ffi_abi;
226
-
227
- #define FFI_EXTRA_CIF_FIELDS unsigned rstruct_flag
228
- #endif /* !LIBFFI_ASM */
229
-
230
- /* ---- Definitions for closures ----------------------------------------- */
231
-
232
- #if defined(FFI_MIPS_O32)
233
- #define FFI_CLOSURES 1
234
- #define FFI_GO_CLOSURES 1
235
- #define FFI_TRAMPOLINE_SIZE 20
236
- #else
237
- /* N32/N64. */
238
- # define FFI_CLOSURES 1
239
- #define FFI_GO_CLOSURES 1
240
- #if _MIPS_SIM==_ABI64
241
- #define FFI_TRAMPOLINE_SIZE 56
242
- #else
243
- #define FFI_TRAMPOLINE_SIZE 20
244
- #endif
245
- #endif /* FFI_MIPS_O32 */
246
- #define FFI_NATIVE_RAW_API 0
247
-
248
- #endif
249
-
@@ -1,661 +0,0 @@
1
- /* -----------------------------------------------------------------------
2
- n32.S - Copyright (c) 1996, 1998, 2005, 2007, 2009, 2010 Red Hat, Inc.
3
-
4
- MIPS Foreign Function Interface
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- ``Software''), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included
15
- in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
- DEALINGS IN THE SOFTWARE.
25
- ----------------------------------------------------------------------- */
26
-
27
- #define LIBFFI_ASM
28
- #include <fficonfig.h>
29
- #include <ffi.h>
30
-
31
- /* Only build this code if we are compiling for n32 */
32
-
33
- #if defined(FFI_MIPS_N32)
34
-
35
- #define callback a0
36
- #define bytes a2
37
- #define flags a3
38
- #define raddr a4
39
- #define fn a5
40
- #define closure a6
41
-
42
- /* Note: to keep stack 16 byte aligned we need even number slots
43
- used 9 slots here
44
- */
45
- #define SIZEOF_FRAME ( 10 * FFI_SIZEOF_ARG )
46
-
47
- #ifdef __GNUC__
48
- .abicalls
49
- #endif
50
- .set mips4
51
- .text
52
- .align 2
53
- .globl ffi_call_N32
54
- .ent ffi_call_N32
55
- ffi_call_N32:
56
- .LFB0:
57
- .frame $fp, SIZEOF_FRAME, ra
58
- .mask 0xc0000000,-FFI_SIZEOF_ARG
59
- .fmask 0x00000000,0
60
-
61
- # Prologue
62
- SUBU $sp, SIZEOF_FRAME # Frame size
63
- .LCFI00:
64
- REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer
65
- REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address
66
- .LCFI01:
67
- move $fp, $sp
68
- .LCFI02:
69
- move t9, callback # callback function pointer
70
- REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes
71
- REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags
72
- REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr
73
- REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn
74
- REG_S closure, 6*FFI_SIZEOF_ARG($fp) # closure
75
-
76
- # Allocate at least 4 words in the argstack
77
- move v0, bytes
78
- bge bytes, 4 * FFI_SIZEOF_ARG, bigger
79
- LI v0, 4 * FFI_SIZEOF_ARG
80
- b sixteen
81
-
82
- bigger:
83
- ADDU t4, v0, 2 * FFI_SIZEOF_ARG -1 # make sure it is aligned
84
- and v0, t4, -2 * FFI_SIZEOF_ARG # to a proper boundry.
85
-
86
- sixteen:
87
- SUBU $sp, $sp, v0 # move the stack pointer to reflect the
88
- # arg space
89
-
90
- move a0, $sp # 4 * FFI_SIZEOF_ARG
91
- ADDU a3, $fp, 3 * FFI_SIZEOF_ARG
92
-
93
- # Call ffi_prep_args
94
- jal t9
95
-
96
- # Copy the stack pointer to t9
97
- move t9, $sp
98
-
99
- # Fix the stack if there are more than 8 64bit slots worth
100
- # of arguments.
101
-
102
- # Load the number of bytes
103
- REG_L t6, 2*FFI_SIZEOF_ARG($fp)
104
-
105
- # Is it bigger than 8 * FFI_SIZEOF_ARG?
106
- daddiu t8, t6, -(8 * FFI_SIZEOF_ARG)
107
- bltz t8, loadregs
108
-
109
- ADDU t9, t9, t8
110
-
111
- loadregs:
112
-
113
- REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6.
114
-
115
- #ifdef __mips_soft_float
116
- REG_L a0, 0*FFI_SIZEOF_ARG(t9)
117
- REG_L a1, 1*FFI_SIZEOF_ARG(t9)
118
- REG_L a2, 2*FFI_SIZEOF_ARG(t9)
119
- REG_L a3, 3*FFI_SIZEOF_ARG(t9)
120
- REG_L a4, 4*FFI_SIZEOF_ARG(t9)
121
- REG_L a5, 5*FFI_SIZEOF_ARG(t9)
122
- REG_L a6, 6*FFI_SIZEOF_ARG(t9)
123
- REG_L a7, 7*FFI_SIZEOF_ARG(t9)
124
- #else
125
- and t4, t6, ((1<<FFI_FLAG_BITS)-1)
126
- REG_L a0, 0*FFI_SIZEOF_ARG(t9)
127
- beqz t4, arg1_next
128
- bne t4, FFI_TYPE_FLOAT, arg1_doublep
129
- l.s $f12, 0*FFI_SIZEOF_ARG(t9)
130
- b arg1_next
131
- arg1_doublep:
132
- l.d $f12, 0*FFI_SIZEOF_ARG(t9)
133
- arg1_next:
134
-
135
- SRL t4, t6, 1*FFI_FLAG_BITS
136
- and t4, ((1<<FFI_FLAG_BITS)-1)
137
- REG_L a1, 1*FFI_SIZEOF_ARG(t9)
138
- beqz t4, arg2_next
139
- bne t4, FFI_TYPE_FLOAT, arg2_doublep
140
- l.s $f13, 1*FFI_SIZEOF_ARG(t9)
141
- b arg2_next
142
- arg2_doublep:
143
- l.d $f13, 1*FFI_SIZEOF_ARG(t9)
144
- arg2_next:
145
-
146
- SRL t4, t6, 2*FFI_FLAG_BITS
147
- and t4, ((1<<FFI_FLAG_BITS)-1)
148
- REG_L a2, 2*FFI_SIZEOF_ARG(t9)
149
- beqz t4, arg3_next
150
- bne t4, FFI_TYPE_FLOAT, arg3_doublep
151
- l.s $f14, 2*FFI_SIZEOF_ARG(t9)
152
- b arg3_next
153
- arg3_doublep:
154
- l.d $f14, 2*FFI_SIZEOF_ARG(t9)
155
- arg3_next:
156
-
157
- SRL t4, t6, 3*FFI_FLAG_BITS
158
- and t4, ((1<<FFI_FLAG_BITS)-1)
159
- REG_L a3, 3*FFI_SIZEOF_ARG(t9)
160
- beqz t4, arg4_next
161
- bne t4, FFI_TYPE_FLOAT, arg4_doublep
162
- l.s $f15, 3*FFI_SIZEOF_ARG(t9)
163
- b arg4_next
164
- arg4_doublep:
165
- l.d $f15, 3*FFI_SIZEOF_ARG(t9)
166
- arg4_next:
167
-
168
- SRL t4, t6, 4*FFI_FLAG_BITS
169
- and t4, ((1<<FFI_FLAG_BITS)-1)
170
- REG_L a4, 4*FFI_SIZEOF_ARG(t9)
171
- beqz t4, arg5_next
172
- bne t4, FFI_TYPE_FLOAT, arg5_doublep
173
- l.s $f16, 4*FFI_SIZEOF_ARG(t9)
174
- b arg5_next
175
- arg5_doublep:
176
- l.d $f16, 4*FFI_SIZEOF_ARG(t9)
177
- arg5_next:
178
-
179
- SRL t4, t6, 5*FFI_FLAG_BITS
180
- and t4, ((1<<FFI_FLAG_BITS)-1)
181
- REG_L a5, 5*FFI_SIZEOF_ARG(t9)
182
- beqz t4, arg6_next
183
- bne t4, FFI_TYPE_FLOAT, arg6_doublep
184
- l.s $f17, 5*FFI_SIZEOF_ARG(t9)
185
- b arg6_next
186
- arg6_doublep:
187
- l.d $f17, 5*FFI_SIZEOF_ARG(t9)
188
- arg6_next:
189
-
190
- SRL t4, t6, 6*FFI_FLAG_BITS
191
- and t4, ((1<<FFI_FLAG_BITS)-1)
192
- REG_L a6, 6*FFI_SIZEOF_ARG(t9)
193
- beqz t4, arg7_next
194
- bne t4, FFI_TYPE_FLOAT, arg7_doublep
195
- l.s $f18, 6*FFI_SIZEOF_ARG(t9)
196
- b arg7_next
197
- arg7_doublep:
198
- l.d $f18, 6*FFI_SIZEOF_ARG(t9)
199
- arg7_next:
200
-
201
- SRL t4, t6, 7*FFI_FLAG_BITS
202
- and t4, ((1<<FFI_FLAG_BITS)-1)
203
- REG_L a7, 7*FFI_SIZEOF_ARG(t9)
204
- beqz t4, arg8_next
205
- bne t4, FFI_TYPE_FLOAT, arg8_doublep
206
- l.s $f19, 7*FFI_SIZEOF_ARG(t9)
207
- b arg8_next
208
- arg8_doublep:
209
- l.d $f19, 7*FFI_SIZEOF_ARG(t9)
210
- arg8_next:
211
- #endif
212
-
213
- callit:
214
- # Load the function pointer
215
- REG_L t9, 5*FFI_SIZEOF_ARG($fp)
216
-
217
- # install the static chain(t7=$15)
218
- REG_L t7, 6*FFI_SIZEOF_ARG($fp)
219
-
220
- # If the return value pointer is NULL, assume no return value.
221
- REG_L t5, 4*FFI_SIZEOF_ARG($fp)
222
- beqz t5, noretval
223
-
224
- # Shift the return type flag over
225
- SRL t6, 8*FFI_FLAG_BITS
226
-
227
- beq t6, FFI_TYPE_SINT32, retint
228
- bne t6, FFI_TYPE_INT, retfloat
229
- retint:
230
- jal t9
231
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
232
- REG_S v0, 0(t4)
233
- b epilogue
234
-
235
- retfloat:
236
- #ifndef __mips_soft_float
237
- bne t6, FFI_TYPE_FLOAT, retdouble
238
- jal t9
239
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
240
- s.s $f0, 0(t4)
241
- b epilogue
242
-
243
- retdouble:
244
- bne t6, FFI_TYPE_DOUBLE, retstruct_d
245
- jal t9
246
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
247
- s.d $f0, 0(t4)
248
- b epilogue
249
-
250
- retstruct_d:
251
- bne t6, FFI_TYPE_STRUCT_D, retstruct_f
252
- jal t9
253
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
254
- s.d $f0, 0(t4)
255
- b epilogue
256
-
257
- retstruct_f:
258
- bne t6, FFI_TYPE_STRUCT_F, retstruct_d_d
259
- jal t9
260
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
261
- s.s $f0, 0(t4)
262
- b epilogue
263
-
264
- retstruct_d_d:
265
- bne t6, FFI_TYPE_STRUCT_DD, retstruct_f_f
266
- jal t9
267
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
268
- s.d $f0, 0(t4)
269
- s.d $f2, 8(t4)
270
- b epilogue
271
-
272
- retstruct_f_f:
273
- bne t6, FFI_TYPE_STRUCT_FF, retstruct_d_f
274
- jal t9
275
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
276
- s.s $f0, 0(t4)
277
- s.s $f2, 4(t4)
278
- b epilogue
279
-
280
- retstruct_d_f:
281
- bne t6, FFI_TYPE_STRUCT_DF, retstruct_f_d
282
- jal t9
283
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
284
- s.d $f0, 0(t4)
285
- s.s $f2, 8(t4)
286
- b epilogue
287
-
288
- retstruct_f_d:
289
- bne t6, FFI_TYPE_STRUCT_FD, retstruct_d_soft
290
- jal t9
291
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
292
- s.s $f0, 0(t4)
293
- s.d $f2, 8(t4)
294
- b epilogue
295
- #endif
296
-
297
- retstruct_d_soft:
298
- bne t6, FFI_TYPE_STRUCT_D_SOFT, retstruct_f_soft
299
- jal t9
300
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
301
- sd v0, 0(t4)
302
- b epilogue
303
-
304
- retstruct_f_soft:
305
- bne t6, FFI_TYPE_STRUCT_F_SOFT, retstruct_d_d_soft
306
- jal t9
307
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
308
- sw v0, 0(t4)
309
- b epilogue
310
-
311
- retstruct_d_d_soft:
312
- bne t6, FFI_TYPE_STRUCT_DD_SOFT, retstruct_f_f_soft
313
- jal t9
314
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
315
- sd v0, 0(t4)
316
- sd v1, 8(t4)
317
- b epilogue
318
-
319
- retstruct_f_f_soft:
320
- bne t6, FFI_TYPE_STRUCT_FF_SOFT, retstruct_d_f_soft
321
- jal t9
322
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
323
- sw v0, 0(t4)
324
- sw v1, 4(t4)
325
- b epilogue
326
-
327
- retstruct_d_f_soft:
328
- bne t6, FFI_TYPE_STRUCT_DF_SOFT, retstruct_f_d_soft
329
- jal t9
330
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
331
- sd v0, 0(t4)
332
- sw v1, 8(t4)
333
- b epilogue
334
-
335
- retstruct_f_d_soft:
336
- bne t6, FFI_TYPE_STRUCT_FD_SOFT, retstruct_small
337
- jal t9
338
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
339
- sw v0, 0(t4)
340
- sd v1, 8(t4)
341
- b epilogue
342
-
343
- retstruct_small:
344
- bne t6, FFI_TYPE_STRUCT_SMALL, retstruct_small2
345
- jal t9
346
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
347
- REG_S v0, 0(t4)
348
- b epilogue
349
-
350
- retstruct_small2:
351
- bne t6, FFI_TYPE_STRUCT_SMALL2, retstruct
352
- jal t9
353
- REG_L t4, 4*FFI_SIZEOF_ARG($fp)
354
- REG_S v0, 0(t4)
355
- REG_S v1, 8(t4)
356
- b epilogue
357
-
358
- retstruct:
359
- noretval:
360
- jal t9
361
-
362
- # Epilogue
363
- epilogue:
364
- move $sp, $fp
365
- REG_L $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Restore frame pointer
366
- REG_L ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Restore return address
367
- ADDU $sp, SIZEOF_FRAME # Fix stack pointer
368
- j ra
369
-
370
- .LFE0:
371
- .end ffi_call_N32
372
-
373
- /* ffi_closure_N32. Expects address of the passed-in ffi_closure in t0
374
- ($12). Stores any arguments passed in registers onto the stack,
375
- then calls ffi_closure_mips_inner_N32, which then decodes
376
- them.
377
-
378
- Stack layout:
379
-
380
- 20 - Start of parameters, original sp
381
- 19 - Called function a7 save
382
- 18 - Called function a6 save
383
- 17 - Called function a5 save
384
- 16 - Called function a4 save
385
- 15 - Called function a3 save
386
- 14 - Called function a2 save
387
- 13 - Called function a1 save
388
- 12 - Called function a0 save
389
- 11 - Called function f19
390
- 10 - Called function f18
391
- 9 - Called function f17
392
- 8 - Called function f16
393
- 7 - Called function f15
394
- 6 - Called function f14
395
- 5 - Called function f13
396
- 4 - Called function f12
397
- 3 - return value high (v1 or $f2)
398
- 2 - return value low (v0 or $f0)
399
- 1 - ra save
400
- 0 - gp save our sp points here
401
- */
402
-
403
- #define SIZEOF_FRAME2 (20 * FFI_SIZEOF_ARG)
404
-
405
- #define A7_OFF2 (19 * FFI_SIZEOF_ARG)
406
- #define A6_OFF2 (18 * FFI_SIZEOF_ARG)
407
- #define A5_OFF2 (17 * FFI_SIZEOF_ARG)
408
- #define A4_OFF2 (16 * FFI_SIZEOF_ARG)
409
- #define A3_OFF2 (15 * FFI_SIZEOF_ARG)
410
- #define A2_OFF2 (14 * FFI_SIZEOF_ARG)
411
- #define A1_OFF2 (13 * FFI_SIZEOF_ARG)
412
- #define A0_OFF2 (12 * FFI_SIZEOF_ARG)
413
-
414
- #define F19_OFF2 (11 * FFI_SIZEOF_ARG)
415
- #define F18_OFF2 (10 * FFI_SIZEOF_ARG)
416
- #define F17_OFF2 (9 * FFI_SIZEOF_ARG)
417
- #define F16_OFF2 (8 * FFI_SIZEOF_ARG)
418
- #define F15_OFF2 (7 * FFI_SIZEOF_ARG)
419
- #define F14_OFF2 (6 * FFI_SIZEOF_ARG)
420
- #define F13_OFF2 (5 * FFI_SIZEOF_ARG)
421
- #define F12_OFF2 (4 * FFI_SIZEOF_ARG)
422
-
423
- #define V1_OFF2 (3 * FFI_SIZEOF_ARG)
424
- #define V0_OFF2 (2 * FFI_SIZEOF_ARG)
425
-
426
- #define RA_OFF2 (1 * FFI_SIZEOF_ARG)
427
- #define GP_OFF2 (0 * FFI_SIZEOF_ARG)
428
-
429
- .align 2
430
- .globl ffi_go_closure_N32
431
- .ent ffi_go_closure_N32
432
- ffi_go_closure_N32:
433
- .LFB1:
434
- .frame $sp, SIZEOF_FRAME2, ra
435
- .mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2)
436
- .fmask 0x00000000,0
437
- SUBU $sp, SIZEOF_FRAME2
438
- .LCFI10:
439
- .cpsetup t9, GP_OFF2, ffi_go_closure_N32
440
- REG_S ra, RA_OFF2($sp) # Save return address
441
- .LCFI11:
442
-
443
- REG_S a0, A0_OFF2($sp)
444
- REG_S a1, A1_OFF2($sp)
445
- REG_S a2, A2_OFF2($sp)
446
- REG_S a3, A3_OFF2($sp)
447
- REG_S a4, A4_OFF2($sp)
448
- REG_S a5, A5_OFF2($sp)
449
-
450
- # Call ffi_closure_mips_inner_N32 to do the real work.
451
- LA t9, ffi_closure_mips_inner_N32
452
- REG_L a0, 8($15) # cif
453
- REG_L a1, 16($15) # fun
454
- move a2, t7 # userdata=closure
455
- ADDU a3, $sp, V0_OFF2 # rvalue
456
- ADDU a4, $sp, A0_OFF2 # ar
457
- ADDU a5, $sp, F12_OFF2 # fpr
458
-
459
- b $do_closure
460
-
461
- .LFE1:
462
- .end ffi_go_closure_N32
463
-
464
- .align 2
465
- .globl ffi_closure_N32
466
- .ent ffi_closure_N32
467
- ffi_closure_N32:
468
- .LFB2:
469
- .frame $sp, SIZEOF_FRAME2, ra
470
- .mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2)
471
- .fmask 0x00000000,0
472
- SUBU $sp, SIZEOF_FRAME2
473
- .LCFI20:
474
- .cpsetup t9, GP_OFF2, ffi_closure_N32
475
- REG_S ra, RA_OFF2($sp) # Save return address
476
- .LCFI21:
477
- REG_S a0, A0_OFF2($sp)
478
- REG_S a1, A1_OFF2($sp)
479
- REG_S a2, A2_OFF2($sp)
480
- REG_S a3, A3_OFF2($sp)
481
- REG_S a4, A4_OFF2($sp)
482
- REG_S a5, A5_OFF2($sp)
483
-
484
- # Call ffi_closure_mips_inner_N32 to do the real work.
485
- LA t9, ffi_closure_mips_inner_N32
486
- REG_L a0, 56($12) # cif
487
- REG_L a1, 64($12) # fun
488
- REG_L a2, 72($12) # user_data
489
- ADDU a3, $sp, V0_OFF2
490
- ADDU a4, $sp, A0_OFF2
491
- ADDU a5, $sp, F12_OFF2
492
-
493
- $do_closure:
494
- # Store all possible argument registers. If there are more than
495
- # fit in registers, then they were stored on the stack.
496
- REG_S a6, A6_OFF2($sp)
497
- REG_S a7, A7_OFF2($sp)
498
-
499
- #ifndef __mips_soft_float
500
- # Store all possible float/double registers.
501
- s.d $f12, F12_OFF2($sp)
502
- s.d $f13, F13_OFF2($sp)
503
- s.d $f14, F14_OFF2($sp)
504
- s.d $f15, F15_OFF2($sp)
505
- s.d $f16, F16_OFF2($sp)
506
- s.d $f17, F17_OFF2($sp)
507
- s.d $f18, F18_OFF2($sp)
508
- s.d $f19, F19_OFF2($sp)
509
- #endif
510
-
511
- jalr t9
512
-
513
- # Return flags are in v0
514
- bne v0, FFI_TYPE_SINT32, cls_retint
515
- lw v0, V0_OFF2($sp)
516
- b cls_epilogue
517
-
518
- cls_retint:
519
- bne v0, FFI_TYPE_INT, cls_retfloat
520
- REG_L v0, V0_OFF2($sp)
521
- b cls_epilogue
522
-
523
- cls_retfloat:
524
- #ifndef __mips_soft_float
525
- bne v0, FFI_TYPE_FLOAT, cls_retdouble
526
- l.s $f0, V0_OFF2($sp)
527
- b cls_epilogue
528
-
529
- cls_retdouble:
530
- bne v0, FFI_TYPE_DOUBLE, cls_retstruct_d
531
- l.d $f0, V0_OFF2($sp)
532
- b cls_epilogue
533
-
534
- cls_retstruct_d:
535
- bne v0, FFI_TYPE_STRUCT_D, cls_retstruct_f
536
- l.d $f0, V0_OFF2($sp)
537
- b cls_epilogue
538
-
539
- cls_retstruct_f:
540
- bne v0, FFI_TYPE_STRUCT_F, cls_retstruct_d_d
541
- l.s $f0, V0_OFF2($sp)
542
- b cls_epilogue
543
-
544
- cls_retstruct_d_d:
545
- bne v0, FFI_TYPE_STRUCT_DD, cls_retstruct_f_f
546
- l.d $f0, V0_OFF2($sp)
547
- l.d $f2, V1_OFF2($sp)
548
- b cls_epilogue
549
-
550
- cls_retstruct_f_f:
551
- bne v0, FFI_TYPE_STRUCT_FF, cls_retstruct_d_f
552
- l.s $f0, V0_OFF2($sp)
553
- l.s $f2, V1_OFF2($sp)
554
- b cls_epilogue
555
-
556
- cls_retstruct_d_f:
557
- bne v0, FFI_TYPE_STRUCT_DF, cls_retstruct_f_d
558
- l.d $f0, V0_OFF2($sp)
559
- l.s $f2, V1_OFF2($sp)
560
- b cls_epilogue
561
-
562
- cls_retstruct_f_d:
563
- bne v0, FFI_TYPE_STRUCT_FD, cls_retstruct_small2
564
- l.s $f0, V0_OFF2($sp)
565
- l.d $f2, V1_OFF2($sp)
566
- b cls_epilogue
567
- #endif
568
-
569
- cls_retstruct_small2:
570
- REG_L v0, V0_OFF2($sp)
571
- REG_L v1, V1_OFF2($sp)
572
-
573
- # Epilogue
574
- cls_epilogue:
575
- REG_L ra, RA_OFF2($sp) # Restore return address
576
- .cpreturn
577
- ADDU $sp, SIZEOF_FRAME2
578
- j ra
579
- .LFE2:
580
- .end ffi_closure_N32
581
-
582
- #ifdef __GNUC__
583
- .section .eh_frame,"aw",@progbits
584
- .Lframe1:
585
- .4byte .LECIE1-.LSCIE1 # length
586
- .LSCIE1:
587
- .4byte 0x0 # CIE
588
- .byte 0x1 # Version 1
589
- .ascii "\000" # Augmentation
590
- .uleb128 0x1 # Code alignment 1
591
- .sleb128 -4 # Data alignment -4
592
- .byte 0x1f # Return Address $31
593
- .byte 0xc # DW_CFA_def_cfa
594
- .uleb128 0x1d # in $sp
595
- .uleb128 0x0 # offset 0
596
- .align EH_FRAME_ALIGN
597
- .LECIE1:
598
-
599
- .LSFDE0:
600
- .4byte .LEFDE0-.LASFDE0 # length.
601
- .LASFDE0:
602
- .4byte .LASFDE0-.Lframe1 # CIE_pointer.
603
- FDE_ADDR_BYTES .LFB0 # initial_location.
604
- FDE_ADDR_BYTES .LFE0-.LFB0 # address_range.
605
- .byte 0x4 # DW_CFA_advance_loc4
606
- .4byte .LCFI00-.LFB0 # to .LCFI00
607
- .byte 0xe # DW_CFA_def_cfa_offset
608
- .uleb128 SIZEOF_FRAME # adjust stack.by SIZEOF_FRAME
609
- .byte 0x4 # DW_CFA_advance_loc4
610
- .4byte .LCFI01-.LCFI00 # to .LCFI01
611
- .byte 0x9e # DW_CFA_offset of $fp
612
- .uleb128 2*FFI_SIZEOF_ARG/4 #
613
- .byte 0x9f # DW_CFA_offset of ra
614
- .uleb128 1*FFI_SIZEOF_ARG/4 #
615
- .byte 0x4 # DW_CFA_advance_loc4
616
- .4byte .LCFI02-.LCFI01 # to .LCFI02
617
- .byte 0xd # DW_CFA_def_cfa_register
618
- .uleb128 0x1e # in $fp
619
- .align EH_FRAME_ALIGN
620
- .LEFDE0:
621
-
622
- .LSFDE1:
623
- .4byte .LEFDE1-.LASFDE1 # length
624
- .LASFDE1:
625
- .4byte .LASFDE1-.Lframe1 # CIE_pointer.
626
- FDE_ADDR_BYTES .LFB1 # initial_location.
627
- FDE_ADDR_BYTES .LFE1-.LFB1 # address_range.
628
- .byte 0x4 # DW_CFA_advance_loc4
629
- .4byte .LCFI10-.LFB1 # to .LCFI10
630
- .byte 0xe # DW_CFA_def_cfa_offset
631
- .uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME
632
- .byte 0x4 # DW_CFA_advance_loc4
633
- .4byte .LCFI11-.LCFI10 # to .LCFI11
634
- .byte 0x9c # DW_CFA_offset of $gp ($28)
635
- .uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4
636
- .byte 0x9f # DW_CFA_offset of ra ($31)
637
- .uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4
638
- .align EH_FRAME_ALIGN
639
- .LEFDE1:
640
-
641
- .LSFDE2:
642
- .4byte .LEFDE2-.LASFDE2 # length
643
- .LASFDE2:
644
- .4byte .LASFDE2-.Lframe1 # CIE_pointer.
645
- FDE_ADDR_BYTES .LFB2 # initial_location.
646
- FDE_ADDR_BYTES .LFE2-.LFB2 # address_range.
647
- .byte 0x4 # DW_CFA_advance_loc4
648
- .4byte .LCFI20-.LFB2 # to .LCFI20
649
- .byte 0xe # DW_CFA_def_cfa_offset
650
- .uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME
651
- .byte 0x4 # DW_CFA_advance_loc4
652
- .4byte .LCFI21-.LCFI20 # to .LCFI21
653
- .byte 0x9c # DW_CFA_offset of $gp ($28)
654
- .uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4
655
- .byte 0x9f # DW_CFA_offset of ra ($31)
656
- .uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4
657
- .align EH_FRAME_ALIGN
658
- .LEFDE2:
659
- #endif /* __GNUC__ */
660
-
661
- #endif