Mercurial > pub > dyncall > dyncall
comparison ToDo @ 329:8b0fc583ce62
- tex formatting fix
- ToDo list cleanup
author | Tassilo Philipp |
---|---|
date | Fri, 22 Nov 2019 23:23:14 +0100 |
parents | 9f2aff560fa7 |
children | 73c528d2cd4d |
comparison
equal
deleted
inserted
replaced
328:276eb8c87aa0 | 329:8b0fc583ce62 |
---|---|
1 1.1: | 1 1.1: |
2 ---- | 2 ---- |
3 - plain_cpp only supports windows; fix | 3 - test code: add sparc tests for when out of register windows, meaning multiple layers deep in the call stack |
4 - ./configure on macOS does not pass CFLAGS etc.. to Makefile.config | 4 - ./configure on macOS does not pass CFLAGS etc.. to Makefile.config |
5 - support platforms without shared libraries so they can be built by just typing `./configure;make` (e.g. minix < 3.2.1) | 5 - support platforms without shared libraries so they can be built by just typing `./configure;make` (e.g. minix < 3.2.1) |
6 * 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 * 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) |
7 - dyncall supports calls to functions where prototype exists (with and without varargs); however not when no | 7 - dyncall supports calls to functions where prototype exists (with and without varargs); however not when no |
8 prototype exist (e.g. just calling some pointer), without any declaration... even possible in C, as one has | 8 prototype exist (e.g. just calling some pointer), without any declaration... even possible in C, as one has |
9 to cast to the function type? need to support? | 9 to cast to the function type? need to support? |
10 | 10 |
11 | 11 |
12 - dyncallback's "stack_cleanup" can be removed from non x86 impls... test if they still work | 12 - dyncallback's "stack_cleanup" can be removed from non x86 impls... test if they still work |
13 - target a minimum c version, for use with -pedantic, etc.? Right now we use e.g. extensions | 13 - target a minimum c version, for use with -pedantic, etc.? Right now we use e.g. extensions |
14 for anon structs, etc. | 14 for anon structs, etc. -> we do now target c99 |
15 - the CallVM-free functions are per VTable, however the latter can be changed out | 15 - the CallVM-free functions are per VTable, however the latter can be changed out |
16 at runtime... which basically changes potentially the deallocator... | 16 at runtime... which basically changes potentially the deallocator... |
17 same goes for functions setting the mode. think about how to make this safer - currently | 17 same goes for functions setting the mode. think about how to make this safer - currently |
18 we have a higher flexibility and we need to potentially clean up from the mode we are in, | 18 we have a higher flexibility and we need to potentially clean up from the mode we are in, |
19 however, this is open to misuse | 19 however, this is open to misuse |
23 taking care of the promotion; so it should be consistent all across the | 23 taking care of the promotion; so it should be consistent all across the |
24 implementations -> also write testcode specifically for that | 24 implementations -> also write testcode specifically for that |
25 - autovar was never really pushed all the way through and still plays second | 25 - autovar was never really pushed all the way through and still plays second |
26 fiddle to dyncall_macros.h, clean this all up, eventually (Tassilo: for now, I | 26 fiddle to dyncall_macros.h, clean this all up, eventually (Tassilo: for now, I |
27 removed out of sync files to avoid confusion; but still probably duped code) | 27 removed out of sync files to avoid confusion; but still probably duped code) |
28 - ppc32 callback fixes on bsd @@@ | |
29 - add portable "make install" | 28 - add portable "make install" |
30 * make install should also install manpages | 29 * make install should also install manpages |
31 - mailing list announcements (html email?) | 30 - mailing list announcements (html email?) |
32 - fix for NDS: | 31 - fix for NDS: |
33 * ARM: | 32 * ARM: |
43 - support /SAFESEH on cl/win32 | 42 - support /SAFESEH on cl/win32 |
44 - test code functions should be in .so files, optionally, so the suites can directly | 43 - test code functions should be in .so files, optionally, so the suites can directly |
45 be used to test dycnall bindings | 44 be used to test dycnall bindings |
46 - pkg-config support? | 45 - pkg-config support? |
47 - quadmath support (long double) | 46 - quadmath support (long double) |
48 - add tests using alloca(), as this might depend on the frame pointer being correctly | 47 - add tests using alloca(), as this might depend on the frame pointer being correctly set (we don't |
49 set; we don't check for this, currently, at all | 48 check for this, currently, at all - but might not affect dyncall's stubs, anyways) - verify |
50 | 49 |
51 portasm: | 50 portasm: |
52 -------- | 51 -------- |
53 - add solaris support for x64 | 52 - add solaris support for x64 |
54 | 53 |
80 * test return values | 79 * test return values |
81 * convert from c++ to c, to have it also on plan9, and more portability | 80 * convert from c++ to c, to have it also on plan9, and more portability |
82 | 81 |
83 dynload: | 82 dynload: |
84 -------- | 83 -------- |
85 - RTLD_LAZY in darwin, why not in unix? | |
86 - dlGetLibraryPath: dl_iterate_phdr() used on OpenBSD, but not available on version < 3.7 | 84 - dlGetLibraryPath: dl_iterate_phdr() used on OpenBSD, but not available on version < 3.7 |
87 - bug: test/nm crashes on qemu mips linux o32 debian etch | 85 - bug: test/nm crashes on qemu mips linux o32 debian etch |
88 - test/resolve_self crashes/asserts on windows and bsds | |
89 - rename SymsInit to InitSyms and similar for cleanup function to reflect naming | 86 - rename SymsInit to InitSyms and similar for cleanup function to reflect naming |
90 in dyncall | 87 in dyncall |
91 - get rid of Dl_info and friends (_GNU_SOURCE) in dynload/dynload_syms_elf.c | 88 - get rid of Dl_info and friends (_GNU_SOURCE) in dynload/dynload_syms_elf.c |
92 for implementation of dlSymsNameFromValue(..) | 89 for implementation of dlSymsNameFromValue(..) |
93 - check if PSP can support dynload (missing elf.h, dlfcn.h, etc.); fixup readme if successful | 90 - check if PSP can support dynload (missing elf.h, dlfcn.h, etc.); fixup readme if successful |
110 dyncallback: | 107 dyncallback: |
111 ------------ | 108 ------------ |
112 - callback_plain's return value not correct anymore on NDS (maybe just broken testcode?), | 109 - callback_plain's return value not correct anymore on NDS (maybe just broken testcode?), |
113 see above under 1.1 items | 110 see above under 1.1 items |
114 * check other platforms also, if asm stub initializes retval space, correctly | 111 * check other platforms also, if asm stub initializes retval space, correctly |
115 - finish PPC32 callbacks (see bugs section, below, BSD not working) | |
116 - test MIPS32 eabi big endian (current port works on psp, which is little endian) | 112 - test MIPS32 eabi big endian (current port works on psp, which is little endian) |
117 - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and | 113 - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and |
118 EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter) | 114 EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter) |
119 - MIPS64 n32 softfloat support (-msoft-float) | 115 - MIPS64 n32 softfloat support (-msoft-float) |
120 - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian | 116 - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian |
135 - add call-conv-mode-support for rbdc through signature | 131 - add call-conv-mode-support for rbdc through signature |
136 | 132 |
137 manual: | 133 manual: |
138 ------- | 134 ------- |
139 - 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 | 135 - 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 |
136 * 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 | |
140 - 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) | 137 - 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) |
141 - callconv diagrams: | |
142 * good idea to review it all, anyways, if the calling conventions are actually | |
143 represented correctly (and if they are in sync with the .pdf, we used to have | |
144 problems with multirow.4ht) | |
145 - provide more examples on how to use dyncall, dynload and dyncallback | 138 - provide more examples on how to use dyncall, dynload and dyncallback |
146 * e.g. enhance manual with a couple of examples (e.g. calling MessageBoxA on windows, etc.) | 139 * e.g. enhance manual with a couple of examples (e.g. calling MessageBoxA on windows, etc.) |
147 - manuals for bindings (as stated in bindings-section, above) | 140 - manuals for bindings (as stated in bindings-section, above) |
148 - under "dyncall support", in each calling convention appendix, list crucial details of e.g. big/little endian support, etc. | 141 - under "dyncall support", in each calling convention appendix, list crucial details of e.g. big/little endian support, etc. |
149 - specify integer models in use, use common ILP32, LLP64, etc. terms | 142 - specify integer models in use, use common ILP32, LLP64, etc. terms |
152 ------------ | 145 ------------ |
153 - Haiku/gmake build doesn't build dynload due to the fact, that elf.h is not found | 146 - Haiku/gmake build doesn't build dynload due to the fact, that elf.h is not found |
154 on default installations (one has to install the system headers) | 147 on default installations (one has to install the system headers) |
155 * add to doc | 148 * add to doc |
156 - Solaris/gmake build doesn't build dynload and tests anymore (maybe not even dyncallback) | 149 - Solaris/gmake build doesn't build dynload and tests anymore (maybe not even dyncallback) |
157 - test arm32/ATPCS/THUMB (and then change Status in doc Appendix) | |
158 - look over code and fix TODO or @@@ marks | 150 - look over code and fix TODO or @@@ marks |
159 - add ppc-support to doc (both, 32 and 64, as well as little and big endian remarks) | 151 - add ppc-support to doc (both, 32 and 64, as well as little and big endian remarks) |
160 | 152 |
161 nice to have: | 153 nice to have: |
162 ------------- | 154 ------------- |
163 - update: microsoft visual c++ build files - integrate all test suites in solution file | 155 - update: microsoft visual c++ build files - integrate all test suites in solution file |
164 - consistency: on x64 platforms: make both ABIs available ('win64','sysv') for all x64 OS ports | 156 - consistency: on x64 platforms: make both ABIs available ('win64','sysv') for all x64 OS ports |
165 - microsoft build enhancement: autodetect assembly via C preprocessor (like with .S gcc files) | 157 - microsoft build enhancement: autodetect assembly via C preprocessor (like with .S gcc files) |
166 - test/thunk: some platforms do not allow for allocation of executable code on heap and stack -- | 158 - test/thunk: some platforms do not allow for allocation of executable code on heap and stack -- |
167 currently this test will crash, maybe we should collect information which platforms allow and which not. | 159 currently this test will segfault (handled), maybe we should collect information which platforms allow and which not. |
160 - PSP | |
161 - automate ppsspp stuff, seems to print to stdout for callback_suite? but not for call_suite.. (?) | |
162 - fix link with dummy versions of the following for test-bins: | |
163 void __stack_chk_fail(){} | |
164 void __stack_chk_guard(){} | |
168 | 165 |
169 bugs: | 166 bugs: |
170 ----- | 167 ----- |
171 - setting callconv, specifically for platforms that have only one (default)) excepts on some | 168 - setting callconv, specifically for platforms that have only one (default)) excepts on some |
172 platforms, eg. setting X64_sysv on amd64/Linux - keeping cdecl which is the same in | 169 platforms, eg. setting X64_sysv on amd64/Linux - keeping cdecl which is the same in |