Mercurial > pub > dyncall > dyncall
diff doc/manual/manual_overview.tex @ 533:71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
* integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv)
* windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.)
* see Changelog for details
- new calling convention modes for thiscalls (platform agnostic, was specific before)
* new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL)
- dcCallF(), dcVCallF(), dcArgF() and dcVArgF():
* added support for aggregates-by-value (wasn't part of patch)
* change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change)
- added macros to feature test implementation for aggregate-by-value and syscall support
- changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order
- doc:
* man page updates to describe aggregate interface
* manual overview changes to highlight platforms with aggregate-by-value support
- test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author | Tassilo Philipp |
---|---|
date | Thu, 21 Apr 2022 13:35:47 +0200 |
parents | b47168dacba6 |
children | 9eb5d92e5c5d |
line wrap: on
line diff
--- a/doc/manual/manual_overview.tex Sat Apr 16 15:00:58 2022 +0200 +++ b/doc/manual/manual_overview.tex Thu Apr 21 13:35:47 2022 +0200 @@ -148,13 +148,17 @@ The feature matrix below gives a brief overview of the currently supported platforms. Different colors are used, where a green cell indicates a supported -platform, yellow a platform that might work (but is untested) and red a platform -that is currently unsupported. Gray cells are combinations that don't exist -at the time of writing, or that are not taken into account.\\ -Light green cells mark complete feature support, as in dyncall and dyncallback. Dark green means basic support but lacking features (e.g. dyncall support, but not dyncallback). -Please note that a green cell (even a light-green one) doesn't imply that all existing calling conventions/features/build tools are supported for that platform (but the most -important). % @@@ The rightmost column gives a brief info about calling convention support or other notes. -For detailed info about a platform's support consult the calling convention appendix. +platform, with both, call and callback support, but lacking aggregate (struct, +union) support, yellow a platform that might work (but is untested) and red a +platform that is currently unsupported. Gray cells are combinations that don't +exist at the time of writing, or that are not taken into account.\\ +Light green cells mark complete feature support, including passing aggregates +(struct, union) by value. Dark green means basic support but lacking features +(e.g. dyncall support, but not dyncallback). Please note that a green cell +(even a light-green one) doesn't imply that all existing calling +conventions/features/build tools are supported for that platform (but the most +important). +% @@@ The rightmost column gives a brief info about calling convention support or other notes. % colors used to signalize undefined, not used, supported, etc. states. @@ -165,19 +169,19 @@ \newcommand{\markunkn}{\cellcolor{yellow}} \newcommand{\marknotx}{\cellcolor{gray1}} -\newcommand{\OSwinfam} {\ninety{Windows family} } -\newcommand{\OSlinux} {\ninety{Linux} } -\newcommand{\OSdarwin} {\ninety{macOS / iOS / Darwin}} -\newcommand{\OSfreebsd}{\ninety{FreeBSD} } -\newcommand{\OSnetbsd} {\ninety{NetBSD} } -\newcommand{\OSopenbsd}{\ninety{OpenBSD} } -\newcommand{\OSdflybsd}{\ninety{DragonFlyBSD} } -\newcommand{\OSsunos} {\ninety{Solaris / SunOS} } -\newcommand{\OSplanN} {\ninety{Plan 9 / 9front} } -\newcommand{\OSbeos} {\ninety{Haiku / BeOS} } -\newcommand{\OSminix} {\ninety{Minix} } -\newcommand{\OSpsp} {\ninety{Playstation Portable}} -\newcommand{\OSnds} {\ninety{Nintendo DS} } +\newcommand{\OSwinfam} {\ninety{Windows family} } +\newcommand{\OSlinux} {\ninety{Linux} } +\newcommand{\OSdarwin} {\ninety{macOS / iOS / Darwin} } +\newcommand{\OSfreebsd}{\ninety{FreeBSD} } +\newcommand{\OSnetbsd} {\ninety{NetBSD} } +\newcommand{\OSopenbsd}{\ninety{OpenBSD} } +\newcommand{\OSdflybsd}{\ninety{DragonFlyBSD} } +\newcommand{\OSsunos} {\ninety{Solaris / SunOS} } +\newcommand{\OSplanN} {\ninety{Plan 9 / 9front} } +\newcommand{\OSbeos} {\ninety{Haiku / BeOS} } +\newcommand{\OSminix} {\ninety{Minix} } +\newcommand{\OSpsp} {\ninety{Playstation Portable (EABI)}} +\newcommand{\OSnds} {\ninety{Nintendo DS} } % also include hardfloat/softfloat @@@ \begin{table}[h] @@ -186,45 +190,45 @@ \arrayrulecolor{gray3}% \multirow{2}{*}{ARM} & EB & \marknotx & \markunkn & \marknotx & \markunkn & \markunkn & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{atpcs (arm \& thumb), eabi (arm \& thumb), armhf} \\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- find@@@ ^- checked ^- find@@@ ^- find@@@ ^- find@@@ ^- checked ^- checked ^- checked ^- new@@@ ^- checked ^- checked ^- checked - & EL & \markunkn & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknimp & \marknotx & \markunkn & \marknotx & \markcmpl \\%& \\ + & EL & \markunkn & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \marknotx & \marknotx & \marknimp & \marknotx & \markunkn & \marknotx & \markimpl \\%& \\ \hline% ^- find@@@ ^- dynOS ^- real ^- dynOS ^- dynOS ^- real/bbb ^- checked ^- checked ^- checked ^- new@@@ ^- new@@@ ^- checked ^- checked \multirow{2}{*}{ARM64} & EB & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{aapcs64, apple} \\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- find@@@ ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked - & EL & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markunkn & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ + & EL & \markimpl & \markimpl & \markimpl & \markimpl & \markunkn & \markimpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline% ^- checked ^- find@@@ ^- checked ^- checked ^- find@@@ ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked -\multirow{2}{*}{MIPS} & EB & \marknotx & \markcmpl & \marknotx & \markcmpl & \markunkn & \marknotx & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{o32 (hf \& sf), eabi (hf only)} \\ +\multirow{2}{*}{MIPS} & EB & \marknotx & \markimpl & \marknotx & \markimpl & \markunkn & \marknotx & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{o32 (hf \& sf), eabi (hf only)} \\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- dynOS ^- checked ^- checked ^- find@@@ ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked - & EL & \marknotx & \markunkn & \marknotx & \markcmpl & \markcmpl & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \markcmpl & \marknotx \\%& \\ + & EL & \marknotx & \markunkn & \marknotx & \markimpl & \markimpl & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \markimpl & \marknotx \\%& \\ \hline% ^- checked ^- find@@@ ^- checked ^- checked ^- dynOS ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked -\multirow{2}{*}{MIPS64} & EB & \marknotx & \markunkn & \marknotx & \markcmpl & \markunkn & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{n64 (hf only), n32 (hf only)} \\ +\multirow{2}{*}{MIPS64} & EB & \marknotx & \markunkn & \marknotx & \markimpl & \markunkn & \markimpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{n64 (hf only), n32 (hf only)} \\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- find@@@ ^- checked ^- checked ^- find@@@ ^- real/ERlt ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked - & EL & \marknotx & \markcmpl & \marknotx & \markcmpl & \markunkn & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ + & EL & \marknotx & \markimpl & \marknotx & \markimpl & \markunkn & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline% ^- checked ^- dynOS ^- checked ^- checked ^- find@@@ ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked \multirow{2}{*}{SuperH} & EB & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked & EL & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline% ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked -\multirow{2}{*}{PowerPC} & EB & \marknotx & \markcmpl & \markcmpl & \markimpl & \markcmpl & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{apple, sysv}\\ +\multirow{2}{*}{PowerPC} & EB & \marknotx & \markimpl & \markimpl & \markimpl & \markimpl & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{apple, sysv}\\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- dynOS ^-dynOS ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked & EL & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline% ^- checked ^- find@@@ ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked -\multirow{2}{*}{PowerPC64} & EB & \marknotx & \markcmpl & \markunkn & \markcmpl & \marknotx & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{elf} \\ +\multirow{2}{*}{PowerPC64} & EB & \marknotx & \markimpl & \markunkn & \markimpl & \marknotx & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{elf} \\ \hhline{*{1}{|~}*{14}{|-}}% ^- checked ^- masanori@ ^- checked ^- dynOS ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked - & EL & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ + & EL & \marknotx & \markimpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline% ^- checked ^- masanori@ ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked ^- checked m68k & & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline m88k & & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline -x86 & & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \marknotx & \marknotx \\%& cdecl, stdcall, fastcall (MS \& GNU), thiscall (MS \& GNU), plan9 \\ +x86 & & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \markimpl & \marknotx & \marknotx \\%& cdecl, stdcall, fastcall (MS \& GNU), thiscall (MS \& GNU), plan9 \\ \hline x64 & & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \marknimp & \markcmpl & \marknotx & \marknotx & \marknotx \\%& ms, sysv\\ -\hline +\hline% ^- @@@ check ^- @@@ check Itanium & & \marknimp & \marknimp & \marknotx & \marknimp & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline -SPARC & & \marknotx & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& v7, v8\\ +SPARC & & \marknotx & \markimpl & \marknotx & \marknotx & \markimpl & \markimpl & \marknotx & \markimpl & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& v7, v8\\ \hline -SPARC64 & & \marknotx & \markcmpl & \marknotx & \markcmpl & \markcmpl & \markcmpl & \marknotx & \markimpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& v9 \\ +SPARC64 & & \marknotx & \markimpl & \marknotx & \markimpl & \markimpl & \markimpl & \marknotx & \markimpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& v9 \\ \hline RISC-V & & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ \hline