ffi 1.9.18 → 1.9.23

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 (468) hide show
  1. checksums.yaml +5 -5
  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 +3 -4
  9. data/Rakefile +41 -5
  10. data/appveyor.yml +22 -0
  11. data/ext/ffi_c/AbstractMemory.c +6 -1
  12. data/ext/ffi_c/Call.c +1 -22
  13. data/ext/ffi_c/Call.h +0 -9
  14. data/ext/ffi_c/Closure.c +54 -0
  15. data/ext/ffi_c/{ClosurePool.h → Closure.h} +13 -23
  16. data/ext/ffi_c/Function.c +16 -25
  17. data/ext/ffi_c/Function.h +1 -2
  18. data/ext/ffi_c/FunctionInfo.c +0 -4
  19. data/ext/ffi_c/MethodHandle.c +33 -268
  20. data/ext/ffi_c/Platform.c +10 -2
  21. data/ext/ffi_c/extconf.rb +10 -5
  22. data/ext/ffi_c/ffi.c +2 -2
  23. data/ext/ffi_c/libffi/.appveyor.yml +48 -0
  24. data/ext/ffi_c/libffi/.gitignore +36 -0
  25. data/ext/ffi_c/libffi/.travis/install.sh +14 -0
  26. data/ext/ffi_c/libffi/.travis.yml +30 -0
  27. data/ext/ffi_c/libffi/ChangeLog.libffi +2 -2
  28. data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.libffi-3.1} +1402 -2
  29. data/ext/ffi_c/libffi/ChangeLog.v1 +1 -1
  30. data/ext/ffi_c/libffi/LICENSE +1 -1
  31. data/ext/ffi_c/libffi/Makefile.am +169 -158
  32. data/ext/ffi_c/libffi/Makefile.in +927 -938
  33. data/ext/ffi_c/libffi/README +164 -52
  34. data/ext/ffi_c/libffi/acinclude.m4 +387 -0
  35. data/ext/ffi_c/libffi/autogen.sh +2 -0
  36. data/ext/ffi_c/libffi/config.guess +336 -371
  37. data/ext/ffi_c/libffi/config.sub +246 -115
  38. data/ext/ffi_c/libffi/configure +6976 -2189
  39. data/ext/ffi_c/libffi/configure.ac +148 -256
  40. data/ext/ffi_c/libffi/configure.host +277 -4
  41. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  42. data/ext/ffi_c/libffi/doc/Makefile.in +811 -0
  43. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  44. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  45. data/ext/ffi_c/libffi/fficonfig.h.in +24 -13
  46. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +203 -0
  47. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  48. data/ext/ffi_c/libffi/include/Makefile.in +188 -71
  49. data/ext/ffi_c/libffi/include/ffi.h.in +112 -50
  50. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  51. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  52. data/ext/ffi_c/libffi/install-sh +190 -202
  53. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  54. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  55. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +1043 -0
  56. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  57. data/ext/ffi_c/libffi/libtool-version +1 -1
  58. data/ext/ffi_c/libffi/ltmain.sh +3553 -2033
  59. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  60. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  61. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  62. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  63. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  64. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  65. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  66. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  67. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  68. data/ext/ffi_c/libffi/man/Makefile.in +141 -49
  69. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  70. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  71. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  72. data/ext/ffi_c/libffi/missing +150 -311
  73. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  74. data/ext/ffi_c/libffi/src/aarch64/ffi.c +964 -0
  75. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  76. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  77. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  78. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  79. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  80. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  81. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  82. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  83. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  84. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  85. data/ext/ffi_c/libffi/src/arm/ffi.c +608 -517
  86. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  87. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  88. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  89. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  90. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  91. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  92. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  93. data/ext/ffi_c/libffi/src/closures.c +366 -45
  94. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  95. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  96. data/ext/ffi_c/libffi/src/debug.c +6 -1
  97. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  98. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  99. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  100. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  101. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  102. data/ext/ffi_c/libffi/src/ia64/unix.S +2 -0
  103. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  104. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  105. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  106. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  107. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  108. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  109. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  110. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  111. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  112. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  113. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  114. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  115. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  116. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  117. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  118. data/ext/ffi_c/libffi/src/mips/ffi.c +103 -28
  119. data/ext/ffi_c/libffi/src/mips/ffitarget.h +10 -3
  120. data/ext/ffi_c/libffi/src/mips/n32.S +128 -56
  121. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  122. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  123. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  124. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  125. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  126. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  127. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  128. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  129. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  130. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  131. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  132. data/ext/ffi_c/libffi/src/powerpc/aix.S +245 -7
  133. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +253 -4
  134. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  135. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  136. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  137. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  138. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +111 -30
  139. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  140. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  141. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  142. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +103 -44
  143. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  144. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  145. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  146. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  147. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  148. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  149. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  150. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  151. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  152. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  153. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  154. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  155. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  156. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  157. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  158. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  159. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  160. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  161. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  162. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  163. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  164. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  165. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  166. data/ext/ffi_c/libffi/src/types.c +43 -14
  167. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  168. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  169. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  170. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  171. data/ext/ffi_c/libffi/src/x86/ffi.c +591 -500
  172. data/ext/ffi_c/libffi/src/x86/ffi64.c +359 -116
  173. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  174. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  175. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  176. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  177. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  178. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  179. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  180. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  181. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  182. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  183. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  184. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  185. data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -73
  186. data/ext/ffi_c/libffi/testsuite/Makefile.in +219 -111
  187. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +121 -25
  188. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c +95 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  292. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  293. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  314. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  316. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  327. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  328. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  329. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  330. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  331. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  332. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  345. data/ext/ffi_c/libffi.bsd.mk +11 -5
  346. data/ext/ffi_c/libffi.darwin.mk +14 -4
  347. data/ext/ffi_c/libffi.gnu.mk +3 -2
  348. data/ext/ffi_c/libffi.mk +10 -5
  349. data/ext/ffi_c/libffi.vc.mk +1 -1
  350. data/ext/ffi_c/libffi.vc64.mk +1 -1
  351. data/ffi.gemspec +16 -3
  352. data/lib/ffi/enum.rb +124 -0
  353. data/lib/ffi/library.rb +66 -14
  354. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  355. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  356. data/lib/ffi/platform.rb +7 -2
  357. data/lib/ffi/pointer.rb +1 -0
  358. data/lib/ffi/struct.rb +0 -2
  359. data/lib/ffi/version.rb +1 -2
  360. data/samples/getlogin.rb +8 -0
  361. data/samples/getpid.rb +8 -0
  362. data/samples/gettimeofday.rb +18 -0
  363. data/samples/hello.rb +7 -0
  364. data/samples/inotify.rb +60 -0
  365. data/samples/pty.rb +76 -0
  366. data/samples/qsort.rb +21 -0
  367. data/samples/sample_helper.rb +6 -0
  368. metadata +164 -115
  369. data/ext/ffi_c/ClosurePool.c +0 -283
  370. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  371. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  372. data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
  373. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  374. data/ext/ffi_c/libffi/compile +0 -143
  375. data/ext/ffi_c/libffi/depcomp +0 -630
  376. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  377. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  378. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  379. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  380. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
  381. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
  382. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  383. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  384. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
  385. data/ext/ffi_c/libffi/mdate-sh +0 -201
  386. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  387. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  388. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  389. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  390. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  391. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  392. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  393. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  394. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  395. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  396. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
  397. data/gen/Rakefile +0 -30
  398. data/libtest/Benchmark.c +0 -52
  399. data/libtest/BoolTest.c +0 -34
  400. data/libtest/BufferTest.c +0 -31
  401. data/libtest/ClosureTest.c +0 -205
  402. data/libtest/EnumTest.c +0 -51
  403. data/libtest/FunctionTest.c +0 -70
  404. data/libtest/GNUmakefile +0 -149
  405. data/libtest/GlobalVariable.c +0 -62
  406. data/libtest/LastErrorTest.c +0 -21
  407. data/libtest/NumberTest.c +0 -132
  408. data/libtest/PointerTest.c +0 -63
  409. data/libtest/ReferenceTest.c +0 -23
  410. data/libtest/StringTest.c +0 -34
  411. data/libtest/StructTest.c +0 -243
  412. data/libtest/UnionTest.c +0 -43
  413. data/libtest/VariadicTest.c +0 -99
  414. data/spec/ffi/async_callback_spec.rb +0 -35
  415. data/spec/ffi/bool_spec.rb +0 -32
  416. data/spec/ffi/buffer_spec.rb +0 -279
  417. data/spec/ffi/callback_spec.rb +0 -773
  418. data/spec/ffi/custom_param_type.rb +0 -37
  419. data/spec/ffi/custom_type_spec.rb +0 -74
  420. data/spec/ffi/dup_spec.rb +0 -52
  421. data/spec/ffi/enum_spec.rb +0 -423
  422. data/spec/ffi/errno_spec.rb +0 -20
  423. data/spec/ffi/ffi_spec.rb +0 -28
  424. data/spec/ffi/fixtures/Benchmark.c +0 -52
  425. data/spec/ffi/fixtures/BoolTest.c +0 -34
  426. data/spec/ffi/fixtures/BufferTest.c +0 -31
  427. data/spec/ffi/fixtures/ClosureTest.c +0 -205
  428. data/spec/ffi/fixtures/EnumTest.c +0 -51
  429. data/spec/ffi/fixtures/FunctionTest.c +0 -142
  430. data/spec/ffi/fixtures/GNUmakefile +0 -149
  431. data/spec/ffi/fixtures/GlobalVariable.c +0 -62
  432. data/spec/ffi/fixtures/LastErrorTest.c +0 -21
  433. data/spec/ffi/fixtures/NumberTest.c +0 -132
  434. data/spec/ffi/fixtures/PipeHelper.h +0 -21
  435. data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
  436. data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
  437. data/spec/ffi/fixtures/PointerTest.c +0 -63
  438. data/spec/ffi/fixtures/ReferenceTest.c +0 -23
  439. data/spec/ffi/fixtures/StringTest.c +0 -34
  440. data/spec/ffi/fixtures/StructTest.c +0 -243
  441. data/spec/ffi/fixtures/UnionTest.c +0 -43
  442. data/spec/ffi/fixtures/VariadicTest.c +0 -99
  443. data/spec/ffi/fixtures/classes.rb +0 -438
  444. data/spec/ffi/function_spec.rb +0 -97
  445. data/spec/ffi/io_spec.rb +0 -16
  446. data/spec/ffi/library_spec.rb +0 -286
  447. data/spec/ffi/long_double.rb +0 -30
  448. data/spec/ffi/managed_struct_spec.rb +0 -68
  449. data/spec/ffi/memorypointer_spec.rb +0 -78
  450. data/spec/ffi/number_spec.rb +0 -247
  451. data/spec/ffi/platform_spec.rb +0 -114
  452. data/spec/ffi/pointer_spec.rb +0 -285
  453. data/spec/ffi/rbx/attach_function_spec.rb +0 -34
  454. data/spec/ffi/rbx/memory_pointer_spec.rb +0 -194
  455. data/spec/ffi/rbx/spec_helper.rb +0 -6
  456. data/spec/ffi/rbx/struct_spec.rb +0 -18
  457. data/spec/ffi/spec_helper.rb +0 -93
  458. data/spec/ffi/string_spec.rb +0 -118
  459. data/spec/ffi/strptr_spec.rb +0 -50
  460. data/spec/ffi/struct_by_ref_spec.rb +0 -43
  461. data/spec/ffi/struct_callback_spec.rb +0 -69
  462. data/spec/ffi/struct_initialize_spec.rb +0 -35
  463. data/spec/ffi/struct_packed_spec.rb +0 -50
  464. data/spec/ffi/struct_spec.rb +0 -886
  465. data/spec/ffi/typedef_spec.rb +0 -91
  466. data/spec/ffi/union_spec.rb +0 -67
  467. data/spec/ffi/variadic_spec.rb +0 -132
  468. data/spec/spec.opts +0 -4
@@ -106,6 +106,10 @@ ffi_call_AIX:
106
106
  .llong .ffi_call_AIX, TOC[tc0], 0
107
107
  .csect .text[PR]
108
108
  .ffi_call_AIX:
109
+ .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0
110
+ .bf __LINE__
111
+ .line 1
112
+ LFB..0:
109
113
  /* Save registers we use. */
110
114
  mflr r0
111
115
 
@@ -115,8 +119,10 @@ ffi_call_AIX:
115
119
  std r31, -8(r1)
116
120
 
117
121
  std r0, 16(r1)
122
+ LCFI..0:
118
123
  mr r28, r1 /* our AP. */
119
124
  stdux r1, r1, r4
125
+ LCFI..1:
120
126
 
121
127
  /* Save arguments over call... */
122
128
  mr r31, r5 /* flags, */
@@ -137,7 +143,7 @@ ffi_call_AIX:
137
143
  mtcrf 0x40, r31
138
144
  mtctr r0
139
145
  /* Load all those argument registers. */
140
- // We have set up a nice stack frame, just load it into registers.
146
+ /* We have set up a nice stack frame, just load it into registers. */
141
147
  ld r3, 40+(1*8)(r1)
142
148
  ld r4, 40+(2*8)(r1)
143
149
  ld r5, 40+(3*8)(r1)
@@ -150,7 +156,7 @@ ffi_call_AIX:
150
156
 
151
157
  L1:
152
158
  /* Load all the FP registers. */
153
- bf 6,L2 // 2f + 0x18
159
+ bf 6,L2 /* 2f + 0x18 */
154
160
  lfd f1,-32-(13*8)(r28)
155
161
  lfd f2,-32-(12*8)(r28)
156
162
  lfd f3,-32-(11*8)(r28)
@@ -202,12 +208,16 @@ L(fp_return_value):
202
208
  L(float_return_value):
203
209
  stfs f1, 0(r30)
204
210
  b L(done_return_value)
205
-
211
+ LFE..0:
206
212
  #else /* ! __64BIT__ */
207
213
 
208
214
  .long .ffi_call_AIX, TOC[tc0], 0
209
215
  .csect .text[PR]
210
216
  .ffi_call_AIX:
217
+ .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0
218
+ .bf __LINE__
219
+ .line 1
220
+ LFB..0:
211
221
  /* Save registers we use. */
212
222
  mflr r0
213
223
 
@@ -217,8 +227,10 @@ L(float_return_value):
217
227
  stw r31, -4(r1)
218
228
 
219
229
  stw r0, 8(r1)
230
+ LCFI..0:
220
231
  mr r28, r1 /* out AP. */
221
232
  stwux r1, r1, r4
233
+ LCFI..1:
222
234
 
223
235
  /* Save arguments over call... */
224
236
  mr r31, r5 /* flags, */
@@ -239,7 +251,7 @@ L(float_return_value):
239
251
  mtcrf 0x40, r31
240
252
  mtctr r0
241
253
  /* Load all those argument registers. */
242
- // We have set up a nice stack frame, just load it into registers.
254
+ /* We have set up a nice stack frame, just load it into registers. */
243
255
  lwz r3, 20+(1*4)(r1)
244
256
  lwz r4, 20+(2*4)(r1)
245
257
  lwz r5, 20+(3*4)(r1)
@@ -252,7 +264,7 @@ L(float_return_value):
252
264
 
253
265
  L1:
254
266
  /* Load all the FP registers. */
255
- bf 6,L2 // 2f + 0x18
267
+ bf 6,L2 /* 2f + 0x18 */
256
268
  lfd f1,-16-(13*8)(r28)
257
269
  lfd f2,-16-(12*8)(r28)
258
270
  lfd f3,-16-(11*8)(r28)
@@ -304,10 +316,143 @@ L(fp_return_value):
304
316
  L(float_return_value):
305
317
  stfs f1, 0(r30)
306
318
  b L(done_return_value)
319
+ LFE..0:
320
+ #endif
321
+ .ef __LINE__
322
+ .long 0
323
+ .byte 0,0,0,1,128,4,0,0
324
+ /* END(ffi_call_AIX) */
325
+
326
+ /* void ffi_call_go_AIX(extended_cif *ecif, unsigned long bytes,
327
+ * unsigned int flags, unsigned int *rvalue,
328
+ * void (*fn)(),
329
+ * void (*prep_args)(extended_cif*, unsigned *const),
330
+ * void *closure);
331
+ * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args, r9=closure
332
+ */
333
+
334
+ .csect .text[PR]
335
+ .align 2
336
+ .globl ffi_call_go_AIX
337
+ .globl .ffi_call_go_AIX
338
+ .csect ffi_call_go_AIX[DS]
339
+ ffi_call_go_AIX:
340
+ #ifdef __64BIT__
341
+ .llong .ffi_call_go_AIX, TOC[tc0], 0
342
+ .csect .text[PR]
343
+ .ffi_call_go_AIX:
344
+ .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1
345
+ .bf __LINE__
346
+ .line 1
347
+ LFB..1:
348
+ /* Save registers we use. */
349
+ mflr r0
350
+
351
+ std r28,-32(r1)
352
+ std r29,-24(r1)
353
+ std r30,-16(r1)
354
+ std r31, -8(r1)
355
+
356
+ std r9, 8(r1) /* closure, saved in cr field. */
357
+ std r0, 16(r1)
358
+ LCFI..2:
359
+ mr r28, r1 /* our AP. */
360
+ stdux r1, r1, r4
361
+ LCFI..3:
362
+
363
+ /* Save arguments over call... */
364
+ mr r31, r5 /* flags, */
365
+ mr r30, r6 /* rvalue, */
366
+ mr r29, r7 /* function address, */
367
+ std r2, 40(r1)
368
+
369
+ /* Call ffi_prep_args. */
370
+ mr r4, r1
371
+ bl .ffi_prep_args
372
+ nop
373
+
374
+ /* Now do the call. */
375
+ ld r0, 0(r29)
376
+ ld r2, 8(r29)
377
+ ld r11, 8(r28) /* closure */
378
+ /* Set up cr1 with bits 4-7 of the flags. */
379
+ mtcrf 0x40, r31
380
+ mtctr r0
381
+ /* Load all those argument registers. */
382
+ /* We have set up a nice stack frame, just load it into registers. */
383
+ ld r3, 40+(1*8)(r1)
384
+ ld r4, 40+(2*8)(r1)
385
+ ld r5, 40+(3*8)(r1)
386
+ ld r6, 40+(4*8)(r1)
387
+ nop
388
+ ld r7, 40+(5*8)(r1)
389
+ ld r8, 40+(6*8)(r1)
390
+ ld r9, 40+(7*8)(r1)
391
+ ld r10,40+(8*8)(r1)
392
+
393
+ b L1
394
+ LFE..1:
395
+ #else /* ! __64BIT__ */
396
+
397
+ .long .ffi_call_go_AIX, TOC[tc0], 0
398
+ .csect .text[PR]
399
+ .ffi_call_go_AIX:
400
+ .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1
401
+ .bf __LINE__
402
+ .line 1
403
+ /* Save registers we use. */
404
+ LFB..1:
405
+ mflr r0
406
+
407
+ stw r28,-16(r1)
408
+ stw r29,-12(r1)
409
+ stw r30, -8(r1)
410
+ stw r31, -4(r1)
411
+
412
+ stw r9, 4(r1) /* closure, saved in cr field. */
413
+ stw r0, 8(r1)
414
+ LCFI..2:
415
+ mr r28, r1 /* out AP. */
416
+ stwux r1, r1, r4
417
+ LCFI..3:
418
+
419
+ /* Save arguments over call... */
420
+ mr r31, r5 /* flags, */
421
+ mr r30, r6 /* rvalue, */
422
+ mr r29, r7 /* function address, */
423
+ stw r2, 20(r1)
424
+
425
+ /* Call ffi_prep_args. */
426
+ mr r4, r1
427
+ bl .ffi_prep_args
428
+ nop
429
+
430
+ /* Now do the call. */
431
+ lwz r0, 0(r29)
432
+ lwz r2, 4(r29)
433
+ lwz r11, 4(r28) /* closure */
434
+ /* Set up cr1 with bits 4-7 of the flags. */
435
+ mtcrf 0x40, r31
436
+ mtctr r0
437
+ /* Load all those argument registers. */
438
+ /* We have set up a nice stack frame, just load it into registers. */
439
+ lwz r3, 20+(1*4)(r1)
440
+ lwz r4, 20+(2*4)(r1)
441
+ lwz r5, 20+(3*4)(r1)
442
+ lwz r6, 20+(4*4)(r1)
443
+ nop
444
+ lwz r7, 20+(5*4)(r1)
445
+ lwz r8, 20+(6*4)(r1)
446
+ lwz r9, 20+(7*4)(r1)
447
+ lwz r10,20+(8*4)(r1)
448
+
449
+ b L1
450
+ LFE..1:
307
451
  #endif
452
+ .ef __LINE__
308
453
  .long 0
309
454
  .byte 0,0,0,1,128,4,0,0
310
- //END(ffi_call_AIX)
455
+ /* END(ffi_call_go_AIX) */
311
456
 
312
457
  .csect .text[PR]
313
458
  .align 2
@@ -325,4 +470,97 @@ ffi_call_DARWIN:
325
470
  blr
326
471
  .long 0
327
472
  .byte 0,0,0,0,0,0,0,0
328
- //END(ffi_call_DARWIN)
473
+ /* END(ffi_call_DARWIN) */
474
+
475
+ /* EH frame stuff. */
476
+
477
+ #define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */
478
+ #ifdef __64BIT__
479
+ #define PTRSIZE 8
480
+ #define LOG2_PTRSIZE 3
481
+ #define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */
482
+ #define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */
483
+ #else
484
+ #define PTRSIZE 4
485
+ #define LOG2_PTRSIZE 2
486
+ #define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */
487
+ #define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */
488
+ #endif
489
+ .csect _unwind.ro_[RO],4
490
+ .align LOG2_PTRSIZE
491
+ .globl _GLOBAL__F_libffi_src_powerpc_aix
492
+ _GLOBAL__F_libffi_src_powerpc_aix:
493
+ Lframe..1:
494
+ .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */
495
+ LSCIE..1:
496
+ .vbyte 4,0 /* CIE Identifier Tag */
497
+ .byte 0x3 /* CIE Version */
498
+ .byte "zR" /* CIE Augmentation */
499
+ .byte 0
500
+ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
501
+ .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */
502
+ .byte 0x41 /* CIE RA Column */
503
+ .byte 0x1 /* uleb128 0x1; Augmentation size */
504
+ .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */
505
+ .byte 0xc /* DW_CFA_def_cfa */
506
+ .byte 0x1 /* uleb128 0x1; Register r1 */
507
+ .byte 0 /* uleb128 0x0; Offset 0 */
508
+ .align LOG2_PTRSIZE
509
+ LECIE..1:
510
+ LSFDE..1:
511
+ .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */
512
+ LASFDE..1:
513
+ .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */
514
+ .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */
515
+ .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */
516
+ .byte 0 /* uleb128 0x0; Augmentation size */
517
+ .byte 0x4 /* DW_CFA_advance_loc4 */
518
+ .vbyte 4,LCFI..0-LFB..0
519
+ .byte 0x11 /* DW_CFA_def_offset_extended_sf */
520
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
521
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
522
+ .byte 0x9f /* DW_CFA_offset Register r31 */
523
+ .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */
524
+ .byte 0x9e /* DW_CFA_offset Register r30 */
525
+ .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */
526
+ .byte 0x9d /* DW_CFA_offset Register r29 */
527
+ .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */
528
+ .byte 0x9c /* DW_CFA_offset Register r28 */
529
+ .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */
530
+ .byte 0x4 /* DW_CFA_advance_loc4 */
531
+ .vbyte 4,LCFI..1-LCFI..0
532
+ .byte 0xd /* DW_CFA_def_cfa_register */
533
+ .byte 0x1c /* uleb128 28; Register r28 */
534
+ .align LOG2_PTRSIZE
535
+ LEFDE..1:
536
+ LSFDE..2:
537
+ .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */
538
+ LASFDE..2:
539
+ .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */
540
+ .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */
541
+ .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */
542
+ .byte 0 /* uleb128 0x0; Augmentation size */
543
+ .byte 0x4 /* DW_CFA_advance_loc4 */
544
+ .vbyte 4,LCFI..2-LFB..1
545
+ .byte 0x11 /* DW_CFA_def_offset_extended_sf */
546
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
547
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
548
+ .byte 0x9f /* DW_CFA_offset Register r31 */
549
+ .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */
550
+ .byte 0x9e /* DW_CFA_offset Register r30 */
551
+ .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */
552
+ .byte 0x9d /* DW_CFA_offset Register r29 */
553
+ .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */
554
+ .byte 0x9c /* DW_CFA_offset Register r28 */
555
+ .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */
556
+ .byte 0x4 /* DW_CFA_advance_loc4 */
557
+ .vbyte 4,LCFI..3-LCFI..2
558
+ .byte 0xd /* DW_CFA_def_cfa_register */
559
+ .byte 0x1c /* uleb128 28; Register r28 */
560
+ .align LOG2_PTRSIZE
561
+ LEFDE..2:
562
+ .vbyte 4,0 /* End of FDEs */
563
+
564
+ .csect .text[PR]
565
+ .ref _GLOBAL__F_libffi_src_powerpc_aix /* Prevents garbage collection by AIX linker */
566
+
@@ -80,6 +80,7 @@
80
80
  .set f21,21
81
81
 
82
82
  .extern .ffi_closure_helper_DARWIN
83
+ .extern .ffi_go_closure_helper_DARWIN
83
84
 
84
85
  #define LIBFFI_ASM
85
86
  #define JUMPTARGET(name) name
@@ -101,6 +102,10 @@ ffi_closure_ASM:
101
102
  .llong .ffi_closure_ASM, TOC[tc0], 0
102
103
  .csect .text[PR]
103
104
  .ffi_closure_ASM:
105
+ .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0
106
+ .bf __LINE__
107
+ .line 1
108
+ LFB..0:
104
109
  /* we want to build up an area for the parameters passed */
105
110
  /* in registers (both floating point and integer) */
106
111
 
@@ -117,8 +122,7 @@ ffi_closure_ASM:
117
122
  std r9, 48+(6*8)(r1)
118
123
  std r10, 48+(7*8)(r1)
119
124
  std r0, 16(r1) /* save the return address */
120
-
121
-
125
+ LCFI..0:
122
126
  /* 48 Bytes (Linkage Area) */
123
127
  /* 64 Bytes (params) */
124
128
  /* 16 Bytes (result) */
@@ -128,6 +132,7 @@ ffi_closure_ASM:
128
132
 
129
133
  stdu r1, -240(r1) /* skip over caller save area
130
134
  keep stack aligned to 16 */
135
+ LCFI..1:
131
136
 
132
137
  /* next save fpr 1 to fpr 13 (aligned to 8) */
133
138
  stfd f1, 128+(0*8)(r1)
@@ -161,12 +166,15 @@ ffi_closure_ASM:
161
166
  bl .ffi_closure_helper_DARWIN
162
167
  nop
163
168
 
169
+ .Ldoneclosure:
170
+
164
171
  /* now r3 contains the return type */
165
172
  /* so use it to look up in a table */
166
173
  /* so we know how to deal with each type */
167
174
 
168
175
  /* look up the proper starting point in table */
169
176
  /* by using return type as offset */
177
+ lhz r3, 10(r3) /* load type from return type */
170
178
  ld r4, LC..60(2) /* get address of jump table */
171
179
  sldi r3, r3, 4 /* now multiply return type by 16 */
172
180
  ld r0, 240+16(r1) /* load return address */
@@ -269,12 +277,17 @@ L..finish:
269
277
  mtlr r0
270
278
  addi r1, r1, 240
271
279
  blr
280
+ LFE..0:
272
281
 
273
282
  #else /* ! __64BIT__ */
274
283
 
275
284
  .long .ffi_closure_ASM, TOC[tc0], 0
276
285
  .csect .text[PR]
277
286
  .ffi_closure_ASM:
287
+ .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0
288
+ .bf __LINE__
289
+ .line 1
290
+ LFB..0:
278
291
  /* we want to build up an area for the parameters passed */
279
292
  /* in registers (both floating point and integer) */
280
293
 
@@ -291,7 +304,7 @@ L..finish:
291
304
  stw r9, 24+(6*4)(r1)
292
305
  stw r10, 24+(7*4)(r1)
293
306
  stw r0, 8(r1)
294
-
307
+ LCFI..0:
295
308
  /* 24 Bytes (Linkage Area) */
296
309
  /* 32 Bytes (params) */
297
310
  /* 16 Bytes (result) */
@@ -300,6 +313,7 @@ L..finish:
300
313
 
301
314
  stwu r1, -176(r1) /* skip over caller save area
302
315
  keep stack aligned to 16 */
316
+ LCFI..1:
303
317
 
304
318
  /* next save fpr 1 to fpr 13 (aligned to 8) */
305
319
  stfd f1, 72+(0*8)(r1)
@@ -333,14 +347,17 @@ L..finish:
333
347
  bl .ffi_closure_helper_DARWIN
334
348
  nop
335
349
 
350
+ .Ldoneclosure:
351
+
336
352
  /* now r3 contains the return type */
337
353
  /* so use it to look up in a table */
338
354
  /* so we know how to deal with each type */
339
355
 
340
356
  /* look up the proper starting point in table */
341
357
  /* by using return type as offset */
358
+ lhz r3, 6(r3) /* load type from return type */
342
359
  lwz r4, LC..60(2) /* get address of jump table */
343
- slwi r3, r3, 4 /* now multiply return type by 4 */
360
+ slwi r3, r3, 4 /* now multiply return type by 16 */
344
361
  lwz r0, 176+8(r1) /* load return address */
345
362
  add r3, r3, r4 /* add contents of table to table address */
346
363
  mtctr r3
@@ -441,5 +458,237 @@ L..60:
441
458
  L..finish:
442
459
  addi r1, r1, 176
443
460
  blr
461
+ LFE..0:
444
462
  #endif
463
+ .ef __LINE__
445
464
  /* END(ffi_closure_ASM) */
465
+
466
+
467
+ .csect .text[PR]
468
+ .align 2
469
+ .globl ffi_go_closure_ASM
470
+ .globl .ffi_go_closure_ASM
471
+ .csect ffi_go_closure_ASM[DS]
472
+ ffi_go_closure_ASM:
473
+ #ifdef __64BIT__
474
+ .llong .ffi_go_closure_ASM, TOC[tc0], 0
475
+ .csect .text[PR]
476
+ .ffi_go_closure_ASM:
477
+ .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1
478
+ .bf __LINE__
479
+ .line 1
480
+ LFB..1:
481
+ /* we want to build up an area for the parameters passed */
482
+ /* in registers (both floating point and integer) */
483
+
484
+ /* we store gpr 3 to gpr 10 (aligned to 4)
485
+ in the parents outgoing area */
486
+ std r3, 48+(0*8)(r1)
487
+ std r4, 48+(1*8)(r1)
488
+ std r5, 48+(2*8)(r1)
489
+ std r6, 48+(3*8)(r1)
490
+ mflr r0
491
+
492
+ std r7, 48+(4*8)(r1)
493
+ std r8, 48+(5*8)(r1)
494
+ std r9, 48+(6*8)(r1)
495
+ std r10, 48+(7*8)(r1)
496
+ std r0, 16(r1) /* save the return address */
497
+ LCFI..2:
498
+ /* 48 Bytes (Linkage Area) */
499
+ /* 64 Bytes (params) */
500
+ /* 16 Bytes (result) */
501
+ /* 104 Bytes (13*8 from FPR) */
502
+ /* 8 Bytes (alignment) */
503
+ /* 240 Bytes */
504
+
505
+ stdu r1, -240(r1) /* skip over caller save area
506
+ keep stack aligned to 16 */
507
+ LCFI..3:
508
+
509
+ /* next save fpr 1 to fpr 13 (aligned to 8) */
510
+ stfd f1, 128+(0*8)(r1)
511
+ stfd f2, 128+(1*8)(r1)
512
+ stfd f3, 128+(2*8)(r1)
513
+ stfd f4, 128+(3*8)(r1)
514
+ stfd f5, 128+(4*8)(r1)
515
+ stfd f6, 128+(5*8)(r1)
516
+ stfd f7, 128+(6*8)(r1)
517
+ stfd f8, 128+(7*8)(r1)
518
+ stfd f9, 128+(8*8)(r1)
519
+ stfd f10, 128+(9*8)(r1)
520
+ stfd f11, 128+(10*8)(r1)
521
+ stfd f12, 128+(11*8)(r1)
522
+ stfd f13, 128+(12*8)(r1)
523
+
524
+ /* set up registers for the routine that actually does the work */
525
+ mr r3, r11 /* go closure */
526
+
527
+ /* now load up the pointer to the result storage */
528
+ addi r4, r1, 112
529
+
530
+ /* now load up the pointer to the saved gpr registers */
531
+ addi r5, r1, 288
532
+
533
+ /* now load up the pointer to the saved fpr registers */
534
+ addi r6, r1, 128
535
+
536
+ /* make the call */
537
+ bl .ffi_go_closure_helper_DARWIN
538
+ nop
539
+
540
+ b .Ldoneclosure
541
+ LFE..1:
542
+
543
+ #else /* ! __64BIT__ */
544
+
545
+ .long .ffi_go_closure_ASM, TOC[tc0], 0
546
+ .csect .text[PR]
547
+ .ffi_go_closure_ASM:
548
+ .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1
549
+ .bf __LINE__
550
+ .line 1
551
+ LFB..1:
552
+ /* we want to build up an area for the parameters passed */
553
+ /* in registers (both floating point and integer) */
554
+
555
+ /* we store gpr 3 to gpr 10 (aligned to 4)
556
+ in the parents outgoing area */
557
+ stw r3, 24+(0*4)(r1)
558
+ stw r4, 24+(1*4)(r1)
559
+ stw r5, 24+(2*4)(r1)
560
+ stw r6, 24+(3*4)(r1)
561
+ mflr r0
562
+
563
+ stw r7, 24+(4*4)(r1)
564
+ stw r8, 24+(5*4)(r1)
565
+ stw r9, 24+(6*4)(r1)
566
+ stw r10, 24+(7*4)(r1)
567
+ stw r0, 8(r1)
568
+ LCFI..2:
569
+ /* 24 Bytes (Linkage Area) */
570
+ /* 32 Bytes (params) */
571
+ /* 16 Bytes (result) */
572
+ /* 104 Bytes (13*8 from FPR) */
573
+ /* 176 Bytes */
574
+
575
+ stwu r1, -176(r1) /* skip over caller save area
576
+ keep stack aligned to 16 */
577
+ LCFI..3:
578
+
579
+ /* next save fpr 1 to fpr 13 (aligned to 8) */
580
+ stfd f1, 72+(0*8)(r1)
581
+ stfd f2, 72+(1*8)(r1)
582
+ stfd f3, 72+(2*8)(r1)
583
+ stfd f4, 72+(3*8)(r1)
584
+ stfd f5, 72+(4*8)(r1)
585
+ stfd f6, 72+(5*8)(r1)
586
+ stfd f7, 72+(6*8)(r1)
587
+ stfd f8, 72+(7*8)(r1)
588
+ stfd f9, 72+(8*8)(r1)
589
+ stfd f10, 72+(9*8)(r1)
590
+ stfd f11, 72+(10*8)(r1)
591
+ stfd f12, 72+(11*8)(r1)
592
+ stfd f13, 72+(12*8)(r1)
593
+
594
+ /* set up registers for the routine that actually does the work */
595
+ mr r3, 11 /* go closure */
596
+
597
+ /* now load up the pointer to the result storage */
598
+ addi r4, r1, 56
599
+
600
+ /* now load up the pointer to the saved gpr registers */
601
+ addi r5, r1, 200
602
+
603
+ /* now load up the pointer to the saved fpr registers */
604
+ addi r6, r1, 72
605
+
606
+ /* make the call */
607
+ bl .ffi_go_closure_helper_DARWIN
608
+ nop
609
+
610
+ b .Ldoneclosure
611
+ LFE..1:
612
+ #endif
613
+ .ef __LINE__
614
+ /* END(ffi_go_closure_ASM) */
615
+
616
+ /* EH frame stuff. */
617
+
618
+ #define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */
619
+ #ifdef __64BIT__
620
+ #define PTRSIZE 8
621
+ #define LOG2_PTRSIZE 3
622
+ #define CFA_OFFSET 0xf0,0x01 /* LEB128 240 */
623
+ #define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */
624
+ #define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */
625
+ #else
626
+ #define PTRSIZE 4
627
+ #define LOG2_PTRSIZE 2
628
+ #define CFA_OFFSET 0xb0,0x01 /* LEB128 176 */
629
+ #define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */
630
+ #define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */
631
+ #endif
632
+
633
+ .csect _unwind.ro_[RO],4
634
+ .align LOG2_PTRSIZE
635
+ .globl _GLOBAL__F_libffi_src_powerpc_aix_closure
636
+ _GLOBAL__F_libffi_src_powerpc_aix_closure:
637
+ Lframe..1:
638
+ .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */
639
+ LSCIE..1:
640
+ .vbyte 4,0 /* CIE Identifier Tag */
641
+ .byte 0x3 /* CIE Version */
642
+ .byte "zR" /* CIE Augmentation */
643
+ .byte 0
644
+ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
645
+ .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */
646
+ .byte LR_REGNO /* CIE RA Column */
647
+ .byte 0x1 /* uleb128 0x1; Augmentation size */
648
+ .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */
649
+ .byte 0xc /* DW_CFA_def_cfa */
650
+ .byte 0x1 /* uleb128 0x1; Register r1 */
651
+ .byte 0 /* uleb128 0x0; Offset 0 */
652
+ .align LOG2_PTRSIZE
653
+ LECIE..1:
654
+ LSFDE..1:
655
+ .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */
656
+ LASFDE..1:
657
+ .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */
658
+ .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */
659
+ .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */
660
+ .byte 0 /* uleb128 0x0; Augmentation size */
661
+ .byte 0x4 /* DW_CFA_advance_loc4 */
662
+ .vbyte 4,LCFI..1-LCFI..0
663
+ .byte 0xe /* DW_CFA_def_cfa_offset */
664
+ .byte CFA_OFFSET /* uleb128 176/240 */
665
+ .byte 0x4 /* DW_CFA_advance_loc4 */
666
+ .vbyte 4,LCFI..0-LFB..0
667
+ .byte 0x11 /* DW_CFA_offset_extended_sf */
668
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
669
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
670
+ .align LOG2_PTRSIZE
671
+ LEFDE..1:
672
+ LSFDE..2:
673
+ .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */
674
+ LASFDE..2:
675
+ .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */
676
+ .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */
677
+ .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */
678
+ .byte 0 /* uleb128 0x0; Augmentation size */
679
+ .byte 0x4 /* DW_CFA_advance_loc4 */
680
+ .vbyte 4,LCFI..3-LCFI..2
681
+ .byte 0xe /* DW_CFA_def_cfa_offset */
682
+ .byte CFA_OFFSET /* uleb128 176/240 */
683
+ .byte 0x4 /* DW_CFA_advance_loc4 */
684
+ .vbyte 4,LCFI..2-LFB..1
685
+ .byte 0x11 /* DW_CFA_offset_extended_sf */
686
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
687
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
688
+ .align LOG2_PTRSIZE
689
+ LEFDE..2:
690
+ .vbyte 4,0 /* End of FDEs */
691
+
692
+ .csect .text[PR]
693
+ .ref _GLOBAL__F_libffi_src_powerpc_aix_closure /* Prevents garbage collection by AIX linker */
694
+
@@ -93,7 +93,7 @@
93
93
  /* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
94
94
  past a 2^align boundary. */
95
95
  #ifdef PROF
96
- #define EALIGN(name, alignt, words) \
96
+ #define EFFI_ALIGN(name, alignt, words) \
97
97
  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
98
98
  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
99
99
  .align ALIGNARG(2); \
@@ -104,7 +104,7 @@
104
104
  EALIGN_W_##words; \
105
105
  0:
106
106
  #else /* PROF */
107
- #define EALIGN(name, alignt, words) \
107
+ #define EFFI_ALIGN(name, alignt, words) \
108
108
  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
109
109
  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
110
110
  .align ALIGNARG(alignt); \
@@ -318,11 +318,6 @@ _ffi_call_AIX:
318
318
 
319
319
  #define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
320
320
 
321
- .static_data
322
- .align LOG2_GPR_BYTES
323
- LLFB0$non_lazy_ptr:
324
- .g_long Lstartcode
325
-
326
321
  .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
327
322
  EH_frame1:
328
323
  .set L$set$0,LECIE1-LSCIE1
@@ -335,7 +330,7 @@ LSCIE1:
335
330
  .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
336
331
  .byte 0x41 ; CIE RA Column
337
332
  .byte 0x1 ; uleb128 0x1; Augmentation size
338
- .byte 0x10 ; FDE Encoding (indirect pcrel)
333
+ .byte 0x10 ; FDE Encoding (pcrel)
339
334
  .byte 0xc ; DW_CFA_def_cfa
340
335
  .byte 0x1 ; uleb128 0x1
341
336
  .byte 0x0 ; uleb128 0x0
@@ -349,7 +344,7 @@ LSFDE1:
349
344
  .long L$set$1 ; FDE Length
350
345
  LASFDE1:
351
346
  .long LASFDE1-EH_frame1 ; FDE CIE offset
352
- .g_long LLFB0$non_lazy_ptr-. ; FDE initial location
347
+ .g_long Lstartcode-. ; FDE initial location
353
348
  .set L$set$3,LFE1-Lstartcode
354
349
  .g_long L$set$3 ; FDE address range
355
350
  .byte 0x0 ; uleb128 0x0; Augmentation size