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: Thunk - Implementation Back-end selection
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
@@ -39,15 +39,15 @@
39
39
  # endif
40
40
  #elif defined(DC__Arch_PPC64)
41
41
  # include "dyncall_thunk_ppc64.c"
42
- #elif defined(DC__Arch_ARM_ARM)
43
- #include "dyncall_thunk_arm32_arm.c"
44
- #elif defined(DC__Arch_ARM_THUMB)
45
- #include "dyncall_thunk_arm32_thumb.c"
42
+ #elif defined(DC__Arch_ARM)
43
+ #include "dyncall_thunk_arm32.c"
46
44
  #elif defined(DC__Arch_MIPS)
47
45
  #include "dyncall_thunk_mips.c"
46
+ #elif defined(DC__Arch_MIPS64)
47
+ #include "dyncall_thunk_mips64.c"
48
48
  #elif defined(DC__Arch_Sparc)
49
49
  #include "dyncall_thunk_sparc32.c"
50
- #elif defined(DC__Arch_Sparcv9)
50
+ #elif defined(DC__Arch_Sparc64)
51
51
  #include "dyncall_thunk_sparc64.c"
52
52
  #elif defined(DC__Arch_ARM64)
53
53
  #include "dyncall_thunk_arm64.c"
@@ -6,7 +6,7 @@
6
6
  Description: Thunk - 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
@@ -47,10 +47,11 @@
47
47
  ** ppc: r2
48
48
  ** arm: r12
49
49
  ** arm64: x9
50
+ ** mips: t4
50
51
  **
51
52
  **/
52
53
 
53
- #include "dyncall_macros.h"
54
+ #include "../dyncall/dyncall_macros.h"
54
55
 
55
56
  typedef struct DCThunk_ DCThunk;
56
57
 
@@ -68,15 +69,15 @@ void dcbInitThunk(DCThunk* p, void (*entry)());
68
69
  #include "dyncall_thunk_ppc32.h"
69
70
  #elif defined (DC__Arch_PPC64)
70
71
  #include "dyncall_thunk_ppc64.h"
71
- #elif defined (DC__Arch_ARM_ARM)
72
- #include "dyncall_thunk_arm32_arm.h"
73
- #elif defined (DC__Arch_ARM_THUMB)
74
- #include "dyncall_thunk_arm32_thumb.h"
72
+ #elif defined (DC__Arch_ARM)
73
+ #include "dyncall_thunk_arm32.h"
75
74
  #elif defined (DC__Arch_MIPS)
76
75
  #include "dyncall_thunk_mips.h"
76
+ #elif defined (DC__Arch_MIPS64)
77
+ #include "dyncall_thunk_mips64.h"
77
78
  #elif defined (DC__Arch_Sparc)
78
79
  #include "dyncall_thunk_sparc32.h"
79
- #elif defined (DC__Arch_Sparcv9)
80
+ #elif defined (DC__Arch_Sparc64)
80
81
  #include "dyncall_thunk_sparc64.h"
81
82
  #elif defined (DC__Arch_ARM64)
82
83
  #include "dyncall_thunk_arm64.h"
@@ -88,3 +89,4 @@ void dcbInitThunk(DCThunk* p, void (*entry)());
88
89
 
89
90
 
90
91
  #endif /* DYNCALL_THUNK_H */
92
+
@@ -2,11 +2,11 @@
2
2
 
3
3
  Package: dyncall
4
4
  Library: dyncallback
5
- File: dyncallback/dyncall_thunk_arm32_arm.c
6
- Description: Thunk - Implementation for ARM32 (ARM mode)
5
+ File: dyncallback/dyncall_thunk_arm32.c
6
+ Description: Thunk - 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,6 +24,8 @@
24
24
  */
25
25
 
26
26
 
27
+ /* Since we can mix ARM and THUMB assembly, this works for both modes */
28
+
27
29
  #include "dyncall_thunk.h"
28
30
 
29
31
  void dcbInitThunk(DCThunk* p, void (*entry)())
@@ -2,11 +2,11 @@
2
2
 
3
3
  Package: dyncall
4
4
  Library: dyncallback
5
- File: dyncallback/dyncall_thunk_arm32_arm.h
6
- Description: Thunk - Header for ARM32 (ARM mode)
5
+ File: dyncallback/dyncall_thunk_arm32.h
6
+ Description: Thunk - Header 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,8 +24,8 @@
24
24
  */
25
25
 
26
26
 
27
- #ifndef DYNCALL_THUNK_ARM32_ARM_H
28
- #define DYNCALL_THUNK_ARM32_ARM_H
27
+ #ifndef DYNCALL_THUNK_ARM32_H
28
+ #define DYNCALL_THUNK_ARM32_H
29
29
 
30
30
 
31
31
  struct DCThunk_
@@ -34,8 +34,8 @@ struct DCThunk_
34
34
  void (*entry)();
35
35
  };
36
36
 
37
- #define DCTHUNK_ARM32_ARM_SIZE 12
37
+ #define DCTHUNK_ARM32_SIZE 12
38
38
 
39
39
 
40
- #endif /* DYNCALL_THUNK_ARM32_ARM_H */
40
+ #endif /* DYNCALL_THUNK_ARM32_H */
41
41
 
@@ -6,8 +6,8 @@
6
6
  Description: 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: Thunk - Header 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
@@ -26,17 +26,12 @@
26
26
  #ifndef DYNCALL_THUNK_ARM64_H
27
27
  #define DYNCALL_THUNK_ARM64_H
28
28
 
29
- struct DCThunk_
30
- {
31
- // off size
32
- //-----|----------
33
- unsigned int code[4]; // 0 16
34
- void (*entry)(); // 16 8
35
- void* reserved; // 24 8
36
-
37
- // 32 total size
38
-
39
- };
29
+ struct DCThunk_ /* off size */
30
+ { /* ----|---- */
31
+ unsigned int code[4]; /* 0 16 */
32
+ void (*entry)(); /* 16 8 */
33
+ void* reserved; /* 24 8 */
34
+ }; /* 32 total */
40
35
 
41
36
  #endif /* DYNCALL_THUNK_ARM64_H */
42
37
 
@@ -6,7 +6,7 @@
6
6
  Description: Thunk - Implementation for MIPS
7
7
  License:
8
8
 
9
- Copyright (c) 2013-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2013-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
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include "dyncall_thunk.h"
27
27
 
28
- unsigned short hi16(x) { return ( (unsigned short) (((unsigned int)x)>>16UL) ); }
29
- unsigned short lo16(x) { return ( (unsigned short) ((unsigned int)x) ); }
28
+ static unsigned short hi16(x) { return ( (unsigned short) (((unsigned int)x)>>16UL) ); }
29
+ static unsigned short lo16(x) { return ( (unsigned short) ((unsigned int)x) ); }
30
30
 
31
31
  void dcbInitThunk(DCThunk* p, void (*entry)())
32
32
  {
@@ -35,32 +35,28 @@ void dcbInitThunk(DCThunk* p, void (*entry)())
35
35
  Thunk Register: $t4 ($12)
36
36
  According to o32abi: $t9
37
37
 
38
- 'The Linux/MIPS convention is that all PIC calls use t9 to hold the address of the called function.'
39
- [See MIPS Run, p.413]
38
+ 'The Linux/MIPS convention is that all PIC calls use t9 to hold the address of
39
+ the called function.' [See MIPS Run, p.413]
40
40
 
41
41
  mips thunk code:
42
42
  lui $t4, %hi(p)
43
43
  lui $t9, %hi(entry)
44
44
  ori $t9, $t9, %lo(entry)
45
45
  jr $t9
46
- ori $t4, $t4, %lo(p)
46
+ ori $t4, $t4, %lo(p) ; branch delay slot
47
47
 
48
- thunk.o: file format elf32-tradbigmips
49
-
50
-
51
- Disassembly of section .text:
52
48
 
53
49
  00000000 <thunk>:
54
- 0: 3c0c0000 lui t4,0x0
55
- 4: 3c190000 lui t9,0x0
56
- 8: 37390000 ori t9,t9,0x0
57
- c: 03200008 jr t9
58
- 10: 00200825 move at,at
59
- 14: 358c0000 ori t4,t4,0x0
60
- 18: 00200825 move at,at
61
- 1c: 00200825 move at,at
62
-
63
- */
50
+ 0: 3c0c0000 lui t4,0x0
51
+ 4: 3c190000 lui t9,0x0
52
+ 8: 37390000 ori t9,t9,0x0
53
+ c: 03200008 jr t9
54
+ 10: 00200825 move at,at
55
+ 14: 358c0000 ori t4,t4,0x0
56
+ 18: 00200825 move at,at
57
+ 1c: 00200825 move at,at
58
+
59
+ */
64
60
 
65
61
  #if defined(DC__Endian_BIG)
66
62
 
@@ -6,7 +6,7 @@
6
6
  Description: Thunk - Header for MIPS
7
7
  License:
8
8
 
9
- Copyright (c) 2013-2015 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2013-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,8 +31,10 @@ struct DCThunk_
31
31
  {
32
32
  unsigned short data[6];
33
33
  unsigned int jump;
34
- unsigned short bddt[2];
34
+ unsigned short bddt[2]; // branch delay slots
35
35
  };
36
36
 
37
+ #define DCTHUNK_MIPS_SIZE 20
38
+
37
39
  #endif /* DYNCALL_THUNK_MIPS_H */
38
40
 
@@ -0,0 +1,103 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncallback
5
+ File: dyncallback/dyncall_thunk_mips64.c
6
+ Description: Thunk - Implementation for MIPS64
7
+ License:
8
+
9
+ Copyright (c) 2016-2018 Tassilo Philipp <tphilipp@potion-studios.com>
10
+
11
+ Permission to use, copy, modify, and distribute this software for any
12
+ purpose with or without fee is hereby granted, provided that the above
13
+ copyright notice and this permission notice appear in all copies.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22
+
23
+ */
24
+
25
+ #include "dyncall_thunk.h"
26
+
27
+ #define b_48_63(x) ((unsigned short)(((unsigned long long)x)>>48UL))
28
+ #define b_32_47(x) ((unsigned short)(((unsigned long long)x)>>32UL))
29
+ #define b_16_31(x) ((unsigned short)(((unsigned long long)x)>>16UL))
30
+ #define b_00_15(x) ((unsigned short) ((unsigned long long)x) )
31
+
32
+ void dcbInitThunk(DCThunk* p, void (*entry)())
33
+ {
34
+ /*
35
+
36
+ Thunk Register: $t8 ($24)
37
+ Call Address (sticking to t9 as for PIC calls on mips32): $t9 ($25)
38
+
39
+ mips64 thunk code:
40
+ lui $t8, p[48:63]
41
+ ori $t8, $t8, p[32:47]
42
+ dsll $t8, 16
43
+ ori $t8, $t8, p[16:31]
44
+ dsll $t8, 16
45
+ lui $t9, entry[48:63]
46
+ ori $t9, $t9, entry[32:47]
47
+ dsll $t9, 16
48
+ ori $t9, $t9, entry[16:31]
49
+ dsll $t9, 16
50
+ ori $t9, $t9, entry[0:15]
51
+ jr $t9
52
+ ori $t8, $t8, p[0:15] ; branch delay slot
53
+
54
+ Disassembly of section .text:
55
+
56
+ 0000000000000000 <thunk>:
57
+ 0: 3c180000 lui t8,0x0
58
+ 4: 37180000 ori t8,t8,0x0
59
+ 8: 0018c438 dsll t8,t8,0x10
60
+ c: 37180000 ori t8,t8,0x0
61
+ 10: 0018c438 dsll t8,t8,0x10
62
+ 14: 3c190000 lui t9,0x0
63
+ 18: 37390000 ori t9,t9,0x0
64
+ 1c: 0019cc38 dsll t9,t9,0x10
65
+ 20: 37390000 ori t9,t9,0x0
66
+ 24: 0019cc38 dsll t9,t9,0x10
67
+ 28: 37390000 ori t9,t9,0x0
68
+ 2c: 03200008 jr t9
69
+ 30: 37180000 ori t8,t8,0x0
70
+
71
+ */
72
+
73
+ #if defined(DC__Endian_BIG)
74
+
75
+ p->text.s[ 0] = 0x3c18; p->text.s[ 1] = b_48_63(p); /* lui $t8, p[48:63] */
76
+ p->text.s[ 2] = 0x3718; p->text.s[ 3] = b_32_47(p); /* ori $t8, $t8, p[32:47] */
77
+ p->text.s[ 6] = 0x3718; p->text.s[ 7] = b_16_31(p); /* ori $t8, $t8, p[16:31] */
78
+ p->text.s[10] = 0x3c19; p->text.s[11] = b_48_63(entry); /* lui $t9, entry[48:63] */
79
+ p->text.s[12] = 0x3739; p->text.s[13] = b_32_47(entry); /* ori $t9, $t9, entry[32:47] */
80
+ p->text.s[16] = 0x3739; p->text.s[17] = b_16_31(entry); /* ori $t9, $t9, entry[16:31] */
81
+ p->text.s[20] = 0x3739; p->text.s[21] = b_00_15(entry); /* ori $t9, $t9, entry[0:15] */
82
+ p->text.s[24] = 0x3718; p->text.s[25] = b_00_15(p); /* ori $t8, $t8, p[0:15] - branch delay slot */
83
+
84
+ #else /* defined(DC__Endian_LITTLE) */
85
+
86
+ p->text.s[ 1] = 0x3c18; p->text.s[ 0] = b_48_63(p); /* lui $t8, p[48:63] */
87
+ p->text.s[ 3] = 0x3718; p->text.s[ 2] = b_32_47(p); /* ori $t8, $t8, p[32:47] */
88
+ p->text.s[ 7] = 0x3718; p->text.s[ 6] = b_16_31(p); /* ori $t8, $t8, p[16:31] */
89
+ p->text.s[11] = 0x3c19; p->text.s[10] = b_48_63(entry); /* lui $t9, entry[48:63] */
90
+ p->text.s[13] = 0x3739; p->text.s[12] = b_32_47(entry); /* ori $t9, $t9, entry[32:47] */
91
+ p->text.s[17] = 0x3739; p->text.s[16] = b_16_31(entry); /* ori $t9, $t9, entry[16:31] */
92
+ p->text.s[21] = 0x3739; p->text.s[20] = b_00_15(entry); /* ori $t9, $t9, entry[0:15] */
93
+ p->text.s[25] = 0x3718; p->text.s[24] = b_00_15(p); /* ori $t8, $t8, p[0:15] - branch delay slot */
94
+
95
+ #endif
96
+
97
+ p->text.i[ 2] = 0x0018c438; /* dsll t8,t8,0x10 */
98
+ p->text.i[ 4] = 0x0018c438; /* dsll t8,t8,0x10 */
99
+ p->text.i[ 7] = 0x0019cc38; /* dsll t9,t9,0x10 */
100
+ p->text.i[ 9] = 0x0019cc38; /* dsll t9,t9,0x10 */
101
+ p->text.i[11] = 0x03200008; /* jr $t9 */
102
+ }
103
+
@@ -2,12 +2,11 @@
2
2
 
3
3
  Package: dyncall
4
4
  Library: dyncallback
5
- File: dyncallback/dyncall_callback_arm32_thumb.h
6
- Description: Callback - Header for ARM32 (THUMB mode)
5
+ File: dyncallback/dyncall_thunk_mips64.h
6
+ Description: Thunk - Header for MIPS64
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
10
- Tassilo Philipp <tphilipp@potion-studios.com>
9
+ Copyright (c) 2016-2018 Tassilo Philipp <tphilipp@potion-studios.com>
11
10
 
12
11
  Permission to use, copy, modify, and distribute this software for any
13
12
  purpose with or without fee is hereby granted, provided that the above
@@ -24,11 +23,19 @@
24
23
  */
25
24
 
26
25
 
26
+ #ifndef DYNCALL_THUNK_MIPS64_H
27
+ #define DYNCALL_THUNK_MIPS64_H
27
28
 
28
- #ifndef DYNCALL_CALLBACK_ARM32_THUMB_H_
29
- #define DYNCALL_CALLBACK_ARM32_THUMB_H_
29
+ struct DCThunk_
30
+ {
31
+ union {
32
+ unsigned short s[26];
33
+ unsigned int i[13]; /* don't change from 'int', must be 32bit wide */
34
+ } text;
35
+ unsigned int padding; /* 4 bytes, to get struct size to multiple of 8 */
36
+ };
30
37
 
31
- #include "dyncall_callback_arm32_arm.h" /* Uses same code as ARM mode. */
38
+ #define DCTHUNK_MIPS64_SIZE 56
32
39
 
33
- #endif /* DYNCALL_CALLBACK_ARM32_THUMB_H_ */
40
+ #endif /* DYNCALL_THUNK_MIPS64_H */
34
41
 
@@ -6,7 +6,7 @@
6
6
  Description: Thunk - Implementation for ppc32 darwin/apple
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,8 +26,8 @@
26
26
 
27
27
  #include "dyncall_thunk.h"
28
28
 
29
- unsigned short hi16(x) { return ( (unsigned short) (((unsigned int)x)>>16UL) ); }
30
- unsigned short lo16(x) { return ( (unsigned short) ((unsigned int)x) ); }
29
+ static unsigned short hi16(x) { return ( (unsigned short) (((unsigned int)x)>>16UL) ); }
30
+ static unsigned short lo16(x) { return ( (unsigned short) ((unsigned int)x) ); }
31
31
 
32
32
  void dcbInitThunk(DCThunk* p, void (*entry)())
33
33
  {
@@ -42,7 +42,7 @@ void dcbInitThunk(DCThunk* p, void (*entry)())
42
42
 
43
43
  p->code_load_hi = 0x3c40U; /* lis r2, HI16(p) */
44
44
  p->addr_self_hi = hi16(p);
45
- p->code_load_lo = 0x6042U; /* ori r2, r2, LO16(p) */
45
+ p->code_load_lo = 0x6042U; /* ori r2, r2, LO16(p) */
46
46
  p->addr_self_lo = lo16(p);
47
47
  p->code_jump[0] = 0x81820014U; /* lwz r12, 20(r2) */
48
48
  p->code_jump[1] = 0x7d8903a6U; /* mtclr r12 */
@@ -6,7 +6,7 @@
6
6
  Description: Thunk - Header for ppc32 (darwin/sysv)
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