rbdc 0.8.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 (266) hide show
  1. data/bindings/ruby/rbdc/extconf.rb +57 -0
  2. data/bindings/ruby/rbdc/rbdc.c +304 -0
  3. data/dyncall/AUTHORS +4 -0
  4. data/dyncall/BUGS +3 -0
  5. data/dyncall/CMakeLists.txt +79 -0
  6. data/dyncall/ChangeLog +165 -0
  7. data/dyncall/LICENSE +15 -0
  8. data/dyncall/Makefile.M +15 -0
  9. data/dyncall/Makefile.embedded +71 -0
  10. data/dyncall/Makefile.generic +36 -0
  11. data/dyncall/Nmakefile +45 -0
  12. data/dyncall/README +92 -0
  13. data/dyncall/ToDo +114 -0
  14. data/dyncall/autovar/LICENSE.txt +15 -0
  15. data/dyncall/autovar/README.txt +69 -0
  16. data/dyncall/autovar/autovar_ABI.h +44 -0
  17. data/dyncall/autovar/autovar_ARCH.h +56 -0
  18. data/dyncall/autovar/autovar_CC.h +46 -0
  19. data/dyncall/autovar/autovar_OS.h +78 -0
  20. data/dyncall/autovar/autovar_OSFAMILY.h +39 -0
  21. data/dyncall/buildsys/cmake/Modules/FindDynCall.cmake +43 -0
  22. data/dyncall/buildsys/cmake/Modules/FindDynCallback.cmake +43 -0
  23. data/dyncall/buildsys/cmake/Modules/FindDynLoad.cmake +45 -0
  24. data/dyncall/buildsys/cmake/Modules/UseLATEX.cmake +811 -0
  25. data/dyncall/buildsys/dynmake/Makefile.base.M +82 -0
  26. data/dyncall/buildsys/dynmake/dynmake.bat +2 -0
  27. data/dyncall/buildsys/dynmake/dynmake.sh +4 -0
  28. data/dyncall/buildsys/lua/Makefile +10 -0
  29. data/dyncall/buildsys/lua/README.txt +4 -0
  30. data/dyncall/buildsys/lua/bootstrap.sh +34 -0
  31. data/dyncall/buildsys/lua/cleanup.sh +6 -0
  32. data/dyncall/buildsys/lua/mkfile +34 -0
  33. data/dyncall/buildsys/lua/setenv.sh +4 -0
  34. data/dyncall/buildsys/mk/app.mk +30 -0
  35. data/dyncall/buildsys/mk/dirs.mk +27 -0
  36. data/dyncall/buildsys/mk/epilog.mk +30 -0
  37. data/dyncall/buildsys/mk/lib.mk +23 -0
  38. data/dyncall/buildsys/mk/pcc.mk +60 -0
  39. data/dyncall/buildsys/mk/prolog.mk +35 -0
  40. data/dyncall/buildsys/nmake/common.nmake +61 -0
  41. data/dyncall/buildsys/nmake/epilog.nmake +28 -0
  42. data/dyncall/buildsys/nmake/prolog.nmake +76 -0
  43. data/dyncall/buildsys/nmake/tool_gcc.nmake +82 -0
  44. data/dyncall/buildsys/nmake/tool_msvc.nmake +67 -0
  45. data/dyncall/buildsys/scripts/batch-build-linux.sh +11 -0
  46. data/dyncall/buildsys/scripts/batch-build-minix.sh +11 -0
  47. data/dyncall/buildsys/scripts/batch-build-psp.sh +11 -0
  48. data/dyncall/buildsys/scripts/conf-nds.bat +41 -0
  49. data/dyncall/buildsys/scripts/setenv-cross-ios.sh +8 -0
  50. data/dyncall/buildsys/scripts/setenv-sdk-ios.sh +22 -0
  51. data/dyncall/buildsys/vs2005/dyncall/dyncall.vcproj +245 -0
  52. data/dyncall/buildsys/vs2005/test_plain/test_plain.vcproj +202 -0
  53. data/dyncall/buildsys/vs2005/vs2005.sln +29 -0
  54. data/dyncall/configure +152 -0
  55. data/dyncall/configure.bat +157 -0
  56. data/dyncall/configure.rc +234 -0
  57. data/dyncall/dynMakefile +4 -0
  58. data/dyncall/dyncall/CMakeLists.txt +53 -0
  59. data/dyncall/dyncall/DynCallConfig.cmake +3 -0
  60. data/dyncall/dyncall/Makefile.M +10 -0
  61. data/dyncall/dyncall/Makefile.embedded +20 -0
  62. data/dyncall/dyncall/Makefile.generic +16 -0
  63. data/dyncall/dyncall/Nmakefile +62 -0
  64. data/dyncall/dyncall/README-Developer.txt +45 -0
  65. data/dyncall/dyncall/README.txt +65 -0
  66. data/dyncall/dyncall/TODO +9 -0
  67. data/dyncall/dyncall/dynMakefile +4 -0
  68. data/dyncall/dyncall/dyncall.3 +189 -0
  69. data/dyncall/dyncall/dyncall.h +135 -0
  70. data/dyncall/dyncall/dyncall_alloc.h +40 -0
  71. data/dyncall/dyncall/dyncall_api.c +167 -0
  72. data/dyncall/dyncall/dyncall_call.S +72 -0
  73. data/dyncall/dyncall/dyncall_call_arm32_arm.S +80 -0
  74. data/dyncall/dyncall/dyncall_call_arm32_arm.h +61 -0
  75. data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.S +96 -0
  76. data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.h +44 -0
  77. data/dyncall/dyncall/dyncall_call_arm32_thumb.h +65 -0
  78. data/dyncall/dyncall/dyncall_call_arm32_thumb_apple.s +80 -0
  79. data/dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S +121 -0
  80. data/dyncall/dyncall/dyncall_call_arm32_thumb_gas.s +101 -0
  81. data/dyncall/dyncall/dyncall_call_mips.h +50 -0
  82. data/dyncall/dyncall/dyncall_call_mips_eabi.h +61 -0
  83. data/dyncall/dyncall/dyncall_call_mips_eabi_gas.s +115 -0
  84. data/dyncall/dyncall/dyncall_call_mips_gas.S +36 -0
  85. data/dyncall/dyncall/dyncall_call_mips_n32.h +67 -0
  86. data/dyncall/dyncall/dyncall_call_mips_n32_gas.s +192 -0
  87. data/dyncall/dyncall/dyncall_call_mips_n64.h +67 -0
  88. data/dyncall/dyncall/dyncall_call_mips_n64_gas.s +192 -0
  89. data/dyncall/dyncall/dyncall_call_mips_o32.h +70 -0
  90. data/dyncall/dyncall/dyncall_call_mips_o32_gas.s +109 -0
  91. data/dyncall/dyncall/dyncall_call_ppc32.S +266 -0
  92. data/dyncall/dyncall/dyncall_call_ppc32.h +62 -0
  93. data/dyncall/dyncall/dyncall_call_sparc.S +192 -0
  94. data/dyncall/dyncall/dyncall_call_sparc.h +42 -0
  95. data/dyncall/dyncall/dyncall_call_sparc64.S +361 -0
  96. data/dyncall/dyncall/dyncall_call_sparc64.h +42 -0
  97. data/dyncall/dyncall/dyncall_call_sparc_v9.S +220 -0
  98. data/dyncall/dyncall/dyncall_call_sparc_v9.h +42 -0
  99. data/dyncall/dyncall/dyncall_call_x64-att.S +146 -0
  100. data/dyncall/dyncall/dyncall_call_x64.S +149 -0
  101. data/dyncall/dyncall/dyncall_call_x64.h +63 -0
  102. data/dyncall/dyncall/dyncall_call_x64_generic_masm.asm +70 -0
  103. data/dyncall/dyncall/dyncall_call_x86.S +238 -0
  104. data/dyncall/dyncall/dyncall_call_x86.h +70 -0
  105. data/dyncall/dyncall/dyncall_call_x86_8a.s +127 -0
  106. data/dyncall/dyncall/dyncall_call_x86_generic_masm.asm +136 -0
  107. data/dyncall/dyncall/dyncall_call_x86_nasm.asm +234 -0
  108. data/dyncall/dyncall/dyncall_callf.c +112 -0
  109. data/dyncall/dyncall/dyncall_callf.h +52 -0
  110. data/dyncall/dyncall/dyncall_callvm.c +68 -0
  111. data/dyncall/dyncall/dyncall_callvm.h +88 -0
  112. data/dyncall/dyncall/dyncall_callvm_arm32_arm.c +250 -0
  113. data/dyncall/dyncall/dyncall_callvm_arm32_arm.h +59 -0
  114. data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c +204 -0
  115. data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.h +63 -0
  116. data/dyncall/dyncall/dyncall_callvm_arm32_thumb.c +271 -0
  117. data/dyncall/dyncall/dyncall_callvm_arm32_thumb.h +59 -0
  118. data/dyncall/dyncall/dyncall_callvm_base.c +33 -0
  119. data/dyncall/dyncall/dyncall_callvm_mips.c +40 -0
  120. data/dyncall/dyncall/dyncall_callvm_mips.h +37 -0
  121. data/dyncall/dyncall/dyncall_callvm_mips_eabi.c +181 -0
  122. data/dyncall/dyncall/dyncall_callvm_mips_eabi.h +61 -0
  123. data/dyncall/dyncall/dyncall_callvm_mips_n32.c +268 -0
  124. data/dyncall/dyncall/dyncall_callvm_mips_n64.c +268 -0
  125. data/dyncall/dyncall/dyncall_callvm_mips_n64.h +53 -0
  126. data/dyncall/dyncall/dyncall_callvm_mips_o32.c +235 -0
  127. data/dyncall/dyncall/dyncall_callvm_mips_o32.h +45 -0
  128. data/dyncall/dyncall/dyncall_callvm_ppc32.c +372 -0
  129. data/dyncall/dyncall/dyncall_callvm_ppc32.h +61 -0
  130. data/dyncall/dyncall/dyncall_callvm_sparc.c +155 -0
  131. data/dyncall/dyncall/dyncall_callvm_sparc.h +44 -0
  132. data/dyncall/dyncall/dyncall_callvm_sparc64.c +239 -0
  133. data/dyncall/dyncall/dyncall_callvm_sparc64.h +47 -0
  134. data/dyncall/dyncall/dyncall_callvm_sparc_v9.c +182 -0
  135. data/dyncall/dyncall/dyncall_callvm_sparc_v9.h +45 -0
  136. data/dyncall/dyncall/dyncall_callvm_x64.c +228 -0
  137. data/dyncall/dyncall/dyncall_callvm_x64.h +111 -0
  138. data/dyncall/dyncall/dyncall_callvm_x86.c +667 -0
  139. data/dyncall/dyncall/dyncall_callvm_x86.h +75 -0
  140. data/dyncall/dyncall/dyncall_config.h +46 -0
  141. data/dyncall/dyncall/dyncall_macros.h +248 -0
  142. data/dyncall/dyncall/dyncall_signature.h +71 -0
  143. data/dyncall/dyncall/dyncall_struct.c +255 -0
  144. data/dyncall/dyncall/dyncall_struct.h +69 -0
  145. data/dyncall/dyncall/dyncall_types.h +74 -0
  146. data/dyncall/dyncall/dyncall_utils.h +38 -0
  147. data/dyncall/dyncall/dyncall_value.h +73 -0
  148. data/dyncall/dyncall/dyncall_vector.c +52 -0
  149. data/dyncall/dyncall/dyncall_vector.h +56 -0
  150. data/dyncall/dyncall/gen-masm.sh +7 -0
  151. data/dyncall/dyncall/mkfile +29 -0
  152. data/dyncall/dyncallback/CMakeLists.txt +55 -0
  153. data/dyncall/dyncallback/DynCallbackConfig.cmake +2 -0
  154. data/dyncall/dyncallback/Makefile.M +10 -0
  155. data/dyncall/dyncallback/Makefile.embedded +15 -0
  156. data/dyncall/dyncallback/Makefile.generic +20 -0
  157. data/dyncall/dyncallback/Nmakefile +71 -0
  158. data/dyncall/dyncallback/README.txt +9 -0
  159. data/dyncall/dyncallback/TODO +4 -0
  160. data/dyncall/dyncallback/dynMakefile +4 -0
  161. data/dyncall/dyncallback/dyncall_alloc_wx.c +35 -0
  162. data/dyncall/dyncallback/dyncall_alloc_wx.h +46 -0
  163. data/dyncall/dyncallback/dyncall_alloc_wx_malloc.c +40 -0
  164. data/dyncall/dyncallback/dyncall_alloc_wx_mmap.c +42 -0
  165. data/dyncall/dyncallback/dyncall_alloc_wx_win32.c +42 -0
  166. data/dyncall/dyncallback/dyncall_args.c +45 -0
  167. data/dyncall/dyncallback/dyncall_args.h +65 -0
  168. data/dyncall/dyncallback/dyncall_args_arm32_arm.c +112 -0
  169. data/dyncall/dyncallback/dyncall_args_arm32_arm.h +40 -0
  170. data/dyncall/dyncallback/dyncall_args_arm32_thumb.c +29 -0
  171. data/dyncall/dyncallback/dyncall_args_arm32_thumb.h +32 -0
  172. data/dyncall/dyncallback/dyncall_args_mips.c +81 -0
  173. data/dyncall/dyncallback/dyncall_args_mips.h +41 -0
  174. data/dyncall/dyncallback/dyncall_args_ppc32.c +88 -0
  175. data/dyncall/dyncallback/dyncall_args_ppc32.h +41 -0
  176. data/dyncall/dyncallback/dyncall_args_sparc32.c +41 -0
  177. data/dyncall/dyncallback/dyncall_args_sparc32.h +37 -0
  178. data/dyncall/dyncallback/dyncall_args_sparc64.c +41 -0
  179. data/dyncall/dyncallback/dyncall_args_sparc64.h +37 -0
  180. data/dyncall/dyncallback/dyncall_args_x64.c +73 -0
  181. data/dyncall/dyncallback/dyncall_args_x64.h +44 -0
  182. data/dyncall/dyncallback/dyncall_args_x86.c +121 -0
  183. data/dyncall/dyncallback/dyncall_args_x86.h +58 -0
  184. data/dyncall/dyncallback/dyncall_callback.c +45 -0
  185. data/dyncall/dyncallback/dyncall_callback.h +51 -0
  186. data/dyncall/dyncallback/dyncall_callback_arch.S +71 -0
  187. data/dyncall/dyncallback/dyncall_callback_arm32_arm.c +63 -0
  188. data/dyncall/dyncallback/dyncall_callback_arm32_arm.h +45 -0
  189. data/dyncall/dyncallback/dyncall_callback_arm32_arm_apple.s +73 -0
  190. data/dyncall/dyncallback/dyncall_callback_arm32_arm_gas.s +73 -0
  191. data/dyncall/dyncallback/dyncall_callback_arm32_thumb.c +29 -0
  192. data/dyncall/dyncallback/dyncall_callback_arm32_thumb.h +33 -0
  193. data/dyncall/dyncallback/dyncall_callback_arm32_thumb_apple.s +32 -0
  194. data/dyncall/dyncallback/dyncall_callback_arm32_thumb_gas.s +32 -0
  195. data/dyncall/dyncallback/dyncall_callback_mips.c +61 -0
  196. data/dyncall/dyncallback/dyncall_callback_mips.h +42 -0
  197. data/dyncall/dyncallback/dyncall_callback_ppc32.S +33 -0
  198. data/dyncall/dyncallback/dyncall_callback_ppc32.c +60 -0
  199. data/dyncall/dyncallback/dyncall_callback_ppc32.h +43 -0
  200. data/dyncall/dyncallback/dyncall_callback_ppc32_apple.s +180 -0
  201. data/dyncall/dyncallback/dyncall_callback_sparc32.c +57 -0
  202. data/dyncall/dyncallback/dyncall_callback_sparc32.h +43 -0
  203. data/dyncall/dyncallback/dyncall_callback_sparc32.s +30 -0
  204. data/dyncall/dyncallback/dyncall_callback_sparc64.c +57 -0
  205. data/dyncall/dyncallback/dyncall_callback_sparc64.s +30 -0
  206. data/dyncall/dyncallback/dyncall_callback_x64.S +187 -0
  207. data/dyncall/dyncallback/dyncall_callback_x64.c +69 -0
  208. data/dyncall/dyncallback/dyncall_callback_x64.h +44 -0
  209. data/dyncall/dyncallback/dyncall_callback_x64_apple.s +122 -0
  210. data/dyncall/dyncallback/dyncall_callback_x64_gas.s +119 -0
  211. data/dyncall/dyncallback/dyncall_callback_x64_gas_w64.s +102 -0
  212. data/dyncall/dyncallback/dyncall_callback_x64_masm.asm +89 -0
  213. data/dyncall/dyncallback/dyncall_callback_x86.S +115 -0
  214. data/dyncall/dyncallback/dyncall_callback_x86.c +281 -0
  215. data/dyncall/dyncallback/dyncall_callback_x86.h +49 -0
  216. data/dyncall/dyncallback/dyncall_callback_x86_8a.s +100 -0
  217. data/dyncall/dyncallback/dyncall_callback_x86_masm.asm +74 -0
  218. data/dyncall/dyncallback/dyncall_thunk.c +47 -0
  219. data/dyncall/dyncallback/dyncall_thunk.h +84 -0
  220. data/dyncall/dyncallback/dyncall_thunk_arm32_arm.c +45 -0
  221. data/dyncall/dyncallback/dyncall_thunk_arm32_arm.h +40 -0
  222. data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.c +29 -0
  223. data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.h +35 -0
  224. data/dyncall/dyncallback/dyncall_thunk_mips.c +52 -0
  225. data/dyncall/dyncallback/dyncall_thunk_mips.h +37 -0
  226. data/dyncall/dyncallback/dyncall_thunk_ppc32.c +51 -0
  227. data/dyncall/dyncallback/dyncall_thunk_ppc32.h +40 -0
  228. data/dyncall/dyncallback/dyncall_thunk_sparc32.c +32 -0
  229. data/dyncall/dyncallback/dyncall_thunk_sparc32.h +36 -0
  230. data/dyncall/dyncallback/dyncall_thunk_sparc64.c +32 -0
  231. data/dyncall/dyncallback/dyncall_thunk_sparc64.h +36 -0
  232. data/dyncall/dyncallback/dyncall_thunk_x64.c +48 -0
  233. data/dyncall/dyncallback/dyncall_thunk_x64.h +39 -0
  234. data/dyncall/dyncallback/dyncall_thunk_x86.c +44 -0
  235. data/dyncall/dyncallback/dyncall_thunk_x86.h +39 -0
  236. data/dyncall/dyncallback/dyncallback.3 +134 -0
  237. data/dyncall/dyncallback/gen-masm.sh +8 -0
  238. data/dyncall/dyncallback/mkfile +29 -0
  239. data/dyncall/dynload/CMakeLists.txt +25 -0
  240. data/dyncall/dynload/DynLoadConfig.cmake +3 -0
  241. data/dyncall/dynload/Makefile.M +10 -0
  242. data/dyncall/dynload/Makefile.embedded +22 -0
  243. data/dyncall/dynload/Makefile.generic +18 -0
  244. data/dyncall/dynload/Nmakefile +57 -0
  245. data/dyncall/dynload/README.txt +113 -0
  246. data/dyncall/dynload/TODO +20 -0
  247. data/dyncall/dynload/dynMakefile +4 -0
  248. data/dyncall/dynload/dynload.3 +64 -0
  249. data/dyncall/dynload/dynload.c +38 -0
  250. data/dyncall/dynload/dynload.h +65 -0
  251. data/dyncall/dynload/dynload_alloc.h +40 -0
  252. data/dyncall/dynload/dynload_darwin.c +89 -0
  253. data/dyncall/dynload/dynload_syms.c +38 -0
  254. data/dyncall/dynload/dynload_syms_elf.c +214 -0
  255. data/dyncall/dynload/dynload_syms_mach-o.c +167 -0
  256. data/dyncall/dynload/dynload_syms_pe.c +109 -0
  257. data/dyncall/dynload/dynload_unix.c +57 -0
  258. data/dyncall/dynload/dynload_windows.c +59 -0
  259. data/dyncall/mkfile +36 -0
  260. data/dyncall/portasm/README.txt +42 -0
  261. data/dyncall/portasm/gen-masm.sh +3 -0
  262. data/dyncall/portasm/portasm-arm.S +36 -0
  263. data/dyncall/portasm/portasm-ppc.S +98 -0
  264. data/dyncall/portasm/portasm-x64-att.S +155 -0
  265. data/dyncall/portasm/portasm-x86.S +127 -0
  266. metadata +311 -0
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ # Uses portasm to generates MASM sources for intel platforms.
4
+ printf "; auto-generated by `basename $0`\r\n" >dyncall_callback_x86_masm.asm
5
+ printf "; auto-generated by `basename $0`\r\n" >dyncall_callback_x64_masm.asm
6
+ gcc -E -P -DGEN_MASM dyncall_callback_x86.S | awk '{printf "%s\r\n", $0}' >> dyncall_callback_x86_masm.asm
7
+ gcc -E -P -DGEN_MASM dyncall_callback_x64.S | awk '{printf "%s\r\n", $0}' >> dyncall_callback_x64_masm.asm
8
+
@@ -0,0 +1,29 @@
1
+ #//////////////////////////////////////////////////////////////////////////////
2
+ #
3
+ # Copyright (c) 2013 Daniel Adler <dadler@uni-goettingen.de>,
4
+ # Tassilo Philipp <tphilipp@potion-studios.com>
5
+ #
6
+ # Permission to use, copy, modify, and distribute this software for any
7
+ # purpose with or without fee is hereby granted, provided that the above
8
+ # copyright notice and this permission notice appear in all copies.
9
+ #
10
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
+ #
18
+ #//////////////////////////////////////////////////////////////////////////////
19
+
20
+
21
+ TOP = ..
22
+ <$TOP/buildsys/mk/prolog.mk
23
+
24
+
25
+ LIBRARY = dyncallback
26
+ UNITS = $UNITS dyncall_alloc_wx dyncall_args dyncall_callback dyncall_callback_arch dyncall_thunk
27
+
28
+
29
+ <$TOP/buildsys/mk/epilog.mk
@@ -0,0 +1,25 @@
1
+ # Package: dyncall
2
+ # File: dynload/CMakeLists.txt
3
+ # Description: DynLoad library cmake files
4
+ # License:
5
+ #
6
+ # Copyright (c) 2010 Daniel Adler <dadler@uni-goettingen.de>
7
+ #
8
+ # Permission to use, copy, modify, and distribute this software for any
9
+ # purpose with or without fee is hereby granted, provided that the above
10
+ # copyright notice and this permission notice appear in all copies.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
+ #
20
+
21
+ add_library(dynload_s STATIC dynload.c dynload_syms.c)
22
+ install(TARGETS dynload_s ARCHIVE DESTINATION lib)
23
+ install(FILES dynload.h DESTINATION include)
24
+
25
+
@@ -0,0 +1,3 @@
1
+ set(DYNLOAD_INCLUDE_DIRS ${DynCall_SOURCE_DIR}/dynload)
2
+ set(DYNLOAD_LIBRARIES dynload_s)
3
+
@@ -0,0 +1,10 @@
1
+ #include "../buildsys/dynmake/Makefile.base.M"
2
+
3
+ all: _L(dynload_s)
4
+
5
+ _L(dynload_s): _O(dynload) _O(dynload_syms)
6
+ _(AR) _(ARFLAGS) _(ARFLAG_OUT_PREFIX)_(TARGET) _(PREREQS)
7
+
8
+ clean:
9
+ _(RM) _O(*)
10
+ _(RM) _L(dynload_s)
@@ -0,0 +1,22 @@
1
+ MAKEFILE = Makefile.embedded
2
+ MAKE_CMD = ${MAKE} -f Makefile.embedded
3
+ TARGET = libdynload_s.a
4
+ OBJS = dynload.o dynload_syms.o
5
+ HEADERS = dynload.h
6
+ all: ${TARGET}
7
+ libdynload_s.a: ${OBJS}
8
+ ${AR} ${ARFLAGS} $@ ${OBJS}
9
+ clean:
10
+ rm -f ${OBJS} ${TARGET}
11
+ install: all
12
+ mkdir -p ${DESTDIR}${PREFIX}/include
13
+ cp ${HEADERS} ${DESTDIR}${PREFIX}/include
14
+ mkdir -p ${DESTDIR}${PREFIX}/lib
15
+ cp ${TARGET} ${DESTDIR}${PREFIX}/lib
16
+ .PHONY: all clean install
17
+ osx-universal:
18
+ CFLAGS="${CFLAGS} -arch i386 -arch x86_64 -arch ppc" ASFLAGS="${ASFLAGS} -arch i386 -arch x86_64 -arch ppc" AR="libtool" ARFLAGS="-static -o" ${MAKE_CMD} all
19
+ sun-64bit:
20
+ CFLAGS="${CFLAGS} -m64" ASFLAGS="${ASFLAGS} -m64" ${MAKE_CMD} all
21
+ sun-gcc:
22
+ CC=gcc CFLAGS="${CFLAGS} -fPIC" ${MAKE_CMD} all
@@ -0,0 +1,18 @@
1
+ LIBNAME = dynload
2
+ OBJS = dynload.o dynload_syms.o
3
+ HEADERS = ${VPATH}/dynload.h
4
+
5
+ LIB = lib${LIBNAME}_s.a
6
+
7
+ .PHONY: all clean install
8
+
9
+ all: ${LIB}
10
+ ${LIB}: ${OBJS}
11
+ ${AR} ${ARFLAGS} ${LIB} ${OBJS}
12
+ clean:
13
+ rm -f ${OBJS} ${LIB}
14
+ install: all
15
+ mkdir -p ${PREFIX}/lib
16
+ mkdir -p ${PREFIX}/include
17
+ cp ${LIB} ${PREFIX}/lib
18
+ cp ${HEADERS} ${PREFIX}/include
@@ -0,0 +1,57 @@
1
+ #//////////////////////////////////////////////////////////////////////////////
2
+ #
3
+ # Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>,
4
+ # Tassilo Philipp <tphilipp@potion-studios.com>
5
+ #
6
+ # Permission to use, copy, modify, and distribute this software for any
7
+ # purpose with or without fee is hereby granted, provided that the above
8
+ # copyright notice and this permission notice appear in all copies.
9
+ #
10
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
+ #
18
+ #//////////////////////////////////////////////////////////////////////////////
19
+
20
+ #///////////////////////////////////////////////////
21
+ #
22
+ # nmake makefile
23
+ # Nmakefile
24
+ #
25
+ #///////////////////////////////////////////////////
26
+
27
+
28
+ TOP=..
29
+
30
+ !INCLUDE $(TOP)\buildsys\nmake\prolog.nmake
31
+
32
+
33
+ !IF "$(BUILD_OS)" == "windows"
34
+
35
+ TARGETS = libdynload_s.lib
36
+ OBJS = dynload.obj dynload_syms.obj
37
+
38
+ $(TARGETS): $(OBJS)
39
+ echo Creating library $@ ...
40
+ lib $(ARFLAGS) /OUT:"$@" $(OBJS) > nul
41
+
42
+
43
+ !ELSE IF "$(BUILD_OS)" == "nds"
44
+
45
+ TARGETS = libdynload_s.a
46
+ OBJS = dynload_unix.o
47
+
48
+ $(TARGETS):# $(OBJS)
49
+ echo Not building dynload: There is no dynload support on this platform.
50
+ # echo Creating library $@ ...
51
+ # $(AR) -rc $(ARFLAGS) "$@" $(OBJS)
52
+
53
+ !ENDIF
54
+
55
+
56
+ !INCLUDE $(TOP)\buildsys\nmake\epilog.nmake
57
+
@@ -0,0 +1,113 @@
1
+ dynload / abstraction to run-time shared library services:
2
+
3
+ - loading/unloading into the current process
4
+ - symbol lookup
5
+ - enumerating symbol tables
6
+ - elf: support for DT_GNU_HASH
7
+
8
+
9
+ Todo:
10
+ - a.out format
11
+ - support for different kind of symbols
12
+ (exports,imports,sections,constants...)
13
+
14
+ Notes on windows pe format:
15
+
16
+ File Extension: dll
17
+
18
+ Implementation:
19
+
20
+ 1. Access to internals
21
+ The handle returned by LoadLibrary() is a pointer to the PE header
22
+ (which is a DOS header).
23
+
24
+
25
+ Notes on elf:
26
+
27
+ File Extension: so
28
+ Variants: Two core classes are defined Elf 32- and 64-bit.
29
+ Only one model is compiled in the library (the current run-time format).
30
+
31
+ Dynamic symbol table:
32
+
33
+ Symbol table layout:
34
+ 1. Index 0 in any symbol table is used to represent undefined symbols.
35
+ As such, the first entry in a symbol table (index 0) is always completely
36
+ zeroed (type STT_NOTYPE), and is not used.
37
+
38
+ 2. If the file contains any local symbols, the second entry (index 1)
39
+ the symbol table will be a STT_FILE symbol giving the name of the file.
40
+
41
+ 3. Section symbols.
42
+
43
+ 4. Register symbols.
44
+
45
+ 5. Global symbols that have been reduced to local scope via a mapfile.
46
+
47
+ 6. For each input file that supplied local symbols, a STT_FILE symbol
48
+ giving the name of the input file is put in the symbol table,
49
+ followed by the symbols in question.
50
+
51
+ 7. The global symbols immediately follow the local symbols in the
52
+ symbol table. Local and global symbols are always kept separate
53
+ in this manner, and cannot be mixed together.
54
+
55
+
56
+ Dynamic symbol table handling seem to be different among platforms.
57
+ Due to System V ABI, one get access to the dynamic symbol table through
58
+ the DT_HASH entry in "DYNAMIC" Program Header.
59
+
60
+ It does not work on x86 on a x86_64 linux 2.6 machine.
61
+
62
+ A closer look to the binaries in /usr/lib32 revealed, there are differences:
63
+
64
+ differences
65
+ - elf32 has 21 sections
66
+ - elf64 has (21 + 2) sections
67
+ ".hash"
68
+ ".eh_frame_hdr"
69
+ - elf64 has ".rela.*"
70
+ while elf32 has ".rel.*"
71
+
72
+ in common:
73
+ - both have a ".gnu.hash" section
74
+
75
+
76
+ the ".gnu.hash"
77
+
78
+
79
+ Idea: "GNU hash" method ([3])
80
+
81
+
82
+ Symbol Versioning:
83
+
84
+
85
+
86
+ OS supported prelinking:
87
+
88
+ linux has prelink
89
+ irix has quickstart
90
+ solaris has crle
91
+
92
+ sparc uses STT_REGISTER:
93
+ STT_REGISTER is
94
+ The Sparc architecture has a concept known as a "register symbol". These
95
+ symbols are used to validate symbol/register usage, and can also be
96
+ used to initialize global registers. Other architectures don't use these.
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+ References:
105
+ [1] Levin, R. John: Linkers & Loader
106
+ [2] System V ABI
107
+ [3] The cost of elf symbol hashing: http://blogs.sun.com/ali/entry/the_cost_of_elf_symbol
108
+ [4] GNU Hash ELF Section: http://blogs.sun.com/ali/entry/gnu_hash_elf_sections
109
+ [5] http://refspecs.freestandards.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/symversion.html
110
+ [6] elf: http://greek0.net/elf.html
111
+ [7] System V ABI Application Binary Interface - Draft 17 - December 2003 (SCO) :
112
+ http://sco.com/developers/gabi/latest/contents.html
113
+
@@ -0,0 +1,20 @@
1
+ - RTLD_LAZY in darwin, why not in unix?
2
+ - Failed On Open Solaris 11:
3
+
4
+ In file included from dynload_syms.c:28:
5
+ dynload_syms_elf.c:56: error: syntax error before "Elf_Dyn"
6
+ dynload_syms_elf.c:56: warning: data definition has no type or storage class
7
+ dynload_syms_elf.c: In function `dlSymsInit':
8
+ dynload_syms_elf.c:155: error: `pDyn' undeclared (first use in this function)
9
+ dynload_syms_elf.c:155: error: (Each undeclared identifier is reported only once
10
+ dynload_syms_elf.c:155: error: for each function it appears in.)
11
+ dynload_syms_elf.c:155: error: syntax error before ')' token
12
+ dynload_syms_elf.c:160: error: `DT_NULL' undeclared (first use in this function)
13
+ dynload_syms_elf.c:163: error: `DT_STRTAB' undeclared (first use in this function)
14
+ dynload_syms_elf.c:164: error: `DT_SYMTAB' undeclared (first use in this function)
15
+ dynload_syms_elf.c:165: error: `DT_HASH' undeclared (first use in this function)
16
+ make: *** [dynload_syms.o] Error 1
17
+
18
+ DONE:
19
+ - remove dependencies dyncall_{alloc,macros}.h
20
+
@@ -0,0 +1,4 @@
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)
@@ -0,0 +1,64 @@
1
+ .\" Copyright (c) 2007-2014 Daniel Adler <dadler AT uni-goettingen DOT de>,
2
+ .\" Tassilo Philipp <tphilipp AT potion-studios DOT com>
3
+ .\"
4
+ .\" Permission to use, copy, modify, and distribute this software for any
5
+ .\" purpose with or without fee is hereby granted, provided that the above
6
+ .\" copyright notice and this permission notice appear in all copies.
7
+ .\"
8
+ .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
+ .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
+ .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
+ .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
+ .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
+ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
+ .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
+ .\"
16
+ .Dd $Mdocdate$
17
+ .Dt dynload 3
18
+ .Os
19
+
20
+ .Sh NAME
21
+ .Nm dynload
22
+ .Nd encapsulates dynamic loading mechanisms and
23
+ gives access to functions in foreign dynamic libraries and code modules.
24
+ .Sh SYNOPSIS
25
+ .In dynload.h
26
+ .Ft DLLib *
27
+ .Fn dlLoadLibrary "const char * libpath"
28
+ .Ft void
29
+ .Fn dlFreeLibrary "DLLib * pLib"
30
+ .Ft void *
31
+ .Fn dlFindSymbol "DLLib pLibode" "const char * pSymbolName"
32
+ .Sh DESCRIPTION
33
+ The
34
+ .Nm
35
+ library provides an interface to load foreign dynamic libraries and access
36
+ to their symbols.
37
+ .Pp
38
+ .Fn dlLoadLibrary
39
+ loads a dynamic library at
40
+ .Ar libpath
41
+ and returns a handle to it for use in
42
+ .Fn dlFreeLibrary
43
+ and
44
+ .Fn dlFindSymbol
45
+ calls.
46
+ .Pp
47
+ .Fn dlFreeLibrary
48
+ frees the loaded library with handle
49
+ .Ar pLib .
50
+ .Pp
51
+ .Fn dlFindSymbol
52
+ returns a pointer to a symbol with name
53
+ .Ar pSymbolName
54
+ in the library with handle
55
+ .Ar pLib ,
56
+ or returns a null pointer if the symbol cannot be found.
57
+ .Sh SEE ALSO
58
+ .Xr dyncall 3 ,
59
+ .Xr dyncallback 3
60
+ and the dyncall manual (available in PDF format) for a way more detailed documentation of this
61
+ library.
62
+ .Sh AUTHORS
63
+ .An "Daniel Adler" Aq dadler@uni-goettingen.de
64
+ .An "Tassilo Philipp" Aq tphilipp@potion-studios.com
@@ -0,0 +1,38 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dynload
5
+ File: dynload/dynload.c
6
+ Description: Auto-include delegate to windows/posix-based dynamic linker.
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ #include "../autovar/autovar_OSFAMILY.h"
28
+ #if defined(OSFAMILY_Windows)
29
+ # include "dynload_windows.c"
30
+ #elif defined(OSFAMILY_Unix)
31
+ # include "../autovar/autovar_OS.h"
32
+ # if defined(OS_Darwin)
33
+ # include "dynload_darwin.c"
34
+ # else
35
+ # include "dynload_unix.c"
36
+ # endif
37
+ #endif
38
+
@@ -0,0 +1,65 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dynload
5
+ File: dynload/dynload.h
6
+ Description: public header for library dynload
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ #ifndef DYNLOAD_H
28
+ #define DYNLOAD_H
29
+
30
+ #ifdef __cplusplus
31
+ extern "C" {
32
+ #endif
33
+
34
+ #ifndef DL_API
35
+ #define DL_API
36
+ #endif
37
+
38
+ /* --- public api ---------------------------------------------------------- */
39
+
40
+ /* shared library loading and explicit symbol resolving */
41
+
42
+ typedef struct DLLib_ DLLib;
43
+
44
+ DL_API DLLib* dlLoadLibrary(const char* libpath);
45
+ DL_API void dlFreeLibrary(DLLib* pLib);
46
+ DL_API void* dlFindSymbol(DLLib* pLib, const char* pSymbolName);
47
+
48
+ /* symbol table enumeration - only for symbol lookup, not resolve */
49
+
50
+ typedef struct DLSyms_ DLSyms;
51
+
52
+ DL_API DLSyms* dlSymsInit (const char* libPath);
53
+ DL_API void dlSymsCleanup(DLSyms* pSyms);
54
+
55
+ DL_API int dlSymsCount (DLSyms* pSyms);
56
+ DL_API const char* dlSymsName (DLSyms* pSyms, int index);
57
+ DL_API const char* dlSymsNameFromValue(DLSyms* pSyms, void* value); /* symbol must be loaded */
58
+
59
+
60
+ #ifdef __cplusplus
61
+ }
62
+ #endif
63
+
64
+ #endif /* DYNLOAD_H */
65
+