rbdc 0.9.0 → 1.0.0

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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/dyncall/BUGS +1 -1
  3. data/dyncall/CMakeLists.txt +19 -7
  4. data/dyncall/ChangeLog +61 -20
  5. data/dyncall/LICENSE +1 -1
  6. data/dyncall/Makefile.generic +2 -0
  7. data/dyncall/ToDo +97 -29
  8. data/dyncall/autovar/README.txt +1 -0
  9. data/dyncall/autovar/autovar_ABI.h +4 -2
  10. data/dyncall/autovar/autovar_ARCH.h +9 -5
  11. data/dyncall/autovar/autovar_CC.h +3 -1
  12. data/dyncall/autovar/autovar_OS.h +2 -2
  13. data/dyncall/autovar/autovar_OSFAMILY.h +1 -1
  14. data/dyncall/configure +94 -38
  15. data/dyncall/dyncall/dyncall.3 +8 -4
  16. data/dyncall/dyncall/dyncall.h +1 -1
  17. data/dyncall/dyncall/dyncall_alloc.h +1 -1
  18. data/dyncall/dyncall/dyncall_api.c +3 -1
  19. data/dyncall/dyncall/dyncall_call.S +13 -5
  20. data/dyncall/dyncall/dyncall_call_arm32_arm.S +1 -2
  21. data/dyncall/dyncall/dyncall_call_arm32_arm.h +1 -1
  22. data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.S +24 -26
  23. data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.h +1 -1
  24. data/dyncall/dyncall/dyncall_call_arm32_thumb.h +1 -1
  25. data/dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S +1 -1
  26. data/dyncall/dyncall/dyncall_call_arm32_thumb_gas.s +3 -7
  27. data/dyncall/dyncall/dyncall_call_arm64.S +2 -2
  28. data/dyncall/dyncall/dyncall_call_arm64.h +2 -2
  29. data/dyncall/dyncall/dyncall_call_mips.h +1 -1
  30. data/dyncall/dyncall/dyncall_call_mips_eabi.h +1 -1
  31. data/dyncall/dyncall/dyncall_call_mips_eabi_gas.s +16 -16
  32. data/dyncall/dyncall/dyncall_call_mips_gas.S +2 -2
  33. data/dyncall/dyncall/dyncall_call_mips_n32.h +5 -4
  34. data/dyncall/dyncall/dyncall_call_mips_n32_gas.s +4 -4
  35. data/dyncall/dyncall/dyncall_call_mips_n64.h +3 -3
  36. data/dyncall/dyncall/dyncall_call_mips_n64_gas.s +2 -2
  37. data/dyncall/dyncall/dyncall_call_mips_o32.h +4 -3
  38. data/dyncall/dyncall/dyncall_call_mips_o32_gas.s +1 -3
  39. data/dyncall/dyncall/dyncall_call_ppc32.S +1 -1
  40. data/dyncall/dyncall/dyncall_call_ppc32.h +1 -1
  41. data/dyncall/dyncall/dyncall_call_sparc.h +1 -1
  42. data/dyncall/dyncall/{dyncall_call_sparc.S → dyncall_call_sparc.s} +39 -44
  43. data/dyncall/dyncall/dyncall_call_sparc64.h +5 -5
  44. data/dyncall/dyncall/dyncall_call_sparc64.s +177 -0
  45. data/dyncall/dyncall/dyncall_call_x64.S +83 -86
  46. data/dyncall/dyncall/dyncall_call_x64.h +1 -1
  47. data/dyncall/dyncall/dyncall_call_x86.S +9 -9
  48. data/dyncall/dyncall/dyncall_call_x86.h +1 -1
  49. data/dyncall/dyncall/dyncall_call_x86_nasm.asm +5 -5
  50. data/dyncall/dyncall/dyncall_callf.c +18 -18
  51. data/dyncall/dyncall/dyncall_callf.h +1 -1
  52. data/dyncall/dyncall/dyncall_callvm.c +3 -3
  53. data/dyncall/dyncall/dyncall_callvm.h +1 -1
  54. data/dyncall/dyncall/dyncall_callvm_arm32_arm.c +25 -40
  55. data/dyncall/dyncall/dyncall_callvm_arm32_arm.h +1 -5
  56. data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c +25 -33
  57. data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.h +1 -5
  58. data/dyncall/dyncall/dyncall_callvm_arm32_thumb.c +24 -36
  59. data/dyncall/dyncall/dyncall_callvm_arm32_thumb.h +1 -5
  60. data/dyncall/dyncall/dyncall_callvm_arm64.c +23 -27
  61. data/dyncall/dyncall/dyncall_callvm_arm64.h +2 -6
  62. data/dyncall/dyncall/dyncall_callvm_arm64_apple.c +23 -30
  63. data/dyncall/dyncall/dyncall_callvm_base.c +1 -1
  64. data/dyncall/dyncall/dyncall_callvm_mips.c +1 -1
  65. data/dyncall/dyncall/dyncall_callvm_mips.h +1 -1
  66. data/dyncall/dyncall/dyncall_callvm_mips_eabi.c +30 -27
  67. data/dyncall/dyncall/dyncall_callvm_mips_eabi.h +1 -5
  68. data/dyncall/dyncall/dyncall_callvm_mips_n32.c +24 -30
  69. data/dyncall/dyncall/{dyncall_call_sparc_v9.h → dyncall_callvm_mips_n32.h} +18 -8
  70. data/dyncall/dyncall/dyncall_callvm_mips_n64.c +23 -30
  71. data/dyncall/dyncall/dyncall_callvm_mips_n64.h +4 -6
  72. data/dyncall/dyncall/dyncall_callvm_mips_o32.c +31 -29
  73. data/dyncall/dyncall/dyncall_callvm_mips_o32.h +1 -3
  74. data/dyncall/dyncall/dyncall_callvm_ppc32.c +22 -20
  75. data/dyncall/dyncall/dyncall_callvm_ppc32.h +1 -3
  76. data/dyncall/dyncall/dyncall_callvm_ppc64.c +54 -15
  77. data/dyncall/dyncall/dyncall_callvm_ppc64.h +0 -2
  78. data/dyncall/dyncall/dyncall_callvm_sparc.c +34 -26
  79. data/dyncall/dyncall/dyncall_callvm_sparc.h +1 -3
  80. data/dyncall/dyncall/dyncall_callvm_sparc64.c +94 -150
  81. data/dyncall/dyncall/dyncall_callvm_sparc64.h +11 -17
  82. data/dyncall/dyncall/dyncall_callvm_x64.c +37 -36
  83. data/dyncall/dyncall/dyncall_callvm_x64.h +1 -4
  84. data/dyncall/dyncall/dyncall_callvm_x86.c +22 -63
  85. data/dyncall/dyncall/dyncall_callvm_x86.h +1 -17
  86. data/dyncall/dyncall/dyncall_config.h +1 -1
  87. data/dyncall/dyncall/dyncall_macros.h +28 -19
  88. data/dyncall/dyncall/dyncall_signature.h +1 -1
  89. data/dyncall/dyncall/dyncall_types.h +17 -18
  90. data/dyncall/dyncall/dyncall_utils.h +1 -1
  91. data/dyncall/dyncall/dyncall_value.h +28 -21
  92. data/dyncall/dyncall/dyncall_vector.c +1 -1
  93. data/dyncall/dyncall/dyncall_vector.h +1 -1
  94. data/dyncall/dyncall/gen-masm.sh +2 -2
  95. data/dyncall/dyncallback/CMakeLists.txt +1 -2
  96. data/dyncall/dyncallback/Makefile.generic +1 -1
  97. data/dyncall/dyncallback/dyncall_alloc_wx.c +1 -1
  98. data/dyncall/dyncallback/dyncall_alloc_wx.h +4 -3
  99. data/dyncall/dyncallback/dyncall_alloc_wx_malloc.c +8 -2
  100. data/dyncall/dyncallback/dyncall_alloc_wx_mmap.c +67 -4
  101. data/dyncall/dyncallback/dyncall_alloc_wx_win32.c +7 -2
  102. data/dyncall/dyncallback/dyncall_args.c +19 -15
  103. data/dyncall/dyncallback/dyncall_args.h +1 -1
  104. data/dyncall/dyncallback/{dyncall_args_arm32_arm.c → dyncall_args_arm32.c} +4 -4
  105. data/dyncall/dyncallback/{dyncall_args_arm32_arm.h → dyncall_args_arm32.h} +6 -6
  106. data/dyncall/dyncallback/dyncall_args_arm64.c +2 -2
  107. data/dyncall/dyncallback/dyncall_args_arm64_apple.c +2 -2
  108. data/dyncall/dyncallback/dyncall_args_mips.c +26 -21
  109. data/dyncall/dyncallback/dyncall_args_mips.h +18 -6
  110. data/dyncall/dyncallback/dyncall_args_mips64.c +81 -0
  111. data/dyncall/dyncallback/dyncall_args_mips_o32.c +104 -0
  112. data/dyncall/dyncallback/dyncall_args_ppc32.c +2 -2
  113. data/dyncall/dyncallback/dyncall_args_ppc32.h +1 -1
  114. data/dyncall/dyncallback/dyncall_args_ppc32_sysv.c +1 -1
  115. data/dyncall/dyncallback/dyncall_args_ppc64.c +24 -3
  116. data/dyncall/dyncallback/dyncall_args_sparc32.c +41 -15
  117. data/dyncall/dyncallback/dyncall_args_sparc32.h +2 -2
  118. data/dyncall/dyncallback/dyncall_args_sparc64.c +28 -15
  119. data/dyncall/dyncallback/dyncall_args_sparc64.h +7 -3
  120. data/dyncall/dyncallback/dyncall_args_x64.c +1 -1
  121. data/dyncall/dyncallback/dyncall_args_x64.h +1 -1
  122. data/dyncall/dyncallback/dyncall_args_x86.c +1 -1
  123. data/dyncall/dyncallback/dyncall_args_x86.h +1 -1
  124. data/dyncall/dyncallback/dyncall_callback.c +10 -12
  125. data/dyncall/dyncallback/dyncall_callback.h +2 -4
  126. data/dyncall/dyncallback/dyncall_callback_arch.S +12 -2
  127. data/dyncall/dyncallback/{dyncall_callback_arm32_arm.c → dyncall_callback_arm32.c} +25 -10
  128. data/dyncall/dyncallback/dyncall_callback_arm32_arm_apple.s +7 -7
  129. data/dyncall/dyncallback/dyncall_callback_arm32_arm_gas.S +9 -9
  130. data/dyncall/dyncallback/dyncall_callback_arm32_thumb_apple.S +1 -1
  131. data/dyncall/dyncallback/dyncall_callback_arm32_thumb_gas.S +1 -1
  132. data/dyncall/dyncallback/dyncall_callback_arm64.S +2 -2
  133. data/dyncall/dyncallback/dyncall_callback_arm64.c +20 -14
  134. data/dyncall/dyncallback/dyncall_callback_mips.c +26 -9
  135. data/dyncall/dyncallback/dyncall_callback_mips_eabi_gas.s +99 -0
  136. data/dyncall/dyncallback/{dyncall_args_arm32_thumb.h → dyncall_callback_mips_gas.S} +14 -9
  137. data/dyncall/dyncallback/{dyncall_callback_arm32_thumb.c → dyncall_callback_mips_n32_gas.s} +12 -7
  138. data/dyncall/dyncallback/dyncall_callback_mips_n64_gas.s +98 -0
  139. data/dyncall/dyncallback/dyncall_callback_mips_o32_gas.s +100 -0
  140. data/dyncall/dyncallback/dyncall_callback_ppc32.S +54 -54
  141. data/dyncall/dyncallback/dyncall_callback_ppc32.c +23 -5
  142. data/dyncall/dyncallback/dyncall_callback_ppc32_apple.s +92 -117
  143. data/dyncall/dyncallback/dyncall_callback_ppc64.S +2 -2
  144. data/dyncall/dyncallback/dyncall_callback_ppc64.c +23 -5
  145. data/dyncall/dyncallback/dyncall_callback_sparc32.c +25 -7
  146. data/dyncall/dyncallback/dyncall_callback_sparc32.s +55 -4
  147. data/dyncall/dyncallback/dyncall_callback_sparc64.c +25 -7
  148. data/dyncall/dyncallback/dyncall_callback_sparc64.s +89 -5
  149. data/dyncall/dyncallback/dyncall_callback_x64.S +8 -8
  150. data/dyncall/dyncallback/dyncall_callback_x64.c +19 -6
  151. data/dyncall/dyncallback/dyncall_callback_x86.S +29 -25
  152. data/dyncall/dyncallback/dyncall_callback_x86.c +24 -11
  153. data/dyncall/dyncallback/dyncall_thunk.c +6 -6
  154. data/dyncall/dyncallback/dyncall_thunk.h +9 -7
  155. data/dyncall/dyncallback/{dyncall_thunk_arm32_arm.c → dyncall_thunk_arm32.c} +5 -3
  156. data/dyncall/dyncallback/{dyncall_thunk_arm32_arm.h → dyncall_thunk_arm32.h} +7 -7
  157. data/dyncall/dyncallback/dyncall_thunk_arm64.c +2 -2
  158. data/dyncall/dyncallback/dyncall_thunk_arm64.h +8 -13
  159. data/dyncall/dyncallback/dyncall_thunk_mips.c +16 -20
  160. data/dyncall/dyncallback/dyncall_thunk_mips.h +4 -2
  161. data/dyncall/dyncallback/dyncall_thunk_mips64.c +103 -0
  162. data/dyncall/dyncallback/{dyncall_callback_arm32_thumb.h → dyncall_thunk_mips64.h} +15 -8
  163. data/dyncall/dyncallback/dyncall_thunk_ppc32.c +4 -4
  164. data/dyncall/dyncallback/dyncall_thunk_ppc32.h +1 -1
  165. data/dyncall/dyncallback/dyncall_thunk_ppc32_sysv.c +9 -9
  166. data/dyncall/dyncallback/dyncall_thunk_ppc64.c +2 -2
  167. data/dyncall/dyncallback/dyncall_thunk_sparc32.c +19 -2
  168. data/dyncall/dyncallback/dyncall_thunk_sparc32.h +5 -4
  169. data/dyncall/dyncallback/dyncall_thunk_sparc64.c +42 -2
  170. data/dyncall/dyncallback/dyncall_thunk_sparc64.h +5 -5
  171. data/dyncall/dyncallback/dyncall_thunk_x64.c +1 -1
  172. data/dyncall/dyncallback/dyncall_thunk_x64.h +2 -2
  173. data/dyncall/dyncallback/dyncall_thunk_x86.c +1 -1
  174. data/dyncall/dyncallback/dyncall_thunk_x86.h +2 -2
  175. data/dyncall/dyncallback/dyncallback.3 +16 -11
  176. data/dyncall/dynload/dynload.3 +63 -8
  177. data/dyncall/dynload/dynload.c +2 -8
  178. data/dyncall/dynload/dynload.h +9 -5
  179. data/dyncall/dynload/dynload_alloc.h +1 -1
  180. data/dyncall/dynload/dynload_syms.c +1 -3
  181. data/dyncall/dynload/dynload_syms_elf.c +19 -11
  182. data/dyncall/dynload/dynload_syms_mach-o.c +151 -75
  183. data/dyncall/dynload/dynload_syms_pe.c +24 -24
  184. data/dyncall/dynload/dynload_unix.c +156 -13
  185. data/dyncall/dynload/dynload_windows.c +15 -11
  186. data/dyncall/portasm/portasm-arm.S +1 -1
  187. data/dyncall/portasm/portasm-ppc.S +1 -1
  188. data/dyncall/portasm/{portasm-x64-att.S → portasm-x64.S} +7 -4
  189. data/dyncall/portasm/portasm-x86.S +4 -2
  190. data/{dyncall-bindings/ruby/rbdc/extconf.rb → extconf.rb} +4 -4
  191. data/{dyncall-bindings/ruby/rbdc/rbdc.c → rbdc.c} +5 -5
  192. metadata +24 -48
  193. data/dyncall/Makefile.M +0 -15
  194. data/dyncall/buildsys/dynmake/Makefile.base.M +0 -82
  195. data/dyncall/buildsys/dynmake/dynmake.bat +0 -2
  196. data/dyncall/buildsys/dynmake/dynmake.sh +0 -4
  197. data/dyncall/dynMakefile +0 -4
  198. data/dyncall/dyncall/Makefile.M +0 -10
  199. data/dyncall/dyncall/TODO +0 -9
  200. data/dyncall/dyncall/dynMakefile +0 -4
  201. data/dyncall/dyncall/dyncall_call_sparc64.S +0 -362
  202. data/dyncall/dyncall/dyncall_call_sparc_v9.S +0 -222
  203. data/dyncall/dyncall/dyncall_call_x64-att.S +0 -147
  204. data/dyncall/dyncall/dyncall_callvm_sparc_v9.c +0 -182
  205. data/dyncall/dyncall/dyncall_callvm_sparc_v9.h +0 -46
  206. data/dyncall/dyncallback/Makefile.M +0 -10
  207. data/dyncall/dyncallback/README.txt +0 -9
  208. data/dyncall/dyncallback/TODO +0 -4
  209. data/dyncall/dyncallback/dynMakefile +0 -4
  210. data/dyncall/dyncallback/dyncall_args_arm32_thumb.c +0 -30
  211. data/dyncall/dyncallback/dyncall_callback_arm32_arm.h +0 -46
  212. data/dyncall/dyncallback/dyncall_callback_mips.h +0 -43
  213. data/dyncall/dyncallback/dyncall_callback_ppc32.h +0 -43
  214. data/dyncall/dyncallback/dyncall_callback_ppc64.h +0 -56
  215. data/dyncall/dyncallback/dyncall_callback_sparc32.h +0 -44
  216. data/dyncall/dyncallback/dyncall_callback_x64.h +0 -45
  217. data/dyncall/dyncallback/dyncall_callback_x86.h +0 -50
  218. data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.c +0 -30
  219. data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.h +0 -36
  220. data/dyncall/dynload/Makefile.M +0 -10
  221. data/dyncall/dynload/TODO +0 -20
  222. data/dyncall/dynload/dynMakefile +0 -4
  223. data/dyncall/dynload/dynload_darwin.c +0 -90
@@ -6,7 +6,7 @@
6
6
  Description: Callback's Arguments VM - Header for sparc32
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -31,7 +31,7 @@
31
31
 
32
32
  struct DCArgs
33
33
  {
34
- int dummy;
34
+ int *arg_ptr;
35
35
  };
36
36
 
37
37
  #endif /* DYNCALLBACK_ARGS_SPARC32_H */
@@ -6,7 +6,7 @@
6
6
  Description: Callback's Arguments VM - Implementation for sparc64 - not yet
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -26,17 +26,30 @@
26
26
 
27
27
  #include "dyncall_args_sparc64.h"
28
28
 
29
- DCint dcbArgInt (DCArgs* p) { return 0; }
30
- DCuint dcbArgUInt (DCArgs* p) { return 0; }
31
- DCulonglong dcbArgULongLong (DCArgs* p) { return 0; }
32
- DClonglong dcbArgLongLong(DCArgs* p) { return (DClonglong)dcbArgULongLong(p); }
33
- DClong dcbArgLong (DCArgs* p) { return (DClong) dcbArgUInt(p); }
34
- DCulong dcbArgULong (DCArgs* p) { return (DCulong) dcbArgUInt(p); }
35
- DCchar dcbArgChar (DCArgs* p) { return (DCchar) dcbArgUInt(p); }
36
- DCuchar dcbArgUChar (DCArgs* p) { return (DCuchar) dcbArgUInt(p); }
37
- DCshort dcbArgShort (DCArgs* p) { return (DCshort) dcbArgUInt(p); }
38
- DCushort dcbArgUShort (DCArgs* p) { return (DCushort)dcbArgUInt(p); }
39
- DCbool dcbArgBool (DCArgs* p) { return (DCbool) dcbArgUInt(p); }
40
- DCpointer dcbArgPointer (DCArgs* p) { return (DCpointer)dcbArgUInt(p); }
41
- DCdouble dcbArgDouble (DCArgs* p) { return 0.0; }
42
- DCfloat dcbArgFloat (DCArgs* p) { return 0.0f; }
29
+ DCulonglong dcbArgULongLong(DCArgs* p) { return p->arg_ptr[p->i++]; }
30
+ DClonglong dcbArgLongLong (DCArgs* p) { return (DClonglong)dcbArgULongLong(p); }
31
+ DCulong dcbArgULong (DCArgs* p) { return (DCulong) dcbArgULongLong(p); }
32
+ DClong dcbArgLong (DCArgs* p) { return (DClong) dcbArgULongLong(p); }
33
+ DCuint dcbArgUInt (DCArgs* p) { return (DCuint) dcbArgULongLong(p); }
34
+ DCint dcbArgInt (DCArgs* p) { return (DCint) dcbArgULongLong(p); }
35
+ DCuchar dcbArgUChar (DCArgs* p) { return (DCuchar) dcbArgULongLong(p); }
36
+ DCchar dcbArgChar (DCArgs* p) { return (DCchar) dcbArgULongLong(p); }
37
+ DCushort dcbArgUShort (DCArgs* p) { return (DCushort) dcbArgULongLong(p); }
38
+ DCshort dcbArgShort (DCArgs* p) { return (DCshort) dcbArgULongLong(p); }
39
+ DCbool dcbArgBool (DCArgs* p) { return (DCbool) dcbArgULongLong(p); }
40
+ DCpointer dcbArgPointer (DCArgs* p) { return (DCpointer) dcbArgULongLong(p); }
41
+
42
+ DCdouble dcbArgDouble(DCArgs* p)
43
+ {
44
+ return (p->i < DCARGS_SPARC64_NUM_DOUBLE_REGS)
45
+ ? p->dreg_data[p->i++]
46
+ : *(DCdouble*)(p->arg_ptr + p->i++);
47
+ }
48
+
49
+ DCfloat dcbArgFloat(DCArgs* p)
50
+ {
51
+ return (p->i < DCARGS_SPARC64_NUM_DOUBLE_REGS)
52
+ ? *((DCfloat*)(p->dreg_data + p->i++)+1) /* +1 bc single-prec fp args are */
53
+ : *((DCfloat*)(p->arg_ptr + p->i++)+1); /* right aligned in 64bit slot */
54
+ }
55
+
@@ -3,10 +3,10 @@
3
3
  Package: dyncall
4
4
  Library: dyncallback
5
5
  File: dyncallback/dyncall_args_sparc64.h
6
- Description: Callback's Arguments VM - Header for sparc32 - not yet
6
+ Description: Callback's Arguments VM - Header for sparc64 - not yet
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -29,9 +29,13 @@
29
29
 
30
30
  #include "dyncall_args.h"
31
31
 
32
+ #define DCARGS_SPARC64_NUM_DOUBLE_REGS 16
32
33
  struct DCArgs
33
34
  {
34
- int dummy;
35
+ /* Don't change order or types, laid out for asm code to fill in! */
36
+ DClonglong *arg_ptr;
37
+ DCdouble dreg_data[DCARGS_SPARC64_NUM_DOUBLE_REGS];
38
+ DClonglong i; /* args fetched */
35
39
  };
36
40
 
37
41
  #endif /* DYNCALLBACK_ARGS_SPARC64_H */
@@ -6,7 +6,7 @@
6
6
  Description: Callback's Arguments VM - Implementation for x64
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -6,7 +6,7 @@
6
6
  Description: Callback's Arguments VM - Header for x64
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -6,7 +6,7 @@
6
6
  Description: Callback's Arguments VM - Implementation for x86
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -6,7 +6,7 @@
6
6
  Description: Callback's Arguments VM - Header for x86
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -6,7 +6,7 @@
6
6
  Description: Callback - Implementation back-end selector
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -28,23 +28,21 @@
28
28
 
29
29
  #if defined(DC__Arch_Intel_x86)
30
30
  #include "dyncall_callback_x86.c"
31
- #elif defined (DC__Arch_AMD64)
31
+ #elif defined(DC__Arch_AMD64)
32
32
  #include "dyncall_callback_x64.c"
33
- #elif defined (DC__Arch_PPC32)
33
+ #elif defined(DC__Arch_PPC32)
34
34
  #include "dyncall_callback_ppc32.c"
35
- #elif defined (DC__Arch_PPC64)
35
+ #elif defined(DC__Arch_PPC64)
36
36
  #include "dyncall_callback_ppc64.c"
37
- #elif defined (DC__Arch_ARM_ARM)
38
- #include "dyncall_callback_arm32_arm.c"
39
- #elif defined (DC__Arch_ARM_THUMB)
40
- #include "dyncall_callback_arm32_thumb.c"
41
- #elif defined (DC__Arch_MIPS)
37
+ #elif defined(DC__Arch_ARM)
38
+ #include "dyncall_callback_arm32.c"
39
+ #elif defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64)
42
40
  #include "dyncall_callback_mips.c"
43
- #elif defined (DC__Arch_Sparc)
41
+ #elif defined(DC__Arch_Sparc)
44
42
  #include "dyncall_callback_sparc32.c"
45
- #elif defined (DC__Arch_Sparcv9)
43
+ #elif defined(DC__Arch_Sparc64)
46
44
  #include "dyncall_callback_sparc64.c"
47
- #elif defined (DC__Arch_ARM64)
45
+ #elif defined(DC__Arch_ARM64)
48
46
  #include "dyncall_callback_arm64.c"
49
47
  #endif
50
48
 
@@ -6,7 +6,7 @@
6
6
  Description: Callback - Interface
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -32,8 +32,7 @@
32
32
 
33
33
  typedef struct DCCallback DCCallback;
34
34
 
35
- // TODO: return value is the type encoded as a signature char (character of the set [vBcCsSiIjJlLfd]).
36
-
35
+ // return value is the type encoded as a signature char (character of the set [vBcCsSiIjJlLfd]).
37
36
  typedef char (DCCallbackHandler)(DCCallback* pcb, DCArgs* args, DCValue* result, void* userdata);
38
37
 
39
38
  #ifdef __cplusplus
@@ -45,7 +44,6 @@ void dcbInitCallback(DCCallback* pcb, const char* signature, DCCallbackHa
45
44
  void dcbFreeCallback(DCCallback* pcb);
46
45
  void* dcbGetUserData (DCCallback* pcb);
47
46
 
48
-
49
47
  #ifdef __cplusplus
50
48
  }
51
49
  #endif
@@ -6,7 +6,7 @@
6
6
  Description: Callback Thunk - Implementation Back-end selector
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -64,16 +64,26 @@
64
64
  # include "dyncall_callback_ppc32.S"
65
65
  # elif defined(DC__Arch_PPC64)
66
66
  # include "dyncall_callback_ppc64.S"
67
+ # elif defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64)
68
+ # include "dyncall_callback_mips_gas.S"
67
69
  # elif defined(DC__Arch_ARM_ARM)
68
70
  # include "dyncall_callback_arm32_arm_gas.S"
69
71
  # elif defined(DC__Arch_ARM_THUMB)
70
72
  # include "dyncall_callback_arm32_thumb_gas.S"
71
73
  # elif defined(DC__Arch_Sparc)
72
74
  # include "dyncall_callback_sparc32.s"
73
- # elif defined(DC__Arch_Sparcv9)
75
+ # elif defined(DC__Arch_Sparc64)
74
76
  # include "dyncall_callback_sparc64.s"
75
77
  # elif defined(DC__Arch_ARM64)
76
78
  # include "dyncall_callback_arm64.S"
77
79
  # endif
78
80
  #endif
79
81
 
82
+
83
+ /* Use .note.GNU-stack to explicitly indicate a non-exec stack, b/c of bad */
84
+ /* default behaviour when translating handwritten assembly files (needed on */
85
+ /* GNU platforms, Android and FreeBSD, as tests have shown). */
86
+ #if (defined(DC__C_CLANG) || defined(DC__C_GNU)) && defined(__ELF__) && (defined(DC__OS_Linux) || defined(DC__OS_FreeBSD))
87
+ .section .note.GNU-stack,"",%progbits
88
+ #endif
89
+
@@ -2,11 +2,11 @@
2
2
 
3
3
  Package: dyncall
4
4
  Library: dyncallback
5
- File: dyncallback/dyncall_callback_arm32_arm.c
6
- Description: Callback - Implementation for ARM32 (ARM mode)
5
+ File: dyncallback/dyncall_callback_arm32.c
6
+ Description: Callback - Implementation for ARM32 (ARM and THUMB mode)
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -24,15 +24,21 @@
24
24
  */
25
25
 
26
26
 
27
-
28
- #include "dyncall_callback_arm32_arm.h"
29
- #include "dyncall_args_arm32_arm.h"
30
-
27
+ #include "dyncall_callback.h"
31
28
  #include "dyncall_alloc_wx.h"
32
- #include "dyncall_signature.h"
29
+ #include "dyncall_thunk.h"
33
30
 
31
+ /* Callback symbol. */
34
32
  extern void dcCallbackThunkEntry();
35
33
 
34
+ struct DCCallback
35
+ {
36
+ DCThunk thunk; // offset 0
37
+ DCCallbackHandler* handler; // offset 12
38
+ void* userdata; // offset 16
39
+ };
40
+
41
+
36
42
  void dcbInitCallback(DCCallback* pcb, const char* signature, DCCallbackHandler* handler, void* userdata)
37
43
  {
38
44
  pcb->handler = handler;
@@ -45,10 +51,18 @@ DCCallback* dcbNewCallback(const char* signature, DCCallbackHandler* handler, vo
45
51
  int err;
46
52
  DCCallback* pcb;
47
53
  err = dcAllocWX(sizeof(DCCallback), (void**)&pcb);
48
- if(err || !pcb)
49
- return 0;
54
+ if(err)
55
+ return NULL;
56
+
50
57
  dcbInitThunk(&pcb->thunk, dcCallbackThunkEntry);
51
58
  dcbInitCallback(pcb, signature, handler, userdata);
59
+
60
+ err = dcInitExecWX(pcb, sizeof(DCCallback));
61
+ if(err) {
62
+ dcFreeWX(pcb, sizeof(DCCallback));
63
+ return NULL;
64
+ }
65
+
52
66
  return pcb;
53
67
  }
54
68
 
@@ -62,3 +76,4 @@ void* dcbGetUserData(DCCallback* pcb)
62
76
  {
63
77
  return pcb->userdata;
64
78
  }
79
+
@@ -30,15 +30,15 @@
30
30
  .globl _dcCallbackThunkEntry
31
31
  .align 4
32
32
  /* sizes */
33
- .set DCThunk_size , 8
34
- .set DCArgs_size , 24
35
- .set DCCallback_size, 20
36
- .set DCValue_size , 8
33
+ DCThunk_size = 8
34
+ DCArgs_size = 24
35
+ DCCallback_size = 20
36
+ DCValue_size = 8
37
37
 
38
38
  /* struct DCCallback offsets and size */
39
- .set CTX_thunk , 0
40
- .set CTX_handler , 12
41
- .set CTX_userdata , 16
39
+ CTX_thunk = 0
40
+ CTX_handler = 12
41
+ CTX_userdata = 16
42
42
 
43
43
 
44
44
  /* Called by thunk - thunk stores pointer to DCCallback in r12 */
@@ -6,7 +6,7 @@
6
6
  Description: Callback Thunk - Implementation for ARM32 (ARM mode)
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -31,16 +31,16 @@
31
31
  .globl dcCallbackThunkEntry
32
32
 
33
33
  /* sizes */
34
- /* .set DCThunk_size , 8 */
35
- /* .set DCArgs_size , 24 */ /* for EABI/ATPCS/... */
36
- /* .set DCArgs_size , 96 */ /* for armhf */
37
- /* .set DCCallback_size, 20 */
38
- .set DCValue_size , 8
34
+ /* DCThunk_size = 8 */
35
+ /* DCArgs_size = 24 */ /* for EABI/ATPCS/... */
36
+ /* DCArgs_size = 96 */ /* for armhf */
37
+ /* DCCallback_size = 20 */
38
+ DCValue_size = 8
39
39
 
40
40
  /* struct DCCallback offsets and size */
41
- /* .set CTX_thunk , 0 */
42
- .set CTX_handler , 12
43
- .set CTX_userdata , 16
41
+ /* CTX_thunk = 0 */
42
+ CTX_handler = 12
43
+ CTX_userdata = 16
44
44
 
45
45
 
46
46
  /* Called by thunk - thunk stores pointer to DCCallback in r12 */
@@ -6,7 +6,7 @@
6
6
  Description: Callback Thunk - Implementation for ARM32 (THUMB mode)
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -6,7 +6,7 @@
6
6
  Description: Callback Thunk - Implementation for ARM32 (THUMB mode)
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2013 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -6,8 +6,8 @@
6
6
  Description: Callback Thunk - Implementation for ARM64 / ARMv8 / AAPCS64
7
7
  License:
8
8
 
9
- Copyright (c) 2015 Daniel Adler <dadler@uni-goettingen.de>,
10
- Tassilo Philipp <tphilipp@potion-studios.com>
9
+ Copyright (c) 2015-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
13
13
  purpose with or without fee is hereby granted, provided that the above
@@ -6,8 +6,8 @@
6
6
  Description: Callback - Implementation for ARM64 / ARMv8 / AAPCS64
7
7
  License:
8
8
 
9
- Copyright (c) 2015 Daniel Adler <dadler@uni-goettingen.de>,
10
- Tassilo Philipp <tphilipp@potion-studios.com>
9
+ Copyright (c) 2015-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
13
13
  purpose with or without fee is hereby granted, provided that the above
@@ -23,23 +23,21 @@
23
23
 
24
24
  */
25
25
 
26
+
26
27
  #include "dyncall_callback.h"
27
28
  #include "dyncall_alloc_wx.h"
28
29
  #include "dyncall_thunk.h"
29
30
 
31
+ /* Callback symbol. */
30
32
  extern void dcCallbackThunkEntry();
31
33
 
32
- struct DCCallback
33
- {
34
- // off size
35
- // ----|-----
36
- DCThunk thunk; // 0 32
37
- DCCallbackHandler* handler; // 32 8
38
- void* userdata; // 40 8
39
- //
40
- // size 48
41
- // aligned 48
42
- };
34
+ struct DCCallback /* off size */
35
+ { /* ----|----- */
36
+ DCThunk thunk; /* 0 32 */
37
+ DCCallbackHandler* handler; /* 32 8 */
38
+ void* userdata; /* 40 8 */
39
+ }; /* total 48 */
40
+ /* aligned 48 */
43
41
 
44
42
  void dcbInitCallback(DCCallback* pcb, const char* signature, DCCallbackHandler* handler, void* userdata)
45
43
  {
@@ -52,10 +50,18 @@ DCCallback* dcbNewCallback(const char* signature, DCCallbackHandler* handler, vo
52
50
  int err;
53
51
  DCCallback* pcb;
54
52
  err = dcAllocWX(sizeof(DCCallback), (void**) &pcb);
55
- if (err != 0) return 0;
53
+ if(err)
54
+ return NULL;
56
55
 
57
56
  dcbInitThunk(&pcb->thunk, dcCallbackThunkEntry);
58
57
  dcbInitCallback(pcb, signature, handler, userdata);
58
+
59
+ err = dcInitExecWX(pcb, sizeof(DCCallback));
60
+ if(err) {
61
+ dcFreeWX(pcb, sizeof(DCCallback));
62
+ return NULL;
63
+ }
64
+
59
65
  return pcb;
60
66
  }
61
67