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}