Mercurial > pub > dyncall > dyncall
comparison doc/manual/manual_devel.tex @ 467:b47168dacba6
manual:
- adding aggregate passing and returning info for x64 (win and sysv, however, *only* w/ respect to types supported by dyncall)
- python binding text cleanup and sync with current binding version
- added suite_aggrs description and cleaned up other test suite descriptions a bit
- update list of calling convention modes
- cleanup and minor other fixes (e.g. changed \newpage in many places to \clearpage to avoid hitting float limit, crlf->cr, ...)
author | Tassilo Philipp |
---|---|
date | Fri, 04 Feb 2022 23:54:42 +0100 |
parents | 7ca46969e0ad |
children | 17287342e273 |
comparison
equal
deleted
inserted
replaced
466:ddfb9577a00e | 467:b47168dacba6 |
---|---|
15 % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 15 % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 % | 17 % |
18 %////////////////////////////////////////////////////////////////////////////// | 18 %////////////////////////////////////////////////////////////////////////////// |
19 | 19 |
20 \newpage | 20 \clearpage |
21 \section{Developers} | 21 \section{Developers} |
22 | 22 |
23 \subsection{Noteworthy files in the project root} | 23 \subsection{Noteworthy files in the project root} |
24 \begin{tabular*}{0.75\textwidth}{ll} | 24 \begin{tabular*}{0.75\textwidth}{ll} |
25 {\tt configure} & pre-make configuration tool (unix-shell) \\ | 25 {\tt configure} & pre-make configuration tool (unix-shell) \\ |
43 \subsection{Test suites} | 43 \subsection{Test suites} |
44 | 44 |
45 \begin{description} | 45 \begin{description} |
46 | 46 |
47 \item [plain] | 47 \item [plain] |
48 Simple, identity, unary function calls for all supported return types and | 48 Simple, identity, mostly unary function calls for all supported return types |
49 calling conventions. | 49 and calling conventions. This is not an extensive test suite, but a good place |
50 to manually test certain cases. | |
50 | 51 |
51 \item [plain\_c++] | 52 \item [plain\_c++] |
52 Similar to plain, but for C++ thiscalls (GNU and MS calling convention). | 53 Similar to plain, but for C++ thiscalls (in different forms and fashion, with |
54 aggregates, vararg methots, on x86 with GNU and MS calling convention, etc.). | |
53 | 55 |
54 \item [suite] | 56 \item [suite] |
55 All combinations of parameter types and counts are tested on void function | 57 All combinations of parameter types and counts are tested on void function |
56 calls. A script written in Python ({\tt mkcase.py}) generates the tests up to | 58 calls. A Python script ({\tt mkcase.py}) generates the tests up to |
57 an upper MAXARG limit. | 59 an upper MAXARG limit. |
58 | 60 |
59 \item [suite\_floats] | 61 \item [suite\_floats] |
60 Based on suite. Test double/float variants with up to 10 arguments. | 62 Based on suite. Test double/float variants with up to 10 arguments. |
61 | 63 |
64 \item [suite\_aggrs] | |
65 Tests passing and returning aggregates by value (struct/union and array members). | |
66 Test cases can be designed in a signature-style format (and random ones generated | |
67 via a Lua script). | |
68 | |
62 \item [suite\_x86win32std] | 69 \item [suite\_x86win32std] |
63 All combinations of parameter types and counts are tested on {\tt \_\_stdcall} | 70 All combinations of parameter types and counts are tested on {\tt \_\_stdcall} |
64 void function calls. A script written in Python ({\tt mkcase.py}) generates | 71 void function calls. A Python script ({\tt mkcase.py}) generates |
65 the tests up to an upper MAXARG limit. This is a x86/Windows only test. | 72 the tests up to an upper MAXARG limit. This is a x86/Windows only test. |
66 | 73 |
67 \item [suite\_x86win32fast] | 74 \item [suite\_x86win32fast] |
68 All combinations of parameter types and counts are tested on {\tt \_\_fastcall} | 75 All combinations of parameter types and counts are tested on {\tt \_\_fastcall} |
69 (MS or GNU, depending on the build tool) void function calls. | 76 (MS or GNU, depending on the build tool) void function calls. |
70 A script written in Python ({\tt mkcase.py}) generates the tests up to | 77 A Python script ({\tt mkcase.py}) generates the tests up to |
71 an upper MAXARG limit. This is a x86/Windows only test. | 78 an upper MAXARG limit. This is a x86/Windows only test. |
72 | 79 |
73 \item [ellipsis] | 80 \item [ellipsis] |
74 All combinations of parameter types and counts are tested on void ellipsis | 81 All combinations of parameter types and counts are tested on void ellipsis |
75 function calls. A script written in Python ({\tt mkcase.py}) generates the | 82 (vararg) function calls. A Python script ({\tt mkcase.py}) generates the |
76 tests up to an upper MAXARG limit. | 83 tests up to an upper MAXARG limit. |
77 | 84 |
78 \item [suite2] | 85 \item [suite2] |
79 Designed mass test suite for void function calls. | 86 Designed mass test suite for void function calls. |
80 Tests individual void functions with a varying count of arguments and type. | 87 Tests individual void functions with a varying count of arguments and type. |
97 This is a modified version of suite. | 104 This is a modified version of suite. |
98 | 105 |
99 \item [call\_suite] | 106 \item [call\_suite] |
100 General purpose test suite combining aspects from all others suites (usually enough for | 107 General purpose test suite combining aspects from all others suites (usually enough for |
101 testing non-callback calls). | 108 testing non-callback calls). |
102 A script written in Lua generates the tests. | 109 Test cases can be designed in a signature-style format (and random ones generated |
110 via a Lua script). | |
103 | 111 |
104 \item [callf] | 112 \item [callf] |
105 Tests the \emph{formatted call} \product{dyncall} C API. | 113 Tests the \emph{formatted call/arg} \product{dyncall} C API. Tries to cover all uses of |
114 that API (e.g. calling convention mode switches, aggregates, ...) but is not extensive. | |
106 | 115 |
107 \item [malloc\_wx] | 116 \item [malloc\_wx] |
108 Tests \emph{writable and executable memory allocation} used by the | 117 Tests \emph{writable and executable memory allocation} used by the |
109 \product{dyncallback} C API. | 118 \product{dyncallback} C API. |
110 | 119 |
111 \item [thunk] | 120 \item [thunk] |
112 Tests \emph{callbacks} for the \product{dyncallback} C API. | 121 Tests only the \emph{callback} thunks for the \product{dyncallback} C API. |
113 | 122 |
114 \item [callback\_plain] | 123 \item [callback\_plain] |
115 Simple callback function test (useful for easy debugging of new ports). | 124 Simple callback function test (useful for easy debugging of new ports). |
116 | 125 |
117 \item [callback\_suite] | 126 \item [callback\_suite] |
118 Mass test suite for callback function testing. Uses random function argument | 127 Mass test suite for callback function testing. Uses random function argument |
119 number and type. | 128 number and type. |
120 A script written in Lua generates the tests up to a given number of calls and | 129 A Lua script the tests up to a given number of calls and type combinations. |
121 type combinations. | |
122 | 130 |
123 \item [resolv\_self] | 131 \item [resolv\_self] |
124 Test for dynload library to resolve symbols from application image itself. | 132 Test for dynload library to resolve symbols from application image itself. |
125 | 133 |
126 \end{description} | 134 \end{description} |