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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76ba7a97e6c88e40f86e1a59a4c6023222ed83db
4
- data.tar.gz: c24246dc7d908499db4760aac24cb40f3213acc5
3
+ metadata.gz: 48c23d651ae6024799dc93d27784b76932a2442a
4
+ data.tar.gz: 77aea3d5b61b0b1957a8e6c4fee0c0e3815afe77
5
5
  SHA512:
6
- metadata.gz: 4c2d628c9aed7e969046206fc969b51082daad477b32191d04b0a95295428cdbc447e727788c3cc4384f7b81f0d928cab225225f3af7da5650f8e9de35478da3
7
- data.tar.gz: 8fefae5a9f123004aa604322676b9800c6af14cc4b73b16c41c74820c9304605d7812314b2083fc1bf8d7e84f8e524357195985b0623bd6c414626b784c79530
6
+ metadata.gz: bc287843aed36b3750e69451c4612ac4fb6460d9c200592960b04ac4ec23240e162bd28d155b94aa3c17b3ebda874ac6689ab0f7f136a5fd239519fbfeb37007
7
+ data.tar.gz: 73b0f5ddbaf53b12882499d67ec86c7f3a28ec5987978d5e49c5afd8b3229307994c1883ec3c56b25b46b77fc2e3c2dbb9d43239ee76773e460a9a59de82c416
@@ -1,4 +1,4 @@
1
- - add support for SELinux; object files need to be tagged with section '.section .note.GNU-stack,"",%progbits'
1
+ - add support for SELinux
2
2
  - dyncall sparc v7/v8: -xO3 on SunPro segfaults in tests.
3
3
  - dyncall sparc64 port: works fine on Debian 6, but has issues on OpenBSD and Solaris regarding passing of float and double values.
4
4
  - this BUGS file should be merged with ToDo or vice-versa
@@ -19,7 +19,7 @@
19
19
  #
20
20
 
21
21
  cmake_minimum_required (VERSION 2.6)
22
- project(DynCall)
22
+ project(DynCall C)
23
23
 
24
24
  set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "dyncall enables dynamic invocation of machine-level function calls")
25
25
  set(CPACK_PACKAGE_VENDOR "dyncall project")
@@ -35,6 +35,14 @@ include(CPack)
35
35
  # currently we have no use for this, but maybe later..
36
36
  #set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/buildsys/cmake/Modules" "${CMAKE_MODULE_PATH}")
37
37
 
38
+ option(LANG_CXX "Enable and build C++ tests" ON)
39
+
40
+ if(LANG_CXX)
41
+ enable_language(CXX)
42
+ endif()
43
+
44
+ include(CheckCCompilerFlag)
45
+ check_c_compiler_flag("-fPIC -Werror" COMPILER_HAS_FPIC)
38
46
 
39
47
  if(MSVC)
40
48
  enable_language(ASM_MASM)
@@ -47,10 +55,12 @@ if(MSVC)
47
55
  #set(CMAKE_ASM_MASM_SOURCE_FILE_EXTENSIONS asm)
48
56
  #set(CMAKE_ASM_MASM_COMPILE_OBJECT "<CMAKE_ASM_MASM_COMPILER> <FLAGS> /c /Fo <OBJECT> <SOURCE>")
49
57
  elseif(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Intel")
50
- # when used in shared libraries, -fPIC is required by several architectures
51
- # and platforms (observed on AMD64, Solaris/Sparc).
52
- # we enable it per default here.
53
- add_definitions("-fPIC")
58
+ if(COMPILER_HAS_FPIC)
59
+ # when used in shared libraries, -fPIC is required by several architectures
60
+ # and platforms (observed on AMD64, Solaris/Sparc).
61
+ # we enable it per default here.
62
+ add_definitions("-fPIC")
63
+ endif()
54
64
  # enable gcc as front-end to assembler for .S files
55
65
  set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
56
66
  set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
@@ -61,8 +71,10 @@ elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "SunPro")
61
71
  set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
62
72
  enable_language(ASM)
63
73
  else()
64
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
65
- add_definitions("-fPIC")
74
+ if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
75
+ if(COMPILER_HAS_FPIC)
76
+ add_definitions("-fPIC")
77
+ endif()
66
78
  # enable gcc as front-end to assembler for .S files
67
79
  set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
68
80
  set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
@@ -1,21 +1,62 @@
1
1
  This file lists bigger/noteworthy changes, only...
2
2
 
3
- Version 1.0 (upcoming)
4
- o ...
3
+ Version 1.0 (2018/04/23)
4
+ dyncall:
5
+ o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
6
+ o fixed potential buffer overrun on ARM64
7
+ o error code handling (dcGetError) changes, flag is now cleared (work still underway)
8
+ o MIPS n64 ellipsis call fixes
9
+ o ARM32 armhf ellipsis call fixes
10
+ o fixed ARM32-THUMB stack alignment issues (found on Cortex-m0, thanks Darren Whobrey!)
11
+ o better C++ compiler support (for pointer conversions)
12
+ dyncallback:
13
+ o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
14
+ o MIPS o32 (big- and little-endian), EABI (32 bit, little-endian) and n64 (big-endian) support
15
+ o SPARC32 (v7/v8) support
16
+ o SPARC64 (v9) support
17
+ o PPC32 fixes for (old) Darwin/OS X systems
18
+ o POSIX compliance: fallback for wx alloc on systems that don't have mmap()'s MAP_ANON
19
+ o allocated space used for thunk now always W^X (req. for e.g. OpenBSD >= 6.0)
20
+ dynload:
21
+ o major reliability/stability fixes for Mach-O dlSyms* functions to (thanks Stéphane Mons for help):
22
+ better handle loading dylibs by symlink, relative path, random casing, etc.
23
+ fixes to symbol name lookups that used wrong offsets before
24
+ 64-bit platform fixes (was broken on x64 and never supported on others)
25
+ o allowing Mach-O dlSyms* lib to be used standalone (consistent with ELF and PE impls now)
26
+ o simplifications of implemention on Darwin, sharing parts with *nix implementation
27
+ o potentially breaking change on macos/Darwin platforms: all functions now consistently accept or
28
+ return symbol names as they would appear in C code, instead of the raw ones in object files
29
+ o added new function dlGetLibraryPath, allowing lookups of path to library via handle
30
+ general:
31
+ o assembly code now built by explicitily asking for non-execstack, for safer/easier integration
32
+ into other projects/builds, where needed; needed b/c of questionable default behaviours of some
33
+ toolchains (thanks Thorsten Behrens for report and analysis)
34
+ doc:
35
+ o working html doc generation from TEX sources
36
+ o SPARC32 (v7/v8) calling convention description
37
+ o SPARC64 (v9) calling convention description
38
+ bindings:
39
+ o better documentation, removed relative path dependencies, general cleanup
40
+ o python: updated to latest signature format (was still on 0.1)
41
+ o java: rewritten (old version was never complete, anyways)
42
+ tests:
43
+ o added new dynload_plain test covering basic use of all dynload functions
44
+ buildsys:
45
+ o cmake: made to work on systems without C++ compiler (thanks Franklin Mathieu)
5
46
 
6
47
  Version 0.9 (2015/12/31)
7
48
  dyncall:
8
49
  o ARM64 support (AAPCS64 on Linux & Apple's derived version on iOS)
9
50
  o armhf calling convention support for ARM32
10
- o PPC64 support, including syscalls (thanks Masanori!)
51
+ o PPC64 support, including syscalls (thanks Masanori Mitsugi!)
11
52
  o introduced dcArgF and dcVArgF for flexible/convenient argument binding (works like dcCallF/dcVCallF but without the function call)
12
53
  o using -fPIC by default for FreeBSD
13
54
  o PPC32 linux syscall support
14
- o fixed return value errors for arm32 on some platforms (e.g. freebsd/arm32, nintendo ds); arm & thumb mode
55
+ o fixed return value errors for ARM32 on some platforms (e.g. freebsd/arm32, nintendo ds); arm & thumb mode
15
56
  dyncallback:
16
57
  o ARM64 support (AAPCS64 on Linux, Apple's derived version on iOS)
17
58
  o armhf calling convention support for ARM32
18
- o PPC64 support (thanks Masanori!)
59
+ o PPC64 support (thanks Masanori Mitsugi!)
19
60
  o PPC32 System V support (Linux)
20
61
  o fix for PPC32 Darwin/OS X
21
62
  o more intuitive specification of callback return type
@@ -37,6 +78,7 @@ bindings:
37
78
  o erldc: Erlang binding (thanks Erik!)
38
79
  infrastructure:
39
80
  o moved to hg
81
+ o moved bindings to own repository
40
82
 
41
83
  Version 0.8 (2014/03/24)
42
84
  buildsys:
@@ -47,9 +89,9 @@ buildsys:
47
89
  o based more sources on portasm generation
48
90
  dyncall:
49
91
  o fix for ARMv7 Thumb-2 code (tested on iPhone 4 CDMA / iOS 6.0.1)
50
- o bugfixes for -O2 builds for SPARC-v9 and SPARC-v7
92
+ o bugfixes for -O2 builds for SPARC-v9 and SPARC-v7
51
93
  o new optimized call kernel for SPARC-v9 without conditionals
52
- o bigger refactoring and optimization of mips o32
94
+ o bigger refactoring and optimization of MIPS o32
53
95
  o x64 optimizations
54
96
  dyncallback:
55
97
  o added callback support for plan9
@@ -70,14 +112,14 @@ bindings:
70
112
 
71
113
  Version 0.7 (2012/01/02)
72
114
  architecture:
73
- o added subproject: portasm - portable (GNU AS,+Apple and MASM) assembly framework
115
+ o added subproject: portasm - portable (GNU AS,+Apple and MASM) assembly framework
74
116
  o added subproject: autovar - predefined macro framework (was dyncall_macros.h)
75
- o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
76
- o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
77
117
  o added support for Solaris and SunPro compiler for i386, x86_64, sparc and sparc64
78
118
  o improved auto-detection via preprocessor defines
79
119
  dyncall updates:
80
120
  o uses portasm (GNU,Apple,Microsoft) common sources for x86,x64,ppc32,arm32_arm
121
+ o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
122
+ o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
81
123
  o bug fixes for x64/win64 calling convention
82
124
  o added support for mingw32-w64 on x64
83
125
  o improved cdecl x86 calling convention: stack always 16 byte aligned
@@ -104,8 +146,8 @@ dynload updates:
104
146
  o no dependencies to libdyncall sources.
105
147
  buildsys additions:
106
148
  o added zero-config (BSD,GNU,SUN) make files (Makefile.embedded)
107
- o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic')
108
- o added bootstrap lua script (download/build)
149
+ o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic)
150
+ o added bootstrap lua script (download/build)
109
151
  o Nmakefile: more tests included (resolve_self)
110
152
  o improved cross-compilation for iOS (upgrade to 4.3 sdk)
111
153
  o darwin 8.0 support
@@ -127,13 +169,13 @@ buildsys/cmake updates:
127
169
  o added experimental 'dynMake' portable make-based build-system (not stable, yet)
128
170
  documentation updates:
129
171
  o added dyncallback documentation
130
- o updated dyncall documentation
172
+ o updated dyncall documentation
131
173
  o minor updates
132
174
  tests:
133
175
  o added flexible test suite for calls (call_suite) based on Lua and C
134
176
  o added syscall test
135
177
  o updates to resolve-self test (adding additional link flags to export symbols)
136
- o improved dir name portability (renamed plain_c++ -> plain_cxx)
178
+ o improved dir name portability (renamed plain_c++ -> plain_cxx)
137
179
  o renamed *.cpp -> *.cc files (OpenBSD/Sun make has no implicit rules for cpp)
138
180
 
139
181
  Version 0.6 (2010/09/25)
@@ -141,17 +183,17 @@ building:
141
183
  o new build systems: CMake and Plan9's mk
142
184
  o buildsys/gmake tool chain update: pcc and iphone sdk
143
185
  o x64 bugfix: added "-fPIC" even for static libs
144
- dynload updates:
186
+ dynload updates:
145
187
  o enum symbols update: Mach-O and Win64 (thanks Olivier)
146
188
  o numerous convenience changes to dynload interface (thanks Olivier)
147
189
  o added support for resolving application images itself
148
190
  dyncall updates:
149
191
  o new platform support: arm/iphone (armv6), x86/Plan9
150
- o new mips calling conventions: oabi, n64 (both endian models)
192
+ o new MIPS calling conventions: o32, n64 (both endian models)
151
193
  o cleanup: unexported functions in MASM files, b/c export not needed (thanks Olivier)
152
194
  o interface update: added error reporting facility 'dcGetError'
153
195
  o bugfix for ppc32/sysv: ellipsis calls were broken
154
- o interface update: added new abstract mode for ellipsis calls (DC_CALL_C_ELLIPSIS)
196
+ o interface update: added new abstract mode for ellipsis calls (DC_CALL_C_ELLIPSIS)
155
197
  docs:
156
198
  o comprehensive update
157
199
  tests:
@@ -174,14 +216,13 @@ Version 0.4 (2009/07/06)
174
216
  o fixed nmake buildfiles and configure.bat (were out of date and wrong)
175
217
  o test suite clean up (GNUmake, BSDmake):
176
218
  target "config" modified, phony without dependencies to other builds
177
- o bugfix: GNU fastcall calling convention for float and double arguments
178
- was wrong. no skip of register.
219
+ o bugfix: GNU fastcall calling convention for float and double arguments was wrong (no skip of register)
179
220
  o update: x86win32* suite tests are built on cygwin now, added total result output
180
221
  o signature types change:
181
222
  C Strings: 'S' -> 'Z'
182
223
  long: 'l' -> 'j'
183
224
  long long: 'L' -> 'l'
184
- added unsigned integer type signature characters: upper case encoding
225
+ added unsigned integer type signature characters: upper case encoding
185
226
  o added: callbacks component (support only for some platforms ATM)
186
227
  o added: test cases for alloc_wx, thunk
187
228
  o updated Documentation
@@ -1,7 +1,7 @@
1
1
  If not stated otherwise inside a file, all files here are distributed in
2
2
  terms of:
3
3
 
4
- Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
4
+ Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
5
5
  Tassilo Philipp <tphilipp@potion-studios.com>
6
6
 
7
7
  Permission to use, copy, modify, and distribute this software for any
@@ -33,4 +33,6 @@ run-tests: all
33
33
  distclean: clean
34
34
  rm -f Makefile.config
35
35
  find . -type f -name "Makefile.generic" | sed s/\.generic$$// | xargs rm
36
+ show-compiler-predefs:
37
+ ${CC} ${CFLAGS} -dM -E - < /dev/null
36
38
 
@@ -1,24 +1,50 @@
1
- 1.0:
1
+ 1.1:
2
2
  ----
3
+ - ./configure on macOS does not pass CFLAGS etc.. to Makefile.config
4
+ - support platforms without shared libraries so they can be built by just typing `./configure;make` (e.g. minix < 3.2.1)
5
+ * also make sure minix with shared library support builds and works in general (>= 3.2.1) as well as ELF on Minix (>= 3.2.0) to begin with (as that's the base, and we only test on 3.1.8 so far)
6
+ - dyncall supports calls to functions where prototype exists (with and without varargs); however not when no
7
+ prototype exist (e.g. just calling some pointer), without any declaration... even possible in C, as one has
8
+ to cast to the function type? need to support?
9
+
10
+
11
+ - dyncallback's "stack_cleanup" can be removed from non x86 impls... test if they still work
12
+ - target a minimum c version, for use with -pedantic, etc.? Right now we use e.g. extensions
13
+ for anon structs, etc.
14
+ - the CallVM-free functions are per VTable, however the latter can be changed out
15
+ at runtime... which basically changes potentially the deallocator...
16
+ same goes for functions setting the mode. think about how to make this safer - currently
17
+ we have a higher flexibility and we need to potentially clean up from the mode we are in,
18
+ however, this is open to misuse
19
+ - check all vararg calling conv implementations if they promote correctly
20
+ (e.g. float to double); we used to not care as it was the user's job to
21
+ think of that, but we allow users to use ArgFloat, etc. on "..." now,
22
+ taking care of the promotion; so it should be consistent all across the
23
+ implementations -> also write testcode specifically for that
3
24
  - autovar was never really pushed all the way through and still plays second
4
25
  fiddle to dyncall_macros.h, clean this all up, eventually (Tassilo: for now, I
5
26
  removed out of sync files to avoid confusion; but still probably duped code)
6
- - ppc32 callback fixes on bsd
7
- - make install should install manpages
27
+ - add portable "make install"
28
+ * make install should also install manpages
8
29
  - mailing list announcements (html email?)
9
30
  - fix for NDS:
10
- * ARM:
11
- - callback_plain retval wrong (not only platform)
12
- * THUMB:
13
- - ellipsis (might be test itself, not respecting fixed part of args)
14
- - callback_plain retval
15
- - callf
16
- - fix Minix/x86 callbacks (see callback_suite)
17
- - armhf ellipsis: fix weirdness with long long as first ... arg
18
- - add portable "make install"
31
+ * ARM:
32
+ - callback_plain retval wrong (not only platform), area on stack where
33
+ it's stored is probably not zeroed, so half-words, etc., come with garbage
34
+ * THUMB:
35
+ - ellipsis (might be test itself, not respecting fixed part of args)
36
+ - callback_plain retval, see above under ARM
37
+ - callf
19
38
  - support Solaris11 CFLAGS with -D_FILE_OFFSET_BITS=64
20
- - make sure selinux works (esp. regarding NX bits, asm might need (or similar): .section .note.GNU-stack,"",@progbits)
39
+ - make sure selinux works (esp. regarding NX bits)
21
40
  Daniel has a patch for it, if needed, implementing allocwx with two memory blocks, one for w^x, mmaped to one for r|x
41
+ - support /SAFESEH on cl/win32
42
+ - test code functions should be in .so files, optionally, so the suites can directly
43
+ be used to test dycnall bindings
44
+ - pkg-config support?
45
+ - quadmath support (long double)
46
+ - add tests using alloca(), as this might depend on the frame pointer being correctly
47
+ set; we don't check for this, currently, at all
22
48
 
23
49
  portasm:
24
50
  --------
@@ -26,19 +52,36 @@ portasm:
26
52
 
27
53
  dyncall:
28
54
  --------
55
+ - merge arm32_thumb_{gas/apple} and include thumb support for portasm
56
+ - x64 verification: return values are passed via RAX and RDX, and XMM0 and XMM1.
57
+ - find big endian arm box (also hardfloat), e.g. cubietruck: http://blog.netbsd.org/tnf/entry/working_arm_multiprocessor_support
58
+ - test if armhf/thumb is actually working... pulls in arm mode code in dyncall_callvm.c
59
+ - dyncall_call_mips_n32.h and dyncall_call_mips_n64.h are pretty much the same, share code
29
60
  - support for return values: aggregate return values
30
61
  - support for argument values: structures, half-precision, vector types, long double
31
- - varargs for mips (might exist, but test all ABIs)
62
+ * make sure that struct support for ellipsis calls are not forgotten (copy everything by value)
32
63
  - consider automatic type-promotion for arguments passed through DC_CALL_C_ELLIPSIS_VARARGS;
33
64
  this would make it easier to just pass arguments instead of having to know about the C
34
- type promotions
65
+ type promotions (this is partly done, see todo-item above under 1.1)
35
66
  - syscalls for x64
36
67
  * bsd
37
68
  * linux
38
69
  - other syscalls
70
+ - MIPS32 softfloat support (-msoft-float)
71
+ - test MIPS32 eabi big endian (current port works on psp, which is little endian)
72
+ - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and
73
+ EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter)
74
+ - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian
75
+ - support for Minix/arm
76
+ - improve ellipsis test:
77
+ * test not just with one fixed arg, to also simulate alignment problems
78
+ * test return values
79
+ * convert from c++ to c, to have it also on plan9, and more portability
39
80
 
40
81
  dynload:
41
82
  --------
83
+ - RTLD_LAZY in darwin, why not in unix?
84
+ - dlGetLibraryPath: dl_iterate_phdr() used on OpenBSD, but not available on version < 3.7
42
85
  - bug: test/nm crashes on qemu mips linux o32 debian etch
43
86
  - test/resolve_self crashes/asserts on windows and bsds
44
87
  - rename SymsInit to InitSyms and similar for cleanup function to reflect naming
@@ -46,24 +89,44 @@ dynload:
46
89
  - get rid of Dl_info and friends (_GNU_SOURCE) in dynload/dynload_syms_elf.c
47
90
  for implementation of dlSymsNameFromValue(..)
48
91
  - check if PSP can support dynload (missing elf.h, dlfcn.h, etc.); fixup readme if successful
92
+ - some functionality like java's System.mapLibraryName('name') might be helpful?
93
+ - Failed On Open Solaris 11:
94
+ In file included from dynload_syms.c:28:
95
+ dynload_syms_elf.c:56: error: syntax error before "Elf_Dyn"
96
+ dynload_syms_elf.c:56: warning: data definition has no type or storage class
97
+ dynload_syms_elf.c: In function `dlSymsInit':
98
+ dynload_syms_elf.c:155: error: `pDyn' undeclared (first use in this function)
99
+ dynload_syms_elf.c:155: error: (Each undeclared identifier is reported only once
100
+ dynload_syms_elf.c:155: error: for each function it appears in.)
101
+ dynload_syms_elf.c:155: error: syntax error before ')' token
102
+ dynload_syms_elf.c:160: error: `DT_NULL' undeclared (first use in this function)
103
+ dynload_syms_elf.c:163: error: `DT_STRTAB' undeclared (first use in this function)
104
+ dynload_syms_elf.c:164: error: `DT_SYMTAB' undeclared (first use in this function)
105
+ dynload_syms_elf.c:165: error: `DT_HASH' undeclared (first use in this function)
106
+ make: *** [dynload_syms.o] Error 1
49
107
 
50
108
  dyncallback:
51
109
  ------------
52
- - callback_plain's return value not correct anymore on NDS (maybe just broken testcode?)
53
- - add MIPS callbacks for eabi, n32, o32 (thunks are working)
110
+ - callback_plain's return value not correct anymore on NDS (maybe just broken testcode?),
111
+ see above under 1.1 items
112
+ * check other platforms also, if asm stub initializes retval space, correctly
54
113
  - finish PPC32 callbacks (see bugs section, below, BSD not working)
114
+ - MIPS32 softfloat support (-msoft-float)
115
+ - test MIPS32 eabi big endian (current port works on psp, which is little endian)
116
+ - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and
117
+ EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter)
118
+ - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian
119
+ - support for Minix/arm
55
120
 
56
121
  bindings:
57
122
  ---------
58
123
  - release bindings as standalone packages (already done for rbdc as a gem and rdyncall on cran)
59
124
  * add note to documentation, where bindings are and that some bindings are svn-only ATM
60
125
  - add rdoc documentation to ruby gem
61
- - bring python up to latest
62
126
  - add pydoc for python
63
127
  - add manpage for shdc
64
128
  - expose callf-convenience functions to go
65
129
  - add godoc for godc
66
- - bring java up to latest
67
130
  - add javadoc to java
68
131
  - add more bindings
69
132
  - add callback support for erlang, go, java, lua, python and ruby (and shell? how?)
@@ -71,14 +134,20 @@ bindings:
71
134
 
72
135
  manual:
73
136
  -------
74
- - finish tex4ht manual generation (use \ifhtml and \ifnhtml, ...)
137
+ - introduce doc overview tables and common vocab for calling convention specifics, following example of table on page 13 of https://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf; also as inspiration, e.g. user 'preserved' instead of 'permanent', etc. https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html#//apple_ref/doc/uid/TP40009021-SW4
138
+ - make stack layout diagrams better, e.g. add grow direction (example: https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/art/arm_stack.jpg on https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html#//apple_ref/doc/uid/TP40009021-SW1)
139
+ - callconv diagrams:
140
+ * good idea to review it all, anyways, if the calling conventions are actually
141
+ represented correctly (and if they are in sync with the .pdf, we used to have
142
+ problems with multirow.4ht)
75
143
  - provide more examples on how to use dyncall, dynload and dyncallback
76
144
  * e.g. enhance manual with a couple of examples (e.g. calling MessageBoxA on windows, etc.)
77
145
  - manuals for bindings (as stated in bindings-section, above)
146
+ - under "dyncall support", in each calling convention appendix, list crucial details of e.g. big/little endian support, etc.
147
+ - specify integer models in use, use common ILP32, LLP64, etc. terms
78
148
 
79
- urgent issues:
80
- --------------
81
- - finish SPARC/SPARC64 calling conventions in doc's callconv-appendix !!!
149
+ regressions:
150
+ ------------
82
151
  - Haiku/gmake build doesn't build dynload due to the fact, that elf.h is not found
83
152
  on default installations (one has to install the system headers)
84
153
  * add to doc
@@ -97,10 +166,9 @@ nice to have:
97
166
 
98
167
  bugs:
99
168
  -----
100
- - callconv set specifically for platform that has only one (default) excepts for some
169
+ - setting callconv, specifically for platforms that have only one (default)) excepts on some
101
170
  platforms, eg. setting X64_sysv on amd64/Linux - keeping cdecl which is the same in
102
- this case, works
103
- - callbacks on ppc32 only work on linux and apple (osx abi), but not BSD
171
+ this case, works (this should work now...)
104
172
  - vararg function calls don't work for ARM THUMB mode (Daniel's new interface for modesetting for varag
105
173
  args should be used); adapt test/ellipsis and/or retest
106
174
 
@@ -108,11 +176,13 @@ missing implementations (descending priority):
108
176
  ----------------------------------------------
109
177
  - riscv
110
178
  - itanium
179
+ - superh/j-core
111
180
  - 68k, 88k, 6502, etc.
181
+ - arc
112
182
  - alpha
113
- - superh
114
183
  - cell
115
184
  - blackfin
185
+ - seaforth
116
186
  - s/390
117
187
  - z80
118
188
  - hppa
@@ -120,6 +190,4 @@ missing implementations (descending priority):
120
190
  - atmel avr
121
191
  - propeller
122
192
  - amd29k
123
- - arc
124
- - seaforth
125
193