changeset 90:e932e6331f35

- manual improvements * html output improved * consistency in tables * little bit of rewording, typos - todo item added
author cslag
date Fri, 03 Jun 2016 02:40:13 +0200
parents 0f7d00b73257
children 00fc2b9b4e3d
files ToDo doc/manual/callconvs/callconv_arm32.tex doc/manual/callconvs/callconv_arm64.tex doc/manual/callconvs/callconv_mips.tex doc/manual/callconvs/callconv_ppc32.tex doc/manual/callconvs/callconv_sparc.tex doc/manual/callconvs/callconv_x64.tex doc/manual/callconvs/callconv_x86.tex doc/manual/manual_bindings.tex doc/manual/manual_dyncall_api.tex doc/manual/manual_epilog.tex doc/manual/manual_tex4ht.cfg
diffstat 12 files changed, 49 insertions(+), 96 deletions(-) [+]
line wrap: on
line diff
--- a/ToDo	Sun May 29 15:38:26 2016 +0200
+++ b/ToDo	Fri Jun 03 02:40:13 2016 +0200
@@ -33,6 +33,7 @@
 - test code functions should be in .so files, optionally, so the suites can directly
   be used to test dycnall bindings
 - pkg-config support?
+- quadmath support (long double)
 
 portasm:
 --------
--- a/doc/manual/callconvs/callconv_arm32.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_arm32.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -28,12 +28,10 @@
 Basically, this family of microprocessors can be run in 2 major modes:\\
 \\
 \begin{tabular*}{0.95\textwidth}{2 B}
-\hline
 Mode          & Description\\
 \hline
 {\bf ARM}     & 32bit instruction set\\
 {\bf THUMB}   & compressed instruction set using 16bit wide instruction encoding\\
-\hline
 \end{tabular*}
 \\
 \\
@@ -56,7 +54,6 @@
 \\
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name         & Brief description\\
 \hline
 {\bf r0}     & parameter 0, scratch, return value\\
@@ -68,7 +65,6 @@
 {\bf r13}    & stack pointer, permanent\\
 {\bf r14}    & link register, permanent\\
 {\bf r15}    & program counter (note: due to pipeline, r15 points to 2 instructions ahead)\\
-\hline
 \end{tabular*}
 \caption{Register usage on arm32}
 \end{table}
@@ -147,7 +143,6 @@
 \\
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name         & Brief description\\
 \hline
 {\bf r0}     & parameter 0, scratch, return value\\
@@ -160,7 +155,6 @@
 {\bf r13}    & stack pointer, permanent\\
 {\bf r14}    & link register, permanent\\
 {\bf r15}    & program counter (note: due to pipeline, r15 points to 2 instructions ahead)\\
-\hline
 \end{tabular*}
 \caption{Register usage on arm32 thumb mode}
 \end{table}
@@ -256,7 +250,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name         & Brief description\\
 \hline
 {\bf R0}     & parameter 0, scratch, return value\\
@@ -276,7 +269,6 @@
 {\bf D8-D15} & permanent, aliases S16-S31, on ARMv7 also as Q4-A7. Not accesible from Thumb mode on ARMv6.\\
 {\bf D16-D31}& Only available in ARMv7, aliases Q8-Q15.\\
 {\bf FPSCR}  & VFP status register.\\
-\hline
 \end{tabular*}
 \caption{Register usage on ARM Apple iOS}
 \end{table}
@@ -302,7 +294,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name         & Brief description\\
 \hline
 {\bf R0}     & parameter 0, scratch, non floating point return value\\
@@ -324,7 +315,6 @@
 {\bf S1-S15} & floating point arguments, single precision\\
 {\bf D1-D7}  & aliases S2-S15, floating point arguments, double precision\\
 {\bf FPSCR}  & VFP status register.\\
-\hline
 \end{tabular*}
 \caption{Register usage on armhf}
 \end{table}
@@ -376,17 +366,11 @@
 Arch   & Platforms & Details \\
 \hline
 ARMv4  & & \\
-\hline
 ARMv4T & ARM 7, ARM 9, Neo FreeRunner (OpenMoko) & \\
-\hline
 ARMv5  & ARM 9E & BLX instruction available \\
-\hline
 ARMv6  & & No vector registers available in thumb \\
-\hline
 ARMv7  & iPod touch, iPhone 3GS/4, Raspberry Pi 2 & VFP throughout available, armhf calling convention on some platforms \\ 
-\hline
 ARMv8  & iPhone 6 and higher & 64bit support \\ 
-\hline
 \end{tabular*}
 \caption{Overview of ARM Architecture, Platforms and Details}
 \end{table}
--- a/doc/manual/callconvs/callconv_arm64.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_arm64.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -44,7 +44,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline        
 {\bf x0-x7}   & parameters, scratch, return value\\
@@ -58,7 +57,6 @@
 {\bf x30}     & permanent, link register\\
 {\bf SP}      & permanent, stack pointer\\
 {\bf PC}      & program counter\\
-\hline
 \end{tabular*}
 \caption{Register usage on arm64}
 \end{table}
--- a/doc/manual/callconvs/callconv_mips.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_mips.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -47,7 +47,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{lll}
-\hline
 Name                                   & Alias                     & Brief description\\
 \hline                                                             
 {\bf \$0}                              & {\bf \$zero}              & Hardware zero \\
--- a/doc/manual/callconvs/callconv_ppc32.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_ppc32.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -45,7 +45,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name                & Brief description\\
 \hline
 {\bf gpr0}          & scratch\\
@@ -68,7 +67,6 @@
 {\bf cr0-cr1}       & scratch\\
 {\bf cr2-cr4}       & permanent\\
 {\bf cr5-cr7}       & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on Darwin PowerPC 32-Bit}
 \end{table}
@@ -156,7 +154,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name              & Brief description\\
 \hline
 {\bf r0}          & scratch\\
@@ -178,7 +175,6 @@
 {\bf ctr}         & Count register (scratch) \\
 {\bf xer}         & Fixed-point exception register (scratch)\\
 {\bf fpscr}       & Floating-point Status and Control Register\\
-
 % {\bf v0-v1}         & scratch\\
 % {\bf v2-v13}        & vector parameters\\
 % {\bf v14-v19}       & scratch\\
@@ -188,7 +184,6 @@
 % {\bf cr0-cr1}       & scratch\\
 % {\bf cr2-cr4}       & permanent\\
 % {\bf cr5-cr7}       & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on System V ABI PowerPC Processor}
 \end{table}
--- a/doc/manual/callconvs/callconv_sparc.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_sparc.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -41,7 +41,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{lll}
-\hline
 Name                                 & Alias                   & Brief description\\
 \hline
 {\bf \%g0}                           &                         & Read-only, hardwired to 0 \\
--- a/doc/manual/callconvs/callconv_x64.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_x64.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -57,7 +57,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name                & Brief description\\
 \hline
 {\bf rax}           & scratch, return value\\
@@ -75,7 +74,6 @@
 {\bf xmm1-xmm3}     & scratch, floating point parameters 1-3\\
 {\bf xmm4-xmm5}     & scratch, permanent if required by caller\\
 {\bf xmm6-xmm15}    & permanent\\
-\hline
 \end{tabular*}
 \caption{Register usage on x64 MS Windows platform}
 \end{table}
@@ -155,7 +153,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name                & Brief description\\
 \hline
 {\bf rax}           & scratch, return value\\
@@ -174,7 +171,6 @@
 {\bf xmm8-xmm15}    & scratch\\
 {\bf st0-st1}       & scratch, 16 byte floating point return value\\
 {\bf st2-st7}       & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x64 System V (Linux/*BSD)}
 \end{table}
--- a/doc/manual/callconvs/callconv_x86.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/callconvs/callconv_x86.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -47,7 +47,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -60,7 +59,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 cdecl calling convention}
 \end{table}
@@ -121,7 +119,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -134,7 +131,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 fastcall (MS) calling convention}
 \end{table}
@@ -198,7 +194,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -211,7 +206,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 fastcall (GNU) calling convention}
 \end{table}
@@ -272,7 +266,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, parameter 0, return value\\
@@ -285,7 +278,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 fastcall (Borland) calling convention}
 \end{table}
@@ -348,7 +340,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, parameter 0, return value@@@\\
@@ -361,7 +352,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 fastcall (Watcom) calling convention}
 \end{table}
@@ -421,7 +411,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -434,7 +423,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 stdcall calling convention}
 \end{table}
@@ -492,7 +480,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -505,7 +492,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 thiscall (MS) calling convention}
 \end{table}
@@ -568,7 +554,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -581,7 +566,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 thiscall (GNU) calling convention}
 \end{table}
@@ -641,7 +625,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -654,7 +637,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 pascal calling convention}
 \end{table}
@@ -713,7 +695,6 @@
 
 \begin{table}[h]
 \begin{tabular*}{0.95\textwidth}{3 B}
-\hline
 Name          & Brief description\\
 \hline
 {\bf eax}     & scratch, return value\\
@@ -726,7 +707,6 @@
 {\bf esp}     & stack pointer\\
 {\bf st0}     & scratch, floating point return value\\
 {\bf st1-st7} & scratch\\
-\hline
 \end{tabular*}
 \caption{Register usage on x86 plan9call calling convention}
 \end{table}
--- a/doc/manual/manual_bindings.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/manual_bindings.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -86,7 +86,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{cl}
-\hline
 Signature character & C/C++ data type \\
 \hline
 \sigchar{B} & \_Bool, bool \\
@@ -105,7 +104,6 @@
 \sigchar{p} & void* \\
 \sigchar{Z} & const char* (pointing to C string) \\
 \sigchar{v} & void \\
-\hline
 \end{tabular*}
 \caption{Type signature encoding for function call data types}
 \label{sigchar}
@@ -124,7 +122,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{rll}
-\hline
 & C function prototype & dyncall signature \\
 \hline
 void      & f1();                                     & \sigstr{)v}\\
@@ -132,7 +129,6 @@
 long long & f3(void*);                                & \sigstr{p)L}\\
 void      & f3(int**);                                & \sigstr{p)v}\\
 double    & f4(int, bool, char, double, const char*); & \sigstr{iBcdZ)d}\\
-\hline
 \end{tabular*}
 \caption{Type signature examples of C function prototypes}
 \label{sigex}
@@ -148,7 +144,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{ll}
-\hline
 Signature character & accepted Erlang data types\\
 \hline
 \sigchar{B} & atoms 'true' and 'false' converted to bool\\
@@ -162,7 +157,6 @@
 \sigchar{p}              & binary (previously returned from call\_ptr or callf) cast to void*\\
 \sigchar{Z}              & string cast to void*\\
 \sigchar{v}              & no return type\\
-\hline
 \end{tabular*}
 \caption{Type signature encoding for Erlang bindings}
 \label{Erlangsigchar}
@@ -178,7 +172,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{ll}
-\hline
 Signature character & accepted Go data types\\
 \hline
 \sigchar{B} & bool\\
@@ -191,7 +184,6 @@
 \sigchar{d}              & float64\\
 \sigchar{p}, \sigchar{Z} & uintptr, unsafe.Pointer\\
 \sigchar{v}              & no return type\\
-\hline
 \end{tabular*}
 \caption{Type signature encoding for Go bindings}
 \label{Gosigchar}
@@ -212,7 +204,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{ll}
-\hline
 Signature character & accepted Python data types\\
 \hline
 \sigchar{B} & bool \\
@@ -225,7 +216,6 @@
 \sigchar{d} & double\\
 \sigchar{p} & string or long casted to void*\\
 \sigchar{v} & no return type\\
-\hline
 \end{tabular*}
 \caption{Type signature encoding for Python bindings}
 \label{Pysigchar}
@@ -242,7 +232,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{ll}
-\hline
 Signature character & accepted R data types\\
 \hline
 \sigchar{B} & coerced to logical vector, first item\\
@@ -261,7 +250,6 @@
 \sigchar{p} & external pointer or coerced to string vector, first item\\
 \sigchar{Z} & coerced to string vector, first item\\
 \sigchar{v} & no return type\\
-\hline
 \end{tabular*}
 \caption{Type signature encoding for R bindings}
 \label{Rsigchar}
@@ -284,7 +272,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{ll}
-\hline
 Signature character & accepted Ruby data types\\
 \hline
 \sigchar{B} & TrueClass, FalseClass, NilClass, Fixnum casted to bool\\
@@ -297,7 +284,6 @@
 \sigchar{d}              & Float cast to double\\
 \sigchar{p}, \sigchar{Z} & String cast to void*\\
 \sigchar{v}              & no return type\\
-\hline
 \end{tabular*}
 \caption{Type signature encoding for Ruby bindings}
 \label{Rubysigchar}
--- a/doc/manual/manual_dyncall_api.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/manual_dyncall_api.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -33,7 +33,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.8\textwidth}{llll}
-\hline
 Subject    & C symbol & Details & Example \\
 \hline  
 Types      
@@ -44,7 +43,6 @@
   & camel-case 
   & \capi{DCCallVM}\\
 Functions  & {\tt dc\group{function name}}  & camel-case & \capi{dcNewCallVM}, \capi{dcArgInt}, \ldots\\
-\hline
 \end{tabular*}
 \caption{C interface conventions}
 \label{sourcecode}
@@ -56,7 +54,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.75\textwidth}{ll}
-\hline
 Type alias & C/C++ data type\\
 \hline
 DCbool     & \_Bool, bool\\
@@ -69,7 +66,6 @@
 DCdouble   & double\\
 DCpointer  & void*\\
 DCvoid     & void\\
-\hline
 \end{tabular*}
 \caption{Supported C/C++ argument and return types}
 \label{types}
@@ -127,12 +123,10 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.95\textwidth}{ll}
-\hline
 Constant & Description\\
 \hline
 \lstinline@DC_ERROR_NONE@             & No error occured. \\
 \lstinline@DC_ERROR_UNSUPPORTED_MODE@ & Unsupported mode, caused by \lstinline@dcMode()@ \\
-\hline
 \end{tabular*}
 \caption{CallVM calling convention modes}
 \label{errorcodes}
@@ -158,7 +152,6 @@
 \begin{table}[h]
 \begin{center}
 \begin{tabular*}{0.95\textwidth}{ll}
-\hline
 Constant & Description\\
 \hline
 \lstinline@DC_CALL_C_DEFAULT@            & C default function call for current platform\\
@@ -196,7 +189,6 @@
 \lstinline@DC_CALL_SYS_X86_INT80H_BSD@   & C syscall for x86 BSD platforms\\
 \lstinline@DC_CALL_SYS_X86_INT80H_LINUX@ & C syscall for x86 Linux\\
 \lstinline@DC_CALL_SYS_PPC32@            & C syscall for ppc32 Linux\\
-\hline
 \end{tabular*}
 \caption{CallVM calling convention modes}
 \label{callingconventionmodes}
@@ -281,8 +273,8 @@
 \paragraph{Functions}
 
 \begin{lstlisting}[language=c]
-void dcArgF (DCCallVM* vm, const DCsigchar* signature, ...);
-void dcVArgF(DCCallVM* vm, const DCsigchar* signature, va_list args);
+void dcArgF  (DCCallVM* vm, const DCsigchar* signature, ...);
+void dcVArgF (DCCallVM* vm, const DCsigchar* signature, va_list args);
 void dcCallF (DCCallVM* vm, DCValue* result, DCpointer funcptr, 
               const DCsigchar* signature, ...);
 void dcVCallF(DCCallVM* vm, DCValue* result, DCpointer funcptr, 
--- a/doc/manual/manual_epilog.tex	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/manual_epilog.tex	Fri Jun 03 02:40:13 2016 +0200
@@ -32,25 +32,26 @@
 
 Consider a simple program that issues a call by directly passing some
 unchecked command line arguments to the call itself, or even worse, by indirectly
-choosing a library and a function to call without verification.
+choosing a library to load and a function to call without verification.
 Such unchecked input data can quite easily be used to intentionally crash the
-program or to hijack it by taking over control of the program flow.\\
-To put it in a nutshell, if not used with care, programs depending on the
-\product{dyncall}, \product{dyncallback} and \product{dynload} libraries,
-can be exploited as arbitrary function call dispatchers through manipulating
-of their input data. Successful exploits of programs like the example outlined above
-can be sed as very powerful tools for a wide variety of malicious attacks, \ldots
+program or to take over control of the program flow.\\
+If not used with care, programs depending on the \product{dyncall},
+\product{dyncallback} and \product{dynload} libraries, can be exploited as
+arbitrary function call dispatchers through manipulation of their input data.
+Successful exploits of badly formed programs like outlined above can be misused
+as powerful tools for a wide variety of malicious attacks, \ldots
  
 
 \subsection{Embedding}
 
 The \product{dyncall} library strives to have a minimal set of dependencies,
 meaning no required runtime dependencies and usually only the necessary tools
-to build the library as build-time dependencies.
+to build the library as build-time dependencies, like a compiler and assembler,
+linker, etc..
 The library uses some heap-memory to store the CallVM and uses by default the
 platform's \capi{malloc()} and \capi{free()} calls. However, providing custom
-\capi{dcAllocMem()} and \capi{dcFreeMem()} functions will override the default
-behaviour.
+\capi{dcAllocMem} and \capi{dcFreeMem} C-preprocessor definitions will override
+the default behaviour.
 See \shell{dyncall/dyncall\_alloc.h} for details.
 
 
@@ -58,26 +59,25 @@
 
 The \product{dyncall} library is thread-safe and reentrant, by means that it
 works correctly during execution of multiple threads if, and only if there is
-at most a single thread pushing arguments to one CallVM (invoking the call is
-always thread-safe, though). Since there's no limitation on the number of
-created CallVM objects, it is recommended to keep a copy for each thread if
-mutliple thread make use of \product{dyncall} at once.
-
+at most a single thread pushing arguments to one CallVM. Since there's no
+limitation on the number of created CallVM objects, it is recommended to keep a
+copy per thread if mutliple threads make use of \product{dyncall} in parallel.
+Invoking the call should always be thread-safe, however, whether the called
+function is thread-safe is up to the programmer to verify, of course.
 
 \subsection{Supported types}
 
 Currently, the \product{dyncall} library supports all of ANSI C's integer,
-floating point and pointer types as function call arguments as well as return
-values. Additionally, C++'s \capi{bool} and C99's \capi{\_Bool} types are supported.
-Due to the still rare and often incomplete support of the \capi{long double} type
-on various platforms, the latter is currently not officially supported.
-
+floating point and pointer types as function call arguments and return values.
+Additionally, C++'s \capi{bool} and C99's \capi{\_Bool} types are supported.
+Due to the still rare and often incomplete support of the \capi{long double}
+type on various platforms, the latter is currently not officially supported.
 
 \subsection{Roadmap}
 
 The \product{dyncall} library should be extended by a wide variety of other
-calling conventions and ported to other and more esoteric platforms. With its low
-memory footprint it surely might come in handy on embedded systems.
+calling conventions and ported to other and more esoteric platforms. With its
+low memory footprint it surely comes in handy on embedded systems.
 Furthermore, the authors plan to provide more scripting language bindings,
 examples, and other projects based on \product{dyncall}.\\
 Besides \product{dyncall} and \product{dyncallback}, the \product{dynload}
--- a/doc/manual/manual_tex4ht.cfg	Sun May 29 15:38:26 2016 +0200
+++ b/doc/manual/manual_tex4ht.cfg	Fri Jun 03 02:40:13 2016 +0200
@@ -100,6 +100,24 @@
 	{\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi >}}
 	{\HCode{</td>}}
 
+% Remove hr-tags that tex4ht inserts by default in around floats (e.g. tables) and replace them with a background.
+% Also remove hr-tags around figures, entirely.
+\Configure{float}[]{\HCode{<div style="margin:1em;padding:0.5em;background:rgba(200,200,200,0.1);width:100\%;">}}{}{\HCode{</div>}}
+\ConfigureEnv{figure}{\HCode{}}{\HCode{}}{}{}
+
+%% Simplest possible table layout - do rest in css.
+%\Configure{HBorder}
+%	{<tr>}
+%	{}
+%	{</tr>}
+%	{<tr>}
+%	{}
+%	{}
+%	{</tr>}
+%	{<tr>}
+%	{}
+%	{</tr>}
+
 % @@@ Did not get that below to work, and don't understand it, either.
 % @@@ Default output is ok, so we're simply changing class name in
 % @@@ instead of this postprocessing. See Makefile.
@@ -137,7 +155,12 @@
 %http://www.itisnotoverengineering.com/2013/06/syntax-highlighting-with-tex4ht.html
 
 % Simplest possible paragraphs
-\Configure{HtmlPar}{\EndP\Tg<p >}{\EndP\Tg<p>}{\HCode{</p>\Hnewline}}{\HCode{</p>\Hnewline}}
+% @@@ this creates paragraphs around block level elements, which is not what we would like
+% @@@ but it looks decent, except for the space in the float-element lr-corner
+\Configure{HtmlPar}{\EndP\Tg<p>}{\EndP\Tg<p>}{\HCode{</p>\Hnewline}}{\HCode{</p>\Hnewline}}
+%\Configure{HtmlPar}{\EndP\HCode{}}{\EndP\HCode{}}{\HCode{\Hnewline}}{\HCode{\Hnewline}}
+%\Configure{HtmlPar}{\EndP\Tg<p>}{\EndP\HCode{}}{\HCode{</p>\Hnewline}}{\HCode{\Hnewline}}
+%\Configure{HtmlPar}{\EndP\HCode{}}{\EndP\Tg<p>}{\HCode{\Hnewline}}{\HCode{</p>\Hnewline}}