rbdc 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/dyncall/CMakeLists.txt +3 -3
  3. data/dyncall/ChangeLog +33 -0
  4. data/dyncall/ChangeLog.orig +274 -0
  5. data/dyncall/LICENSE +1 -1
  6. data/dyncall/README +3 -5
  7. data/dyncall/ToDo +27 -18
  8. data/dyncall/ToDo.orig +201 -0
  9. data/dyncall/autovar/autovar_ARCH.h +1 -1
  10. data/dyncall/buildsys/vs2005/vs2005.sln +0 -9
  11. data/dyncall/cconv.lang +36 -0
  12. data/dyncall/configure +17 -9
  13. data/dyncall/configure.bat +1 -1
  14. data/dyncall/dyncall/dyncall.h +2 -1
  15. data/dyncall/dyncall/dyncall_call.S +9 -1
  16. data/dyncall/dyncall/dyncall_call_mips_n32.S +192 -0
  17. data/dyncall/dyncall/dyncall_call_mips_n64.S +197 -0
  18. data/dyncall/dyncall/dyncall_call_mips_n64.h +2 -0
  19. data/dyncall/dyncall/{dyncall_call_mips_o32_gas.s → dyncall_call_mips_o32.S} +44 -42
  20. data/dyncall/dyncall/dyncall_call_mips_o32.h +8 -3
  21. data/dyncall/dyncall/dyncall_call_ppc32.S +3 -1
  22. data/dyncall/dyncall/dyncall_call_ppc32.h +4 -3
  23. data/dyncall/dyncall/dyncall_call_ppc64.S +1 -1
  24. data/dyncall/dyncall/dyncall_call_ppc64.h +3 -0
  25. data/dyncall/dyncall/dyncall_call_x64.S +27 -2
  26. data/dyncall/dyncall/dyncall_call_x64.h +2 -1
  27. data/dyncall/dyncall/dyncall_call_x64_generic_masm.asm +13 -2
  28. data/dyncall/dyncall/dyncall_call_x86.S +6 -6
  29. data/dyncall/dyncall/dyncall_call_x86.h +7 -7
  30. data/dyncall/dyncall/dyncall_call_x86_generic_masm.asm +6 -7
  31. data/dyncall/dyncall/dyncall_callvm_mips_n64.c +27 -9
  32. data/dyncall/dyncall/dyncall_callvm_mips_o32.c +38 -31
  33. data/dyncall/dyncall/dyncall_callvm_mips_o32.c.orig +247 -0
  34. data/dyncall/dyncall/dyncall_callvm_x64.c +57 -3
  35. data/dyncall/dyncall/dyncall_callvm_x86.c +32 -32
  36. data/dyncall/dyncall/dyncall_macros.h +11 -8
  37. data/dyncall/dyncall/dyncall_struct.c +12 -6
  38. data/dyncall/dyncall/dyncall_struct.h +1 -1
  39. data/dyncall/dyncall/dyncall_vector.c +13 -12
  40. data/dyncall/dyncall/dyncall_vector.c.orig +53 -0
  41. data/dyncall/dyncall/gen-masm.sh +4 -5
  42. data/dyncall/dyncallback/dyncall_args_mips.h +24 -6
  43. data/dyncall/dyncallback/dyncall_args_mips64.c +3 -3
  44. data/dyncall/dyncallback/dyncall_args_mips_o32.c +19 -6
  45. data/dyncall/dyncallback/dyncall_callback_arch.S +11 -1
  46. data/dyncall/dyncallback/{dyncall_callback_mips_n32_gas.s → dyncall_callback_mips_n32.S} +1 -1
  47. data/dyncall/dyncallback/{dyncall_callback_mips_n64_gas.s → dyncall_callback_mips_n64.S} +39 -25
  48. data/dyncall/dyncallback/{dyncall_callback_mips_o32_gas.s → dyncall_callback_mips_o32.S} +29 -13
  49. data/dyncall/dyncallback/dyncall_callback_x86_masm.asm +0 -1
  50. data/dyncall/dyncallback/dyncall_thunk.h +1 -1
  51. data/dyncall/dyncallback/gen-masm.sh +3 -5
  52. data/dyncall/dynload/dynload.3 +16 -4
  53. data/dyncall/dynload/dynload_unix.c +101 -53
  54. data/dyncall/dynload/dynload_windows.c +76 -3
  55. data/dyncall/portasm/README.txt +1 -1
  56. data/dyncall/portasm/gen-masm.sh +5 -1
  57. metadata +14 -13
  58. data/dyncall/buildsys/vs2005/test_plain/test_plain.vcproj +0 -202
  59. data/dyncall/dyncall/dyncall_call_mips_gas.S +0 -37
  60. data/dyncall/dyncall/dyncall_call_mips_n32_gas.s +0 -192
  61. data/dyncall/dyncall/dyncall_call_mips_n64_gas.s +0 -192
  62. data/dyncall/dyncallback/dyncall_callback_mips_gas.S +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 48c23d651ae6024799dc93d27784b76932a2442a
4
- data.tar.gz: 77aea3d5b61b0b1957a8e6c4fee0c0e3815afe77
2
+ SHA256:
3
+ metadata.gz: 29f9408d7f40b136b8710574c7439813d51aa7e664e2539c84f49975fe95504b
4
+ data.tar.gz: 8d4cbfefadf868b87b8a2438b5bac60cf9efaae64b8e3cc4021b4a25106e08fd
5
5
  SHA512:
6
- metadata.gz: bc287843aed36b3750e69451c4612ac4fb6460d9c200592960b04ac4ec23240e162bd28d155b94aa3c17b3ebda874ac6689ab0f7f136a5fd239519fbfeb37007
7
- data.tar.gz: 73b0f5ddbaf53b12882499d67ec86c7f3a28ec5987978d5e49c5afd8b3229307994c1883ec3c56b25b46b77fc2e3c2dbb9d43239ee76773e460a9a59de82c416
6
+ metadata.gz: 52cccfba7ca659369a80703878ba2458690c68bc1bb3db7617f7acfdb7c038716283ff7a8cd122ba39660402510435daa927b1800f8e944516d537f5ab3dddef
7
+ data.tar.gz: 42de21fd3d263c3c87681d3ebca29f801992e8392e15cba9bb4efde9e22f030157e9a11745b3f962013932989a8f6dbfe8cb60c2978298e975f73591df5dbeda
@@ -23,10 +23,10 @@ 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")
26
- set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/doc/Description.txt")
27
- set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/doc/License.txt")
26
+ set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
27
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
28
28
  if(APPLE)
29
- set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/doc/Description.txt")
29
+ set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README")
30
30
  endif(APPLE)
31
31
  set(CPACK_PACKAGE_NAME "dyncall")
32
32
  include(CPack)
@@ -1,5 +1,38 @@
1
1
  This file lists bigger/noteworthy changes, only...
2
2
 
3
+ Version 1.2 (upcoming)
4
+ ...
5
+
6
+ Version 1.1 (2020/01/11)
7
+ dyncall:
8
+ o support for soft-float MIPS o32 & n64 (big- and little-endian, each)
9
+ o x64 System V syscall support
10
+ dyncallback:
11
+ o support for soft-float MIPS o32 & n64 (big- and little-endian, each)
12
+ dynload:
13
+ o added UTF-8 support for pathnames on windows
14
+ o reliability/stability fix for dlGetLibraryPath() on glibc based platforms (avoiding
15
+ internal use of glibc's bad impl of dlinfo() which doesn't do any error checking at all)
16
+ o Darwin/macos fix for dlGetLibraryPath() to correctly fail on bogus handles (did return
17
+ paths to random libraries under some circumstances, instead of returning an error)
18
+ o support for dlGetLibraryPath() on glibc platforms with glibc vesions <= 2.3.3
19
+ o dlGetLibraryPath() now accepts NULL as argument to return path to executable
20
+ o dlLoadLibrary() on windows: no more auto-suffixing of the .dll file ext anymore, to be
21
+ more in line with other platforms (not affecting OS specific library search behaviour)
22
+ doc:
23
+ o more detail in support matrix for bi-endian platforms
24
+ o improvements/corrections to calling convention appendix
25
+ o PPC64 calling convention description
26
+ o MIPS64/N32 calling convention description
27
+ o man page additions for clarity
28
+ tests:
29
+ o dynload_plain test extended to test UTF-8 library paths
30
+ o better output for plain test
31
+ o better output and *nix fix for plain_c++ test
32
+ buildsys:
33
+ o default ./configure: FreeBSD/mips*hf needed -mhard-float compiler flag set explicitly
34
+ o better MacOS Mojave support in ./configure (Mojave dropped i386 builds)
35
+
3
36
  Version 1.0 (2018/04/23)
4
37
  dyncall:
5
38
  o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
@@ -0,0 +1,274 @@
1
+ This file lists bigger/noteworthy changes, only...
2
+
3
+ Version 1.1 (upcoming)
4
+ dyncall:
5
+ o support for soft-float MIPS o32 & n64 (big- and little-endian, each)
6
+ o x64 System V syscall support
7
+ dyncallback:
8
+ o support for soft-float MIPS o32 & n64 (big- and little-endian, each)
9
+ dynload:
10
+ o added UTF-8 support for pathnames on windows
11
+ o reliability/stability fix for dlGetLibraryPath() on glibc based platforms (avoiding
12
+ internal use of glibc's bad impl of dlinfo() which doesn't do any error checking at all)
13
+ o Darwin/macos fix for dlGetLibraryPath() to correctly fail on bogus handles (did return
14
+ paths to random libraries under some circumstances, instead of returning an error)
15
+ o support for dlGetLibraryPath() on glibc platforms with glibc vesions <= 2.3.3
16
+ o dlGetLibraryPath() now accepts NULL as argument to return path to executable
17
+ doc:
18
+ o more detail in support matrix for bi-endian platforms
19
+ o improvements/corrections to calling convention appendix
20
+ o PPC64 calling convention description
21
+ o MIPS64/N32 calling convention description
22
+ o man page additions for clarity
23
+ tests:
24
+ o dynload_plain test extended to test UTF-8 library paths
25
+ o better output for plain test
26
+ o better output and *nix fix for plain_c++ test
27
+ buildsys:
28
+ o default ./configure: FreeBSD/mips*hf needed -mhard-float compiler flag set explicitly
29
+ o better MacOS Mojave support in ./configure (Mojave dropped i386 builds)
30
+ o Catalina @@@?
31
+
32
+ Version 1.0 (2018/04/23)
33
+ dyncall:
34
+ o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
35
+ o fixed potential buffer overrun on ARM64
36
+ o error code handling (dcGetError) changes, flag is now cleared (work still underway)
37
+ o MIPS n64 ellipsis call fixes
38
+ o ARM32 armhf ellipsis call fixes
39
+ o fixed ARM32-THUMB stack alignment issues (found on Cortex-m0, thanks Darren Whobrey!)
40
+ o better C++ compiler support (for pointer conversions)
41
+ dyncallback:
42
+ o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
43
+ o MIPS o32 (big- and little-endian), EABI (32 bit, little-endian) and n64 (big-endian) support
44
+ o SPARC32 (v7/v8) support
45
+ o SPARC64 (v9) support
46
+ o PPC32 fixes for (old) Darwin/OS X systems
47
+ o POSIX compliance: fallback for wx alloc on systems that don't have mmap()'s MAP_ANON
48
+ o allocated space used for thunk now always W^X (req. for e.g. OpenBSD >= 6.0)
49
+ dynload:
50
+ o major reliability/stability fixes for Mach-O dlSyms* functions to (thanks Stéphane Mons for help):
51
+ better handle loading dylibs by symlink, relative path, random casing, etc.
52
+ fixes to symbol name lookups that used wrong offsets before
53
+ 64-bit platform fixes (was broken on x64 and never supported on others)
54
+ o allowing Mach-O dlSyms* lib to be used standalone (consistent with ELF and PE impls now)
55
+ o simplifications of implemention on Darwin, sharing parts with *nix implementation
56
+ o potentially breaking change on macos/Darwin platforms: all functions now consistently accept or
57
+ return symbol names as they would appear in C code, instead of the raw ones in object files
58
+ o added new function dlGetLibraryPath, allowing lookups of path to library via handle
59
+ general:
60
+ o assembly code now built by explicitily asking for non-execstack, for safer/easier integration
61
+ into other projects/builds, where needed; needed b/c of questionable default behaviours of some
62
+ toolchains (thanks Thorsten Behrens for report and analysis)
63
+ doc:
64
+ o working html doc generation from TEX sources
65
+ o SPARC32 (v7/v8) calling convention description
66
+ o SPARC64 (v9) calling convention description
67
+ bindings:
68
+ o better documentation, removed relative path dependencies, general cleanup
69
+ o python: updated to latest signature format (was still on 0.1)
70
+ o java: rewritten (old version was never complete, anyways)
71
+ tests:
72
+ o added new dynload_plain test covering basic use of all dynload functions
73
+ buildsys:
74
+ o cmake: made to work on systems without C++ compiler (thanks Franklin Mathieu)
75
+
76
+ Version 0.9 (2015/12/31)
77
+ dyncall:
78
+ o ARM64 support (AAPCS64 on Linux & Apple's derived version on iOS)
79
+ o armhf calling convention support for ARM32
80
+ o PPC64 support, including syscalls (thanks Masanori Mitsugi!)
81
+ o introduced dcArgF and dcVArgF for flexible/convenient argument binding (works like dcCallF/dcVCallF but without the function call)
82
+ o using -fPIC by default for FreeBSD
83
+ o PPC32 linux syscall support
84
+ o fixed return value errors for ARM32 on some platforms (e.g. freebsd/arm32, nintendo ds); arm & thumb mode
85
+ dyncallback:
86
+ o ARM64 support (AAPCS64 on Linux, Apple's derived version on iOS)
87
+ o armhf calling convention support for ARM32
88
+ o PPC64 support (thanks Masanori Mitsugi!)
89
+ o PPC32 System V support (Linux)
90
+ o fix for PPC32 Darwin/OS X
91
+ o more intuitive specification of callback return type
92
+ doc:
93
+ o added ARM64 support info and calling convention documentation
94
+ o added ARM32 armhf section
95
+ o added PPC64 support info
96
+ o cleanup, brought all up to date, etc.
97
+ tests:
98
+ o callf test covers new argf interface
99
+ o several fixes to some test suites
100
+ buildsys:
101
+ o more flexible testsuite build and 'pack' target for convenience
102
+ o fixes/additions for OS X universal builds
103
+ o added iOS universal build support for armv7/arm64
104
+ o helper script for generic .elf -> EBOOT.PBP creation for PSP
105
+ o Sun make fixes for C++ code in test suite
106
+ bindings:
107
+ o erldc: Erlang binding (thanks Erik!)
108
+ infrastructure:
109
+ o moved to hg
110
+ o moved bindings to own repository
111
+
112
+ Version 0.8 (2014/03/24)
113
+ buildsys:
114
+ o big simplification make-based build system, no more distinct GNU and BSD makefiles anymore
115
+ o new, much simpler ./configure for new make-based build-system
116
+ o support for in-source and out-of-source builds for make-based build systems
117
+ o made configure.bat guess x64 as target arch for x64 windows hosts
118
+ o based more sources on portasm generation
119
+ dyncall:
120
+ o fix for ARMv7 Thumb-2 code (tested on iPhone 4 CDMA / iOS 6.0.1)
121
+ o bugfixes for -O2 builds for SPARC-v9 and SPARC-v7
122
+ o new optimized call kernel for SPARC-v9 without conditionals
123
+ o bigger refactoring and optimization of MIPS o32
124
+ o x64 optimizations
125
+ dyncallback:
126
+ o added callback support for plan9
127
+ o big cleanup, removal of duplicate files after introduction of portasm
128
+ o include path fixes for public facing APIs (removed relative paths)
129
+ doc:
130
+ o cleanup of manual and corrections
131
+ o added info about newly supported and/or tested platforms (e.g. FreeBSD on ARM)
132
+ o restructured folder layout for documentation
133
+ o added API doc for dyncallback and dynload
134
+ o added manpages for dyncallback and dynload
135
+ tests:
136
+ o added arm/thumb interwork test suite
137
+ bindings:
138
+ o godc: added bindings for Go
139
+ o rbdc: fixed and extended ruby bindings
140
+ o shdc: renamed shell binding to shdc and added feature to list shared-objects' symbols
141
+
142
+ Version 0.7 (2012/01/02)
143
+ architecture:
144
+ o added subproject: portasm - portable (GNU AS,+Apple and MASM) assembly framework
145
+ o added subproject: autovar - predefined macro framework (was dyncall_macros.h)
146
+ o added support for Solaris and SunPro compiler for i386, x86_64, sparc and sparc64
147
+ o improved auto-detection via preprocessor defines
148
+ dyncall updates:
149
+ o uses portasm (GNU,Apple,Microsoft) common sources for x86,x64,ppc32,arm32_arm
150
+ o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
151
+ o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
152
+ o bug fixes for x64/win64 calling convention
153
+ o added support for mingw32-w64 on x64
154
+ o improved cdecl x86 calling convention: stack always 16 byte aligned
155
+ o updated API and initial support for structs (for x86/AMD64)
156
+ o initial support for syscalls on x86, added x86 int80h linux/bsd
157
+ o added Minix port (stable)
158
+ o optimized vector buffer for small type pushing
159
+ o minor fix for amd64/sysv: alignment to 32-byte
160
+ o bug fix for ppc32/sysv: ellipsis calls work now
161
+ o updated API, introduced DC_CALL_C_ELLIPSIS_VARARGS
162
+ o changed interface: dcMode does not reset internally anymore
163
+ dyncallback updates:
164
+ o uses portasm for x86,x64
165
+ o added Solaris/x86/sunpro port (stable)
166
+ o added Minix port (unstable)
167
+ o callback support for Darwin/ppc32
168
+ o updates source, uses relative includes
169
+ dynload updates:
170
+ o fixes for missing includes (dyncall_alloc.h)
171
+ o fixes for self-resolving symbols on windows
172
+ o removed Dbghelf.lib dependency
173
+ o bug fixes for cygwin/x86
174
+ o fixes for beos/haiku
175
+ o no dependencies to libdyncall sources.
176
+ buildsys additions:
177
+ o added zero-config (BSD,GNU,SUN) make files (Makefile.embedded)
178
+ o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic)
179
+ o added bootstrap lua script (download/build)
180
+ o Nmakefile: more tests included (resolve_self)
181
+ o improved cross-compilation for iOS (upgrade to 4.3 sdk)
182
+ o darwin 8.0 support
183
+ o added 'install' support for Makefile.embedded
184
+ buildsys/gmake updates:
185
+ o added support for msvc/x64 tool-chain
186
+ o default settings for build-dir changed to '.'
187
+ o cleanup: removed top-level Make{Prolog,Epilog,Rules} files and updated all sub-projects and tests
188
+ o added support for DESTDIR staging installation
189
+ o added support for manual page installation
190
+ buildsys/cmake updates:
191
+ o updated find module scripts (see cmake/Modules)
192
+ o added support for using dyncall as sub-project (via *Config.cmake files)
193
+ see details in README.CMake
194
+ o fixes for msvc and ml
195
+ o fixes for CPack
196
+ o fixes for universal builds on Mac OS X
197
+ o supports SunPro with *.S files.
198
+ o added experimental 'dynMake' portable make-based build-system (not stable, yet)
199
+ documentation updates:
200
+ o added dyncallback documentation
201
+ o updated dyncall documentation
202
+ o minor updates
203
+ tests:
204
+ o added flexible test suite for calls (call_suite) based on Lua and C
205
+ o added syscall test
206
+ o updates to resolve-self test (adding additional link flags to export symbols)
207
+ o improved dir name portability (renamed plain_c++ -> plain_cxx)
208
+ o renamed *.cpp -> *.cc files (OpenBSD/Sun make has no implicit rules for cpp)
209
+
210
+ Version 0.6 (2010/09/25)
211
+ building:
212
+ o new build systems: CMake and Plan9's mk
213
+ o buildsys/gmake tool chain update: pcc and iphone sdk
214
+ o x64 bugfix: added "-fPIC" even for static libs
215
+ dynload updates:
216
+ o enum symbols update: Mach-O and Win64 (thanks Olivier)
217
+ o numerous convenience changes to dynload interface (thanks Olivier)
218
+ o added support for resolving application images itself
219
+ dyncall updates:
220
+ o new platform support: arm/iphone (armv6), x86/Plan9
221
+ o new MIPS calling conventions: o32, n64 (both endian models)
222
+ o cleanup: unexported functions in MASM files, b/c export not needed (thanks Olivier)
223
+ o interface update: added error reporting facility 'dcGetError'
224
+ o bugfix for ppc32/sysv: ellipsis calls were broken
225
+ o interface update: added new abstract mode for ellipsis calls (DC_CALL_C_ELLIPSIS)
226
+ docs:
227
+ o comprehensive update
228
+ tests:
229
+ o plain: split "plain" test up in C and C++ part
230
+ o callbacksuite: added multiple configuration support for callback_suite
231
+
232
+ Version 0.5 (2010/02/01)
233
+ o renamed arm9 stuff to arm32
234
+ o added non-EABI ABI for arm32 (before, EABI was the default implementation)
235
+ o added dyncallback support for x64/windows (thanks Olivier), x64/darwin, arm32/arm, arm32/thumb
236
+ o synced documentation again with current state of the source (lots of small changes)
237
+ o updated ruby binding to current state of signature string (still some features missing, though)
238
+ o added a couple of new options to configure scripts (e.g. prefix-bd, new targets, etc.)
239
+ o darwin universal binary support
240
+ o added new tests callback_plain and calback_suite
241
+ o added Haiku/BeOS support
242
+
243
+ Version 0.4 (2009/07/06)
244
+ o added 'doc' makefile target for coherency and ease of use
245
+ o fixed nmake buildfiles and configure.bat (were out of date and wrong)
246
+ o test suite clean up (GNUmake, BSDmake):
247
+ target "config" modified, phony without dependencies to other builds
248
+ o bugfix: GNU fastcall calling convention for float and double arguments was wrong (no skip of register)
249
+ o update: x86win32* suite tests are built on cygwin now, added total result output
250
+ o signature types change:
251
+ C Strings: 'S' -> 'Z'
252
+ long: 'l' -> 'j'
253
+ long long: 'L' -> 'l'
254
+ added unsigned integer type signature characters: upper case encoding
255
+ o added: callbacks component (support only for some platforms ATM)
256
+ o added: test cases for alloc_wx, thunk
257
+ o updated Documentation
258
+
259
+ Version 0.3 (2009/01/17)
260
+ o added Linux PPC32 support
261
+ o added ARM THUMB mode support
262
+ o cosmetic changes, documentation updated
263
+ o bugfix: on cygwin exported C symbols in GNU as are prefixed with '_' now.
264
+ o removed scons build support
265
+
266
+ Version 0.2 (2008/05/18)
267
+ o added scons build support
268
+ o configure variables all prefix CONFIG_* now
269
+ o configure variable INSTALL_DIR changed to INSTALL_PREFIX
270
+ o configure (shell version) option "--prefix" changed to "--prefix=<path>"
271
+
272
+ Version 0.1 (2008/01/23)
273
+ o initial release
274
+
@@ -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-2018 Daniel Adler <dadler@uni-goettingen.de>,
4
+ Copyright (c) 2007-2020 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
@@ -40,12 +40,10 @@ Supported Architectures and ABIs:
40
40
 
41
41
  - x86 32/64-bit (cdecl, fastcall, stdcall, C++ this calls, syscalls, plan9)
42
42
  - ARM AArch32/64 (32: ARM/Thumb mode, v4t-v7, oabi/eabi, soft/hardfloat ABIs; 64: AAPCS64)
43
- - MIPS 32/64-bit (o32, n64, eabi)
43
+ - MIPS 32/64-bit (o32, n64, eabi, with o32 and n64 for soft- and hardfloat)
44
44
  - PowerPC 32/64-bit (32: Mac OS X, System V; 64: System V little and big endian ELF ABI)
45
45
  - Sparc 32/64-bit (v7/8 and v9)
46
46
 
47
- NOTE: Callback support is currently available on
48
- x86-32/64, arm32 softfloat ABIs, arm64, PPC64 and PPC32 Linux/OS X.
49
47
 
50
48
  Supported Operating Systems:
51
49
  ----------------------------
@@ -117,6 +115,6 @@ Make sure pdflatex is installed and run
117
115
  $ make docs
118
116
 
119
117
 
120
- Please refer to http://www.dyncall.org, dyncall(3), dyncallback(3), the dyncall
121
- manual and platform-specific READMEs under doc/ for more information.
118
+ Please refer to http://www.dyncall.org, dyncall(3), dyncallback(3), dynload(3),
119
+ the dyncall manual and platform-specific READMEs under doc/ for more information.
122
120
 
@@ -1,5 +1,18 @@
1
- 1.1:
1
+ 1.2:
2
2
  ----
3
+ - test atpcs thumb on arm and verify if ellipse and C++ thiscalls work, if so adapt doc appendix
4
+ - test eabi thumb on arm and verify if ellipse and C++ thiscalls work, if so adapt doc appendix
5
+ - new platform matrix
6
+ * check dark green cells and validate in general
7
+
8
+ - openbsd-4.0-* test/resolve_self fails, but unsure why. dlopen correctly returns RTLD_DEFAULT, which
9
+ should lookup via dlsym the function in the object itself, but cannot. So... some compiler flag might
10
+ be missing to keep symbol names, or some prefixing happens
11
+ - dyncall/dyncall_call*h could probably be all removed, as forward declarations in corresponding .c
12
+ files would be enough; no headers are needed b/c those functions declared in there are of no public use
13
+ - test/thunk win/x64 doesn't output anything decent for stack test (neither sigsegv nor output), which can create a problem for test log file as it'll mess with the subsequent test's output)
14
+ - remove test/gen-masm alltogether
15
+ - test code: add sparc tests for when out of register windows, meaning multiple layers deep in the call stack
3
16
  - ./configure on macOS does not pass CFLAGS etc.. to Makefile.config
4
17
  - support platforms without shared libraries so they can be built by just typing `./configure;make` (e.g. minix < 3.2.1)
5
18
  * 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)
@@ -10,7 +23,7 @@
10
23
 
11
24
  - dyncallback's "stack_cleanup" can be removed from non x86 impls... test if they still work
12
25
  - target a minimum c version, for use with -pedantic, etc.? Right now we use e.g. extensions
13
- for anon structs, etc.
26
+ for anon structs, etc. -> we do now target c99
14
27
  - the CallVM-free functions are per VTable, however the latter can be changed out
15
28
  at runtime... which basically changes potentially the deallocator...
16
29
  same goes for functions setting the mode. think about how to make this safer - currently
@@ -43,8 +56,8 @@
43
56
  be used to test dycnall bindings
44
57
  - pkg-config support?
45
58
  - 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
59
+ - add tests using alloca(), as this might depend on the frame pointer being correctly set (we don't
60
+ check for this, currently, at all - but might not affect dyncall's stubs, anyways) - verify
48
61
 
49
62
  portasm:
50
63
  --------
@@ -63,14 +76,11 @@ dyncall:
63
76
  - consider automatic type-promotion for arguments passed through DC_CALL_C_ELLIPSIS_VARARGS;
64
77
  this would make it easier to just pass arguments instead of having to know about the C
65
78
  type promotions (this is partly done, see todo-item above under 1.1)
66
- - syscalls for x64
67
- * bsd
68
- * linux
69
79
  - other syscalls
70
- - MIPS32 softfloat support (-msoft-float)
71
80
  - test MIPS32 eabi big endian (current port works on psp, which is little endian)
72
81
  - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and
73
82
  EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter)
83
+ - MIPS64 n32 softfloat support (-msoft-float)
74
84
  - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian
75
85
  - support for Minix/arm
76
86
  - improve ellipsis test:
@@ -80,10 +90,8 @@ dyncall:
80
90
 
81
91
  dynload:
82
92
  --------
83
- - RTLD_LAZY in darwin, why not in unix?
84
93
  - dlGetLibraryPath: dl_iterate_phdr() used on OpenBSD, but not available on version < 3.7
85
94
  - bug: test/nm crashes on qemu mips linux o32 debian etch
86
- - test/resolve_self crashes/asserts on windows and bsds
87
95
  - rename SymsInit to InitSyms and similar for cleanup function to reflect naming
88
96
  in dyncall
89
97
  - get rid of Dl_info and friends (_GNU_SOURCE) in dynload/dynload_syms_elf.c
@@ -110,11 +118,10 @@ dyncallback:
110
118
  - callback_plain's return value not correct anymore on NDS (maybe just broken testcode?),
111
119
  see above under 1.1 items
112
120
  * check other platforms also, if asm stub initializes retval space, correctly
113
- - finish PPC32 callbacks (see bugs section, below, BSD not working)
114
- - MIPS32 softfloat support (-msoft-float)
115
121
  - test MIPS32 eabi big endian (current port works on psp, which is little endian)
116
122
  - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and
117
123
  EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter)
124
+ - MIPS64 n32 softfloat support (-msoft-float)
118
125
  - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian
119
126
  - support for Minix/arm
120
127
 
@@ -135,11 +142,9 @@ bindings:
135
142
  manual:
136
143
  -------
137
144
  - 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
145
+ * also, get inspiration for naming for GCC predefs as talked about in https://stffrdhrn.github.io/software/embedded/openrisc/2018/06/08/gcc_stack_frames.html
138
146
  - 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)
147
+ * another example, chapter 3 of: ftp://www.sourceware.org/pub/binutils/ppc-docs/ppc-poweropen/
143
148
  - provide more examples on how to use dyncall, dynload and dyncallback
144
149
  * e.g. enhance manual with a couple of examples (e.g. calling MessageBoxA on windows, etc.)
145
150
  - manuals for bindings (as stated in bindings-section, above)
@@ -152,7 +157,6 @@ regressions:
152
157
  on default installations (one has to install the system headers)
153
158
  * add to doc
154
159
  - Solaris/gmake build doesn't build dynload and tests anymore (maybe not even dyncallback)
155
- - test arm32/ATPCS/THUMB (and then change Status in doc Appendix)
156
160
  - look over code and fix TODO or @@@ marks
157
161
  - add ppc-support to doc (both, 32 and 64, as well as little and big endian remarks)
158
162
 
@@ -162,7 +166,12 @@ nice to have:
162
166
  - consistency: on x64 platforms: make both ABIs available ('win64','sysv') for all x64 OS ports
163
167
  - microsoft build enhancement: autodetect assembly via C preprocessor (like with .S gcc files)
164
168
  - test/thunk: some platforms do not allow for allocation of executable code on heap and stack --
165
- currently this test will crash, maybe we should collect information which platforms allow and which not.
169
+ currently this test will segfault (handled), maybe we should collect information which platforms allow and which not.
170
+ - PSP
171
+ - automate ppsspp stuff, seems to print to stdout for callback_suite? but not for call_suite.. (?)
172
+ - fix link with dummy versions of the following for test-bins:
173
+ void __stack_chk_fail(){}
174
+ void __stack_chk_guard(){}
166
175
 
167
176
  bugs:
168
177
  -----