Mercurial > pub > dyncall > dyncall
annotate ToDo @ 159:164cf1663b7c
- sparc dcb support entries in changelog
- doc cleanup for sparc cconv appendix
- todo cleanup
author | cslag |
---|---|
date | Thu, 29 Dec 2016 06:27:56 -0600 |
parents | 49549739228c |
children | 572aff021627 |
rev | line source |
---|---|
0 | 1 1.0: |
2 ---- | |
155 | 3 - dyncallback's "stack_cleanup" can be removed from non x86 impls... test if they still work |
86 | 4 - the CallVM-free functions are per VTable, however the latter can be changed out |
5 at runtime... which basically changes potentially the deallocator... | |
6 same goes for functions setting the mode. think about how to make this safer - currently | |
7 we have a higher flexibility and we need to potentially clean up from the mode we are in, | |
8 however, this is open to misuse | |
78 | 9 - check all vararg calling conv implementations if they promote correctly |
10 (e.g. float to double); we used to not care as it was the user's job to | |
11 think of that, but we allow users to use ArgFloat, etc. on "..." now, | |
12 taking care of the promotion; so it should be consistent all across the | |
13 implementations -> also write testcode specifically for that | |
0 | 14 - autovar was never really pushed all the way through and still plays second |
9 | 15 fiddle to dyncall_macros.h, clean this all up, eventually (Tassilo: for now, I |
16 removed out of sync files to avoid confusion; but still probably duped code) | |
0 | 17 - ppc32 callback fixes on bsd |
69 | 18 - add portable "make install" |
19 * make install should also install manpages | |
0 | 20 - mailing list announcements (html email?) |
21 - fix for NDS: | |
69 | 22 * ARM: |
104
dbca6763f2be
- complete, working mips o32 callback (using hardware fp); fixes error from last commit, which ignored first 2 float args
cslag
parents:
100
diff
changeset
|
23 - callback_plain retval wrong (not only platform), area on stack where |
dbca6763f2be
- complete, working mips o32 callback (using hardware fp); fixes error from last commit, which ignored first 2 float args
cslag
parents:
100
diff
changeset
|
24 it's stored is probably not zeroed, so half-words, etc., come with garbage |
69 | 25 * THUMB: |
26 - ellipsis (might be test itself, not respecting fixed part of args) | |
104
dbca6763f2be
- complete, working mips o32 callback (using hardware fp); fixes error from last commit, which ignored first 2 float args
cslag
parents:
100
diff
changeset
|
27 - callback_plain retval, see above under ARM |
69 | 28 - callf |
24 | 29 - support Solaris11 CFLAGS with -D_FILE_OFFSET_BITS=64 |
30 - make sure selinux works (esp. regarding NX bits, asm might need (or similar): .section .note.GNU-stack,"",@progbits) | |
54 | 31 Daniel has a patch for it, if needed, implementing allocwx with two memory blocks, one for w^x, mmaped to one for r|x |
68 | 32 - support /SAFESEH on cl/win32 |
83
54930a037e8a
- PPC64 single-precision float fixes for more than 13 float args (thanks Masanori!)
cslag
parents:
78
diff
changeset
|
33 - test code functions should be in .so files, optionally, so the suites can directly |
54930a037e8a
- PPC64 single-precision float fixes for more than 13 float args (thanks Masanori!)
cslag
parents:
78
diff
changeset
|
34 be used to test dycnall bindings |
54930a037e8a
- PPC64 single-precision float fixes for more than 13 float args (thanks Masanori!)
cslag
parents:
78
diff
changeset
|
35 - pkg-config support? |
90 | 36 - quadmath support (long double) |
117 | 37 - add tests using alloca(), as this might depend on the frame pointer being correctly |
38 set; we don't check for this, currently, at all | |
146
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
39 - test on OpenBSD 6.0 which comes with W^X by default |
0 | 40 |
41 portasm: | |
42 -------- | |
43 - add solaris support for x64 | |
44 | |
45 dyncall: | |
46 -------- | |
146
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
47 - find big endian arm box (also hardfloat), e.g. cubietruck: http://blog.netbsd.org/tnf/entry/working_arm_multiprocessor_support |
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
48 - test if armhf/thumb is actually working... pulls in arm mode code in dyncall_callvm.c |
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
49 - dyncall_call_mips_n32.h and dyncall_call_mips_n64.h are pretty much the same, share code |
0 | 50 - support for return values: aggregate return values |
51 - support for argument values: structures, half-precision, vector types, long double | |
52 - consider automatic type-promotion for arguments passed through DC_CALL_C_ELLIPSIS_VARARGS; | |
53 this would make it easier to just pass arguments instead of having to know about the C | |
88 | 54 type promotions (this is partly done, see todo-item above under 1.0) |
0 | 55 - syscalls for x64 |
56 * bsd | |
57 * linux | |
58 - other syscalls | |
110 | 59 - MIPS32 softfloat support (-msoft-float) |
135 | 60 - test MIPS32 eabi big endian (current port works on psp, which is little endian) |
132
b0cca984c740
- manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents:
129
diff
changeset
|
61 - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and |
b0cca984c740
- manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents:
129
diff
changeset
|
62 EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter) |
129 | 63 - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian |
141 | 64 - support for Minix/arm |
146
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
65 - improve ellipsis test: |
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
66 * test not just with one fixed arg, to also simulate alignment problems |
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
67 * test return values |
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
68 * convert from c++ to c, to have it also on plan9, and more portability |
0 | 69 |
70 dynload: | |
71 -------- | |
72 - bug: test/nm crashes on qemu mips linux o32 debian etch | |
73 - test/resolve_self crashes/asserts on windows and bsds | |
74 - rename SymsInit to InitSyms and similar for cleanup function to reflect naming | |
75 in dyncall | |
76 - get rid of Dl_info and friends (_GNU_SOURCE) in dynload/dynload_syms_elf.c | |
77 for implementation of dlSymsNameFromValue(..) | |
78 - check if PSP can support dynload (missing elf.h, dlfcn.h, etc.); fixup readme if successful | |
84 | 79 - some functionality like java's System.mapLibraryName('name') might be helpful? |
0 | 80 |
81 dyncallback: | |
82 ------------ | |
157
49549739228c
- sparc callback asm and args code (still some stack alignment issues, currently)
cslag
parents:
155
diff
changeset
|
83 - add SPARC64 callback support |
104
dbca6763f2be
- complete, working mips o32 callback (using hardware fp); fixes error from last commit, which ignored first 2 float args
cslag
parents:
100
diff
changeset
|
84 - callback_plain's return value not correct anymore on NDS (maybe just broken testcode?), |
dbca6763f2be
- complete, working mips o32 callback (using hardware fp); fixes error from last commit, which ignored first 2 float args
cslag
parents:
100
diff
changeset
|
85 see above under 1.0 items |
dbca6763f2be
- complete, working mips o32 callback (using hardware fp); fixes error from last commit, which ignored first 2 float args
cslag
parents:
100
diff
changeset
|
86 * check other platforms also, if asm stub initializes retval space, correctly |
21 | 87 - finish PPC32 callbacks (see bugs section, below, BSD not working) |
110 | 88 - MIPS32 softfloat support (-msoft-float) |
135 | 89 - test MIPS32 eabi big endian (current port works on psp, which is little endian) |
132
b0cca984c740
- manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents:
129
diff
changeset
|
90 - implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and |
b0cca984c740
- manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents:
129
diff
changeset
|
91 EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter) |
129 | 92 - implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian |
141 | 93 - support for Minix/arm |
0 | 94 |
95 bindings: | |
96 --------- | |
97 - release bindings as standalone packages (already done for rbdc as a gem and rdyncall on cran) | |
98 * add note to documentation, where bindings are and that some bindings are svn-only ATM | |
99 - add rdoc documentation to ruby gem | |
100 - add pydoc for python | |
101 - add manpage for shdc | |
102 - expose callf-convenience functions to go | |
103 - add godoc for godc | |
104 - add javadoc to java | |
105 - add more bindings | |
106 - add callback support for erlang, go, java, lua, python and ruby (and shell? how?) | |
107 - add call-conv-mode-support for rbdc through signature | |
108 | |
109 manual: | |
110 ------- | |
146
0ab08c1541f0
- fixed armhf ellipsis calls, were ignoring spill area
cslag
parents:
145
diff
changeset
|
111 - 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 |
100
dcb7157392f1
- manual: fixed html output of tables rendered as .png, using tex multirow
cslag
parents:
98
diff
changeset
|
112 - callconv diagrams: |
98 | 113 * good idea to review it all, anyways, if the calling conventions are actually |
100
dcb7157392f1
- manual: fixed html output of tables rendered as .png, using tex multirow
cslag
parents:
98
diff
changeset
|
114 represented correctly (and if they are in sync with the .pdf, we used to have |
dcb7157392f1
- manual: fixed html output of tables rendered as .png, using tex multirow
cslag
parents:
98
diff
changeset
|
115 problems with multirow.4ht) |
0 | 116 - provide more examples on how to use dyncall, dynload and dyncallback |
117 * e.g. enhance manual with a couple of examples (e.g. calling MessageBoxA on windows, etc.) | |
118 - manuals for bindings (as stated in bindings-section, above) | |
117 | 119 - under "dyncall support", in each calling convention appendix, list crucial details of e.g. big/little endian support, etc. |
120 - specify integer models in use, use common ILP32, LLP64, etc. terms | |
0 | 121 |
88 | 122 regressions: |
123 ------------ | |
159 | 124 - finish SPARC64 calling conventions in doc's callconv-appendix !!! |
0 | 125 - Haiku/gmake build doesn't build dynload due to the fact, that elf.h is not found |
126 on default installations (one has to install the system headers) | |
127 * add to doc | |
128 - Solaris/gmake build doesn't build dynload and tests anymore (maybe not even dyncallback) | |
129 - test arm32/ATPCS/THUMB (and then change Status in doc Appendix) | |
130 - look over code and fix TODO or @@@ marks | |
131 - add ppc-support to doc (both, 32 and 64, as well as little and big endian remarks) | |
132 | |
133 nice to have: | |
134 ------------- | |
135 - update: microsoft visual c++ build files - integrate all test suites in solution file | |
136 - consistency: on x64 platforms: make both ABIs available ('win64','sysv') for all x64 OS ports | |
137 - microsoft build enhancement: autodetect assembly via C preprocessor (like with .S gcc files) | |
138 - test/thunk: some platforms do not allow for allocation of executable code on heap and stack -- | |
139 currently this test will crash, maybe we should collect information which platforms allow and which not. | |
140 | |
141 bugs: | |
142 ----- | |
88 | 143 - setting callconv, specifically for platforms that have only one (default)) excepts on some |
6 | 144 platforms, eg. setting X64_sysv on amd64/Linux - keeping cdecl which is the same in |
88 | 145 this case, works (this should work now...) |
0 | 146 - vararg function calls don't work for ARM THUMB mode (Daniel's new interface for modesetting for varag |
147 args should be used); adapt test/ellipsis and/or retest | |
148 | |
149 missing implementations (descending priority): | |
150 ---------------------------------------------- | |
151 - riscv | |
152 - itanium | |
88 | 153 - superh/j-core |
0 | 154 - 68k, 88k, 6502, etc. |
88 | 155 - arc |
0 | 156 - alpha |
157 - cell | |
158 - blackfin | |
88 | 159 - seaforth |
21 | 160 - s/390 |
0 | 161 - z80 |
162 - hppa | |
163 - vax | |
164 - atmel avr | |
165 - propeller | |
166 - amd29k | |
167 |