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
@@ -1,15 +0,0 @@
1
- #include "buildsys/dynmake/Makefile.base.M"
2
-
3
- all:
4
- cd dyncall _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE)
5
- cd dynload _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE)
6
- cd dyncallback _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE)
7
-
8
- clean:
9
- cd dyncall _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) clean
10
- cd dynload _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) clean
11
- cd dyncallback _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) clean
12
-
13
- tests:
14
- cd test _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE)
15
-
@@ -1,82 +0,0 @@
1
- #include "../../dyncall/dyncall_macros.h"
2
-
3
- #if defined(DC_WINDOWS) && defined(MAKE_CMD_nmake)
4
-
5
- /* Abstractions */
6
- #define _(X) $(X) /* Standard variables */
7
- #define _L(X) X.lib
8
- #define _O(X) X.obj
9
-
10
- #define TARGET @
11
- #define PREREQS **
12
-
13
- /* Makefile internal vars for platform abstraction */
14
- MAKEFLAGS_USER = /NOLOGO
15
- MAKEFLAG_FILE = /f
16
- MAKE_DEFAULT_FILE = dynMakefile
17
- SHELL_COMMAND_SEPARATOR = &&
18
-
19
- AR = lib
20
- ARFLAGS_USER = /NOLOGO
21
- ARFLAGS =
22
- ARFLAG_OUT_PREFIX = /OUT:
23
-
24
- CFLAGS_USER = /nologo /I..\dyncall /I..\dyncallback
25
- CFLAGS = _(CFLAGS) _(CFLAGS_USER)
26
-
27
- LDFLAGS_USER = /nologo /L..\dyncall /L..\dyncallback
28
- LDFLAGS = _(LDFLAGS) _(LDFLAGS_USER)
29
- LDFLAG_IN_PREFIX =
30
- LDFLAG_OUT_PREFIX = /OUT:
31
-
32
- ASFLAGS_USER = /nologo
33
- AFLAGS = _(AFLAGS) _(ASFLAGS_USER) /* Set AFLAGS (without 'S'), which is the standard nmake predefined macro for MASM */
34
- ASFLAGS = _(AFLAGS)
35
-
36
- RM = del
37
-
38
- .SUFFIXES : .S
39
-
40
- .S.obj:
41
- cl /nologo /EP $< > $*.asm
42
- _(AS) _(ASFLAGS) /c $*.asm
43
- del $*.asm
44
-
45
-
46
- #else
47
-
48
- /* Abstractions */
49
- #define _(X) ${X} /* Standard variables */
50
- #define _L(X) lib##X.a
51
- #define _O(X) X.o
52
-
53
- #define TARGET @
54
- #if defined(MAKE_CMD_gmake) || (defined(DC__OS_Linux) && !defined(MAKE_CMD_bsdmake)) || (defined(DC__OS_Darwin) && !defined(MAKE_CMD_bsdmake)) || (defined(DC__OS_SunOS) && !defined(MAKE_CMD_bsdmake))
55
- # define PREREQS ^
56
- #else
57
- # define PREREQS >
58
- #endif
59
-
60
-
61
- /* Makefile internal vars for platform abstraction */
62
- MAKEFLAGS_USER =
63
- MAKEFLAG_FILE = -f
64
- MAKE_DEFAULT_FILE = dynMakefile
65
- SHELL_COMMAND_SEPARATOR = ;
66
-
67
- ARFLAG_OUT_PREFIX =
68
-
69
- CFLAGS_USER = -I ../dyncall -I ../dyncallback
70
- CFLAGS += _(CFLAGS_USER)
71
-
72
- LDFLAGS_USER = -L../../dyncall -L../../dyncallback
73
- LDFLAGS += _(LDFLAGS_USER)
74
- LDFLAG_IN_PREFIX = -l
75
- LDFLAG_OUT_PREFIX = -o
76
-
77
- ASFLAGS_USER =
78
-
79
- RM = rm -f
80
-
81
- #endif
82
-
@@ -1,2 +0,0 @@
1
- cl /nologo /DMAKE_CMD_%~n2 /EP Makefile.M 1> Makefile.dynmake
2
- %2 /NOLOGO /f Makefile.dynmake %1
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
- #cpp -D MAKE_CMD_$2 -P Makefile.M | sed "s/^ */ /" > Makefile.dynmake
3
- gcc -D MAKE_CMD_$2 -E -P -x c Makefile.M | sed "s/^ */ /" > Makefile.dynmake
4
- $2 -f Makefile.dynmake $1
@@ -1,4 +0,0 @@
1
- all: ./buildsys/dynmake/dynmake.bat
2
- $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE)
3
- clean: ./buildsys/dynmake/dynmake.bat
4
- $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE)
@@ -1,10 +0,0 @@
1
- #include "../buildsys/dynmake/Makefile.base.M"
2
-
3
- all: _L(dyncall_s)
4
-
5
- _L(dyncall_s): _O(dyncall_vector) _O(dyncall_api) _O(dyncall_callvm) _O(dyncall_callvm_base) _O(dyncall_call) _O(dyncall_callf) _O(dyncall_struct)
6
- _(AR) _(ARFLAGS) _(ARFLAG_OUT_PREFIX)_(TARGET) _(PREREQS)
7
-
8
- clean:
9
- _(RM) _O(*)
10
- _(RM) _L(dyncall_s)
@@ -1,9 +0,0 @@
1
- - implement structure passing for all calling conventinos and platforms
2
- - make sure that struct support for ellipsis calls are not forgotten (copy everything by value)
3
-
4
- - merge arm32_thumb_{gas/apple} and include thumb support for portasm
5
- - check dyncall_call_x64_traditional_cpp.S / try-sync with win64 masm
6
- - remove dyncall_call_x86_apple.s
7
- - x64 port cleanup: all x64 calling conventions on all platforms
8
- - remove dyncall_call_x86_masm.asm dyncall_call_x64_masm.asm
9
- - x64 verification: return values are passed via RAX and RDX, and XMM0 and XMM1.
@@ -1,4 +0,0 @@
1
- all: ./../buildsys/dynmake/dynmake.bat
2
- $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE)
3
- clean: ./../buildsys/dynmake/dynmake.bat
4
- $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE)
@@ -1,362 +0,0 @@
1
- /*
2
-
3
- Package: dyncall
4
- Library: dyncall
5
- File: dyncall/dyncall_call_sparc64.S
6
- Description: Call kernel for sparc64 v9 ABI.
7
- License:
8
-
9
- Copyright (c) 2011-2015 Daniel Adler <dadler@uni-goettingen.de>
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
-
26
-
27
-
28
- /* ---------------------------------------------------------------------------
29
-
30
- call kernel for sparc64 v9 abi
31
- tested on sparc64/linux/debian [gcc54.fsffrance.org - thanx to the farm!]
32
-
33
- new C Interface:
34
- void dcCall_sparc (DCCallVM* callvm, DCpointer target);
35
- %i0 %1
36
-
37
- see dyncall_call_sparc.S for details.
38
-
39
- old C Interface:
40
- void dcCall_sparc (DCpointer target, DCsize size, DCpointer data);
41
- %i0 , %i1 , %i2
42
- Input:
43
- i0 target
44
- i1 size
45
- i2 data
46
-
47
- */
48
-
49
- #define REGSIZE 8
50
-
51
- #define BIAS 2047
52
-
53
- #define ALIGN 16
54
-
55
- #define IREGS 6
56
- #define FREGS 16
57
- #define SREGS 16
58
- #define IBASE 0
59
- #define FBASE (IREGS*8)
60
-
61
- #define SHEAD ((16+6)*8)
62
- #define DHEAD ((IREGS+FREGS)*8)+SREGS*4
63
-
64
- CALLVM_singleUseFlags = 24
65
- CALLVM_size = 40
66
- CALLVM_dataoff = 48
67
-
68
-
69
- .global dcCall_sparc64
70
- dcCall_sparc64:
71
-
72
- /* Basic Prolog: supports up to 6 arguments. */
73
-
74
- /* new C interface */
75
- /* o0-1: callvm,target */
76
-
77
- or %o0, %g0, %o3 /* %o3: callvm */
78
- or %o1, %g0, %o0 /* %o0: target */
79
- ldx [%o3+CALLVM_size], %o1 /* %o1: size */
80
- add %o3, CALLVM_dataoff, %o2 /* %o2: data */
81
- ld [%o3+CALLVM_singleUseFlags], %o4 /* %o4: flags */
82
- /*leaf functions: may use the first six output registers.*/
83
- /*o0-2:target,size,data*/
84
- /*o3-5:free to use */
85
-
86
- /* Arguments: */
87
- /* %o0 = ptr to target. */
88
- /* %o1 = size of data. */
89
- /* %o2 = data pointer. */
90
- /* %o4 = use flags. */
91
-
92
- /* Compute a matching stack size (approximate): o3 = align(o1+136,16) */
93
-
94
- add %o1, SHEAD+ALIGN-1, %o3
95
- and %o3, -ALIGN, %o3
96
- neg %o3
97
-
98
- /* Prolog. */
99
- save %sp, %o3, %sp
100
-
101
- /* Arguments: */
102
- /* %i0 = ptr to target. */
103
- /* %i1 = size of data. */
104
- /* %i2 = data pointer. */
105
- /* %i3 = stack size. */
106
-
107
- /* Load output registers. */
108
-
109
- ldx [%i2+IBASE+REGSIZE*0 ],%o0
110
- ldx [%i2+IBASE+REGSIZE*1 ],%o1
111
- ldx [%i2+IBASE+REGSIZE*2 ],%o2
112
- ldx [%i2+IBASE+REGSIZE*3 ],%o3
113
- ldx [%i2+IBASE+REGSIZE*4 ],%o4
114
- ldx [%i2+IBASE+REGSIZE*5 ],%o5
115
-
116
- /* Load double-precision float registers. */
117
-
118
- ldd [%i2+FBASE+REGSIZE*0 ],%f0
119
- ldd [%i2+FBASE+REGSIZE*1 ],%f2
120
- ldd [%i2+FBASE+REGSIZE*2 ],%f4
121
- ldd [%i2+FBASE+REGSIZE*3 ],%f6
122
- ldd [%i2+FBASE+REGSIZE*4 ],%f8
123
- ldd [%i2+FBASE+REGSIZE*5 ],%f10
124
- ldd [%i2+FBASE+REGSIZE*6 ],%f12
125
- ldd [%i2+FBASE+REGSIZE*7 ],%f14
126
- ldd [%i2+FBASE+REGSIZE*8 ],%f16
127
- ldd [%i2+FBASE+REGSIZE*9 ],%f18
128
- ldd [%i2+FBASE+REGSIZE*10],%f20
129
- ldd [%i2+FBASE+REGSIZE*11],%f22
130
- ldd [%i2+FBASE+REGSIZE*12],%f24
131
- ldd [%i2+FBASE+REGSIZE*13],%f26
132
- ldd [%i2+FBASE+REGSIZE*14],%f28
133
- ldd [%i2+FBASE+REGSIZE*15],%f30
134
-
135
- /* load single-precision float registers */
136
-
137
- or %g0, 1, %l0
138
- .f0:
139
- andcc %i4, %l0, %g0
140
- beq .f1
141
- nop
142
- ld [%i2+FBASE+REGSIZE*16+4*0 ], %f1
143
- .f1:
144
- sll %l0, 1, %l0
145
- andcc %i4, %l0, %g0
146
- beq .f2
147
- nop
148
- ld [%i2+FBASE+REGSIZE*16+4*1 ], %f3
149
- .f2:
150
- sll %l0, 1, %l0
151
- andcc %i4, %l0, %g0
152
- beq .f3
153
- nop
154
- ld [%i2+FBASE+REGSIZE*16+4*2 ], %f5
155
- .f3:
156
- sll %l0, 1, %l0
157
- andcc %i4, %l0, %g0
158
- beq .f4
159
- nop
160
- ld [%i2+FBASE+REGSIZE*16+4*3 ], %f7
161
- .f4:
162
- sll %l0, 1, %l0
163
- andcc %i4, %l0, %g0
164
- beq .f5
165
- nop
166
- ld [%i2+FBASE+REGSIZE*16+4*4 ], %f9
167
- .f5:
168
- sll %l0, 1, %l0
169
- andcc %i4, %l0, %g0
170
- beq .f6
171
- nop
172
- ld [%i2+FBASE+REGSIZE*16+4*5 ], %f11
173
- .f6:
174
- sll %l0, 1, %l0
175
- andcc %i4, %l0, %g0
176
- beq .f7
177
- nop
178
- ld [%i2+FBASE+REGSIZE*16+4*6 ], %f13
179
- .f7:
180
- sll %l0, 1, %l0
181
- andcc %i4, %l0, %g0
182
- beq .f8
183
- nop
184
- ld [%i2+FBASE+REGSIZE*16+4*7 ], %f15
185
- .f8:
186
- sll %l0, 1, %l0
187
- andcc %i4, %l0, %g0
188
- beq .f9
189
- nop
190
- ld [%i2+FBASE+REGSIZE*16+4*8 ], %f17
191
- .f9:
192
- sll %l0, 1, %l0
193
- andcc %i4, %l0, %g0
194
- beq .f10
195
- nop
196
- ld [%i2+FBASE+REGSIZE*16+4*9 ], %f19
197
- .f10:
198
- sll %l0, 1, %l0
199
- andcc %i4, %l0, %g0
200
- beq .f11
201
- nop
202
- ld [%i2+FBASE+REGSIZE*16+4*10], %f21
203
- .f11:
204
- sll %l0, 1, %l0
205
- andcc %i4, %l0, %g0
206
- beq .f12
207
- nop
208
- ld [%i2+FBASE+REGSIZE*16+4*11], %f23
209
- .f12:
210
- sll %l0, 1, %l0
211
- andcc %i4, %l0, %g0
212
- beq .f13
213
- nop
214
- ld [%i2+FBASE+REGSIZE*16+4*12], %f25
215
- .f13:
216
- sll %l0, 1, %l0
217
- andcc %i4, %l0, %g0
218
- beq .f14
219
- nop
220
- ld [%i2+FBASE+REGSIZE*16+4*13], %f27
221
- .f14:
222
- sll %l0, 1, %l0
223
- andcc %i4, %l0, %g0
224
- beq .f15
225
- nop
226
- ld [%i2+FBASE+REGSIZE*16+4*14], %f29
227
- .f15:
228
- sll %l0, 1, %l0
229
- andcc %i4, %l0, %g0
230
- beq .f_end
231
- nop
232
- ld [%i2+FBASE+REGSIZE*16+4*15], %f31
233
- .f_end:
234
- /* Skip Register Data, do we nee to copy on stack at all? */
235
- sub %i1, DHEAD, %i1 /* skip data header. */
236
- cmp %i1, 0
237
- ble .do_call
238
- nop
239
-
240
- /* Copy loop: */
241
- add %i2, DHEAD, %i2 /* i2 = skip data header. */
242
- or %g0, %g0, %l0 /* l0 = offset initialized to 0. */
243
- add %sp, BIAS+SHEAD, %l2 /* l2 = argument area on stack space (7th word). (64+4+6*4 = byte offset 92). */
244
-
245
- .next:
246
- ldx [%i2+%l0],%l1 /* Read from arg buffer(%i2) to %l1. */
247
- stx %l1, [%l2+%l0] /* Write %l1 to stack space(%l2). */
248
- add %l0, REGSIZE, %l0 /* Increment offset. */
249
- sub %i1, REGSIZE, %i1 /* Decrement copy size. */
250
- cmp %i1, 0
251
- bgt .next
252
- nop
253
- .do_call:
254
- call %i0 /* Call target. */
255
- nop
256
- or %o0, %g0, %i0
257
- jmpl %i7 + 8, %g0
258
- restore
259
- /*
260
- return %i7 + 8
261
- jmpl %i7 + 8, %g0
262
- nop
263
-
264
- jmpl %i7 + 8, %g0
265
- nop
266
- restore
267
- ret
268
- */
269
-
270
- /*
271
- or %o0, %g0, %i0
272
- or %o1, %g0, %i1
273
- or %o2, %g0, %i2
274
- or %o3, %g0, %i3
275
- return %i7 + 8
276
- nop
277
-
278
- Changes from v8:
279
- - fundamental data types
280
- - (un)signed int: 8,16,32,64
281
- - float: 32,64,128
282
- - float: IEEE 754 compilant
283
- 32 32-bit float registers f0,f1,..,f31
284
- 32 64-bit float registers f0,f2,..,f62
285
- 16 128-bit float registers f0,f4,..,f60
286
-
287
- Description:
288
- We need to raise up a dynamic stack frame.
289
- Therefore we need to compute the stack size. We do this first,
290
- in the context of the caller as a leaf function (using o3 as scratch for addition).
291
- Then we raise the frame, ending up in o0-o3 is then i0-i3.
292
-
293
-
294
- Stack Layout:
295
- BIAS = 2047
296
-
297
- BIAS+XX: should be 16 byte aligned.
298
- ...
299
- 136: argument overflow area
300
- 128: 1 extended word for struct/union poiner return value
301
- BIAS+ 0: 16 extended words for registers (in/local) save area [register window]
302
-
303
-
304
- Function Argument Passing:
305
- - integer %o0..%o5 (caller view).
306
- - floating-point %f0 .. %f15
307
- - continuous memory starting at %sp+BIAS+136 (caller view).
308
-
309
- Register Usage:
310
- %fp0..%fp31 : floating-point arguments.
311
- %sp or %o6 : stack pointer, always 8 (or 16?)-byte aligned.
312
- %fp or %i6 : frame pointer.
313
- %i0 and %o0 : integer and pointer return values.
314
- %i7 and %o7 : return address. (caller puts return address to %o7, callee uses %i7)
315
- %fp0 and %fp1: return value (float).
316
- %i0..%i5 : input argument registers
317
- %o0..%o5 : output argument registers
318
- %g0 : always zero, writes to it have no effect.
319
-
320
- Register Mappings:
321
- r0-7 -> globals
322
- r8-15 -> outs
323
- r16-r23 -> locals
324
- r24-r31 -> ins
325
-
326
- Integer Register Overview Table:
327
- ID Class Name Description
328
- ------------------------------------------------------------------------------
329
- 0 globals g0 always zero, writes to it have no effect
330
- 1 g1
331
- 2 g2
332
- 3 g3
333
- 4 g4
334
- 5 g5
335
- 6 g6
336
- 7 g7
337
- 8 out o0 [int/ptr] arg 0 and return
338
- 9 o1 arg 1
339
- 10 o2 arg 2
340
- 11 o3 arg 3
341
- 12 o4 arg 4
342
- 13 o5 arg 5
343
- 14 o6 stack pointer
344
- 15 o7
345
- 16 local l0 scratch
346
- 17 l1
347
- 18 l2
348
- 19 l3
349
- 20 l4
350
- 21 l5
351
- 22 l6
352
- 23 l7
353
- 24 in i0 [int/pt] arg 0 and return
354
- 25 i1
355
- 26 i2
356
- 27 i3
357
- 28 i4
358
- 29 i5
359
- 30 i6 frame pointer
360
- 31 i7
361
- */
362
-