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:
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
@@ -45,7 +45,6 @@
45
45
  #include "dyncall_callvm.h"
46
46
  #include "dyncall_vector.h"
47
47
 
48
-
49
48
  typedef struct
50
49
  {
51
50
  DCCallVM mInterface;
@@ -53,8 +52,5 @@ typedef struct
53
52
  DCVecHead mVecHead;
54
53
  } DCCallVM_arm32_thumb;
55
54
 
56
- DCCallVM* dcNewCallVM_arm32_thumb(DCsize size);
57
-
58
-
59
55
  #endif /* DYNCALL_CALLVM_ARM32_THUMB_H */
60
56
 
@@ -6,8 +6,8 @@
6
6
  Description: ARM 64-bit ABI implementation
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
@@ -27,19 +27,6 @@
27
27
  #include "dyncall_callvm_arm64.h"
28
28
  #include "dyncall_alloc.h"
29
29
 
30
- static DCCallVM* dc_callvm_new_arm64(DCCallVM_vt* vt, DCsize size)
31
- {
32
- DCCallVM_arm64* p = (DCCallVM_arm64*) dcAllocMem(size);
33
-
34
- dc_callvm_base_init(&p->mInterface, vt);
35
-
36
- dcVecInit(&p->mVecHead, size);
37
-
38
- p->i = 0;
39
- p->f = 0;
40
-
41
- return (DCCallVM*)p;
42
- }
43
30
 
44
31
  static void reset(DCCallVM* in_p)
45
32
  {
@@ -50,8 +37,6 @@ static void reset(DCCallVM* in_p)
50
37
  }
51
38
 
52
39
 
53
- static void mode(DCCallVM* in_self,DCint mode);
54
-
55
40
  static void deinit(DCCallVM* in_self)
56
41
  {
57
42
  dcFreeMem(in_self);
@@ -112,6 +97,8 @@ void call(DCCallVM* in_p, DCpointer target)
112
97
  dcCall_arm64(target, dcVecData(&p->mVecHead), ( dcVecSize(&p->mVecHead) + 15 ) & -16, &p->u.S[0]);
113
98
  }
114
99
 
100
+ static void mode(DCCallVM* in_self, DCint mode);
101
+
115
102
  DCCallVM_vt vt_arm64 =
116
103
  {
117
104
  &deinit
@@ -140,26 +127,35 @@ DCCallVM_vt vt_arm64 =
140
127
  , NULL /* callStruct */
141
128
  };
142
129
 
143
- DCCallVM* dcNewCallVM(DCsize size)
130
+ static void mode(DCCallVM* in_self, DCint mode)
144
131
  {
145
- return dc_callvm_new_arm64(&vt_arm64, size);
146
- }
132
+ DCCallVM_arm64* self = (DCCallVM_arm64*)in_self;
133
+ DCCallVM_vt* vt;
147
134
 
148
- static void mode(DCCallVM* in_self,DCint mode)
149
- {
150
- DCCallVM_arm64* self = (DCCallVM_arm64*) in_self;
151
- DCCallVM_vt* vt;
152
135
  switch(mode) {
153
136
  case DC_CALL_C_DEFAULT:
137
+ case DC_CALL_C_ARM64:
154
138
  case DC_CALL_C_ELLIPSIS:
155
139
  case DC_CALL_C_ELLIPSIS_VARARGS:
156
- case DC_CALL_C_ARM64:
157
140
  vt = &vt_arm64;
158
141
  break;
159
142
  default:
160
- in_self->mError = DC_ERROR_UNSUPPORTED_MODE;
143
+ self->mInterface.mError = DC_ERROR_UNSUPPORTED_MODE;
161
144
  return;
162
145
  }
163
- self->mInterface.mVTpointer = vt;
146
+ dc_callvm_base_init(&self->mInterface, vt);
147
+ }
148
+
149
+ /* Public API. */
150
+ DCCallVM* dcNewCallVM(DCsize size)
151
+ {
152
+ DCCallVM_arm64* p = (DCCallVM_arm64*)dcAllocMem(sizeof(DCCallVM_arm64)+size);
153
+
154
+ mode((DCCallVM*)p, DC_CALL_C_DEFAULT);
155
+
156
+ dcVecInit(&p->mVecHead, size);
157
+ reset((DCCallVM*)p);
158
+
159
+ return (DCCallVM*)p;
164
160
  }
165
161
 
@@ -6,8 +6,8 @@
6
6
  Description:
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
@@ -30,7 +30,6 @@
30
30
  #include "dyncall_callvm.h"
31
31
  #include "dyncall_vector.h"
32
32
 
33
-
34
33
  typedef struct
35
34
  {
36
35
  DCCallVM mInterface;
@@ -44,8 +43,5 @@ typedef struct
44
43
  DCVecHead mVecHead; /* argument buffer head */
45
44
  } DCCallVM_arm64;
46
45
 
47
- DCCallVM* dcNewCallVM_arm64(DCsize size);
48
-
49
-
50
46
  #endif /* DYNCALL_CALLVM_ARM64_DEBIAN_H */
51
47
 
@@ -6,8 +6,8 @@
6
6
  Description: ARM 64-bit Apple ABI implementation
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
@@ -27,19 +27,6 @@
27
27
  #include "dyncall_callvm_arm64.h"
28
28
  #include "dyncall_alloc.h"
29
29
 
30
- static DCCallVM* dc_callvm_new_arm64(DCCallVM_vt* vt, DCsize size)
31
- {
32
- DCCallVM_arm64* p = (DCCallVM_arm64*) dcAllocMem(size);
33
-
34
- dc_callvm_base_init(&p->mInterface, vt);
35
-
36
- dcVecInit(&p->mVecHead, size);
37
-
38
- p->i = 0;
39
- p->f = 0;
40
-
41
- return (DCCallVM*)p;
42
- }
43
30
 
44
31
  static void reset(DCCallVM* in_p)
45
32
  {
@@ -50,8 +37,6 @@ static void reset(DCCallVM* in_p)
50
37
  }
51
38
 
52
39
 
53
- static void mode(DCCallVM* in_p,DCint mode);
54
-
55
40
  static void deinit(DCCallVM* in_p)
56
41
  {
57
42
  dcFreeMem(in_p);
@@ -186,6 +171,8 @@ void call(DCCallVM* in_p, DCpointer target)
186
171
  dcCall_arm64(target, dcVecData(&p->mVecHead), ( dcVecSize(&p->mVecHead) + 15 ) & -16, &p->u.S[0]);
187
172
  }
188
173
 
174
+ static void mode(DCCallVM* in_p,DCint mode);
175
+
189
176
  DCCallVM_vt vt_arm64 =
190
177
  {
191
178
  &deinit
@@ -242,21 +229,14 @@ DCCallVM_vt vt_arm64_variadic =
242
229
  , NULL /* callStruct */
243
230
  };
244
231
 
245
-
246
- DCCallVM* dcNewCallVM(DCsize size)
232
+ static void mode(DCCallVM* in_self, DCint mode)
247
233
  {
248
- return dc_callvm_new_arm64(&vt_arm64, size);
249
- }
234
+ DCCallVM_arm64* self = (DCCallVM_arm64*)in_self;
235
+ DCCallVM_vt* vt;
250
236
 
251
- static void mode(DCCallVM* in_self,DCint mode)
252
- {
253
- DCCallVM_arm64* self = (DCCallVM_arm64*) in_self;
254
- DCCallVM_vt* vt;
255
237
  switch(mode) {
256
238
  case DC_CALL_C_DEFAULT:
257
- case DC_CALL_C_ARM64:
258
- vt = &vt_arm64;
259
- break;
239
+ case DC_CALL_C_ARM64:
260
240
  case DC_CALL_C_ELLIPSIS:
261
241
  vt = &vt_arm64;
262
242
  break;
@@ -264,9 +244,22 @@ static void mode(DCCallVM* in_self,DCint mode)
264
244
  vt = &vt_arm64_variadic;
265
245
  break;
266
246
  default:
267
- in_self->mError = DC_ERROR_UNSUPPORTED_MODE;
247
+ self->mInterface.mError = DC_ERROR_UNSUPPORTED_MODE;
268
248
  return;
269
249
  }
270
- self->mInterface.mVTpointer = vt;
250
+ dc_callvm_base_init(&self->mInterface, vt);
251
+ }
252
+
253
+ /* Public API. */
254
+ DCCallVM* dcNewCallVM(DCsize size)
255
+ {
256
+ DCCallVM_arm64* p = (DCCallVM_arm64*)dcAllocMem(sizeof(DCCallVM_arm64)+size);
257
+
258
+ mode((DCCallVM*)p, DC_CALL_C_DEFAULT);
259
+
260
+ dcVecInit(&p->mVecHead, size);
261
+ reset((DCCallVM*)p);
262
+
263
+ return (DCCallVM*)p;
271
264
  }
272
265
 
@@ -6,7 +6,7 @@
6
6
  Description: ARM 32-bit "thumb" ABI callvm implementation
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: ARM 32-bit "thumb" ABI callvm implementation
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:
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: Implementation of Call VM for mips "eabi" abi.
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
@@ -36,34 +36,11 @@ static void dc_callvm_reset_mips_eabi(DCCallVM* in_self)
36
36
  self->mSingleRegs = 0;
37
37
  }
38
38
 
39
- static DCCallVM* dc_callvm_new_mips_eabi(DCCallVM_vt* vt, DCsize size)
40
- {
41
- /* Store at least 16 bytes (4 words) for internal spill area. Assembly code depends on it. */
42
- DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)dcAllocMem(sizeof(DCCallVM_mips_eabi)+size+16);
43
- dc_callvm_base_init(&self->mInterface, vt);
44
- dcVecInit(&self->mVecHead, size);
45
- dc_callvm_reset_mips_eabi( (DCCallVM*) self );
46
- return (DCCallVM*)self;
47
- }
48
-
49
-
50
39
  static void dc_callvm_free_mips_eabi(DCCallVM* in_self)
51
40
  {
52
41
  dcFreeMem(in_self);
53
42
  }
54
43
 
55
- static void dc_callvm_mode_mips_eabi(DCCallVM* in_self,DCint mode)
56
- {
57
- switch(mode) {
58
- case DC_CALL_C_DEFAULT:
59
- case DC_CALL_C_ELLIPSIS:
60
- case DC_CALL_C_MIPS32_EABI:
61
- break;
62
- default:
63
- in_self->mError = DC_ERROR_UNSUPPORTED_MODE; return;
64
- }
65
- }
66
-
67
44
  /* arg int -- fillup integer register file OR push on stack */
68
45
 
69
46
  static void dc_callvm_argInt_mips_eabi(DCCallVM* in_self, DCint i)
@@ -142,6 +119,8 @@ void dc_callvm_call_mips_eabi(DCCallVM* in_self, DCpointer target)
142
119
  dcCall_mips_eabi(target, &self->mRegData, dcVecSize(&self->mVecHead), dcVecData(&self->mVecHead));
143
120
  }
144
121
 
122
+ static void dc_callvm_mode_mips_eabi(DCCallVM* in_self, DCint mode);
123
+
145
124
  DCCallVM_vt gVT_mips_eabi =
146
125
  {
147
126
  &dc_callvm_free_mips_eabi
@@ -170,13 +149,37 @@ DCCallVM_vt gVT_mips_eabi =
170
149
  , NULL /* callStruct */
171
150
  };
172
151
 
173
- DCCallVM* dcNewCallVM_mips_eabi(DCsize size)
152
+ /* mode: only a single mode available currently. */
153
+ static void dc_callvm_mode_mips_eabi(DCCallVM* in_self, DCint mode)
174
154
  {
175
- return dc_callvm_new_mips_eabi(&gVT_mips_eabi, size);
155
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)in_self;
156
+ DCCallVM_vt* vt;
157
+
158
+ switch(mode) {
159
+ case DC_CALL_C_DEFAULT:
160
+ case DC_CALL_C_MIPS32_EABI:
161
+ case DC_CALL_C_ELLIPSIS:
162
+ case DC_CALL_C_ELLIPSIS_VARARGS:
163
+ vt = &gVT_mips_eabi;
164
+ break;
165
+ default:
166
+ self->mInterface.mError = DC_ERROR_UNSUPPORTED_MODE;
167
+ return;
168
+ }
169
+ dc_callvm_base_init(&self->mInterface, vt);
176
170
  }
177
171
 
172
+ /* Public API. */
178
173
  DCCallVM* dcNewCallVM(DCsize size)
179
174
  {
180
- return dcNewCallVM_mips_eabi(size);
175
+ /* Store at least 16 bytes (4 words) for internal spill area. Assembly code depends on it. */
176
+ DCCallVM_mips_eabi* p = (DCCallVM_mips_eabi*)dcAllocMem(sizeof(DCCallVM_mips_eabi)+size+16);
177
+
178
+ dc_callvm_mode_mips_eabi((DCCallVM*)p, DC_CALL_C_DEFAULT);
179
+
180
+ dcVecInit(&p->mVecHead, size);
181
+ dc_callvm_reset_mips_eabi((DCCallVM*)p);
182
+
183
+ return (DCCallVM*)p;
181
184
  }
182
185
 
@@ -6,7 +6,7 @@
6
6
  Description:
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
@@ -45,7 +45,6 @@
45
45
  #include "dyncall_callvm.h"
46
46
  #include "dyncall_vector.h"
47
47
 
48
-
49
48
  typedef struct
50
49
  {
51
50
  DCCallVM mInterface;
@@ -55,8 +54,5 @@ typedef struct
55
54
  DCVecHead mVecHead;
56
55
  } DCCallVM_mips_eabi;
57
56
 
58
- DCCallVM* dcNewCallVM_mips_eabi(DCsize size);
59
-
60
-
61
57
  #endif /* DYNCALL_CALLVM_MIPS_EABI_H */
62
58
 
@@ -3,10 +3,10 @@
3
3
  Package: dyncall
4
4
  Library: dyncall
5
5
  File: dyncall/dyncall_callvm_mips_n32.c
6
- Description: mips "n32" ABI callvm implementation
6
+ Description: mips64 "n32" ABI callvm implementation
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
@@ -61,15 +61,6 @@ static void dc_callvm_reset_mips_n32(DCCallVM* in_self)
61
61
  self->mRegData.mUseDouble = 0LL;
62
62
  }
63
63
 
64
- static DCCallVM* dc_callvm_new_mips_n32(DCCallVM_vt* vt, DCsize size)
65
- {
66
- DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)dcAllocMem(sizeof(DCCallVM_mips_n32)+size);
67
- dc_callvm_base_init(&self->mInterface, vt);
68
- dcVecInit(&self->mVecHead, size);
69
- dc_callvm_reset_mips_n32( (DCCallVM*) self );
70
- return (DCCallVM*)self;
71
- }
72
-
73
64
 
74
65
  static void dc_callvm_free_mips_n32(DCCallVM* in_self)
75
66
  {
@@ -148,7 +139,7 @@ static void dc_callvm_argFloat_mips_n32(DCCallVM* in_self, DCfloat x)
148
139
  }
149
140
 
150
141
 
151
- /* Ellipsis calls:
142
+ /* Ellipsis calls:
152
143
  - float is promoted to double (due to ANSI C).
153
144
  - double is passed via integer register-file (due to MIPS ABI).
154
145
  */
@@ -170,7 +161,7 @@ void dc_callvm_call_mips_n32(DCCallVM* in_self, DCpointer target)
170
161
  {
171
162
  DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
172
163
  /* at minimum provide 16-bytes
173
- which hold the first four integer register as spill area
164
+ which hold the first four integer register as spill area
174
165
  and are automatically loaded to $4-$7
175
166
  */
176
167
  size_t size = DC_MAX(16, ( ( (unsigned) dcVecSize(&self->mVecHead) ) +7UL ) & (-8UL) );
@@ -187,7 +178,7 @@ DCCallVM_vt gVT_mips_n32 =
187
178
  , &dc_callvm_mode_mips_n32
188
179
  , &dc_callvm_argBool_mips_n32
189
180
  , &dc_callvm_argChar_mips_n32
190
- , &dc_callvm_argShort_mips_n32
181
+ , &dc_callvm_argShort_mips_n32
191
182
  , &dc_callvm_argInt_mips_n32
192
183
  , &dc_callvm_argLong_mips_n32
193
184
  , &dc_callvm_argLongLong_mips_n32
@@ -236,34 +227,37 @@ DCCallVM_vt gVT_mips_n32_ellipsis =
236
227
  , NULL /* callStruct */
237
228
  };
238
229
 
239
- static void dc_callvm_mode_mips_n32(DCCallVM* self,DCint mode)
230
+ static void dc_callvm_mode_mips_n32(DCCallVM* in_self, DCint mode)
240
231
  {
232
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
233
+ DCCallVM_vt* vt;
234
+
241
235
  switch(mode) {
242
236
  case DC_CALL_C_DEFAULT:
243
- self->mVTpointer = &gVT_mips_n32;
244
- break;
237
+ case DC_CALL_C_MIPS64_N32:
245
238
  case DC_CALL_C_ELLIPSIS:
246
- self->mVTpointer = &gVT_mips_n32_ellipsis;
239
+ vt = &gVT_mips_n32;
247
240
  break;
248
- default:
249
- self->mError = DC_ERROR_UNSUPPORTED_MODE;
241
+ case DC_CALL_C_ELLIPSIS_VARARGS:
242
+ vt = &gVT_mips_n32_ellipsis;
250
243
  break;
244
+ default:
245
+ self->mInterface.mError = DC_ERROR_UNSUPPORTED_MODE;
246
+ return;
251
247
  }
248
+ dc_callvm_base_init(&self->mInterface, vt);
252
249
  }
253
250
 
254
- DCCallVM* dcNewCallVM_mips_n32(DCsize size)
251
+ /* Public API. */
252
+ DCCallVM* dcNewCallVM(DCsize size)
255
253
  {
256
- return dc_callvm_new_mips_n32(&gVT_mips_n32, size);
257
- }
254
+ DCCallVM_mips_n32* p = (DCCallVM_mips_n32*)dcAllocMem(sizeof(DCCallVM_mips_n32)+size);
258
255
 
259
- DCCallVM* dcNewCallVM_mips_n32_ellipsis(DCsize size)
260
- {
261
- return dc_callvm_new_mips_n32(&gVT_mips_n32_ellipsis, size);
262
- }
256
+ dc_callvm_mode_mips_n32((DCCallVM*)p, DC_CALL_C_DEFAULT);
263
257
 
258
+ dcVecInit(&p->mVecHead, size);
259
+ dc_callvm_reset_mips_n32((DCCallVM*)p);
264
260
 
265
- DCCallVM* dcNewCallVM(DCsize size)
266
- {
267
- return dcNewCallVM_mips_n32(size);
261
+ return (DCCallVM*)p;
268
262
  }
269
263