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