rbdc 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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