Affix
view release on metacpan or search on metacpan
dyncall/ChangeLog view on Meta::CPAN
general:
o assembly code now built by explicitily asking for non-execstack, for safer/easier integration
into other projects/builds, where needed; needed b/c of questionable default behaviours of some
toolchains (thanks Thorsten Behrens for report and analysis)
doc:
o working html doc generation from TEX sources
o SPARC32 (v7/v8) calling convention description
o SPARC64 (v9) calling convention description
bindings:
o better documentation, removed relative path dependencies, general cleanup
o python: updated to latest signature format (was still on 0.1)
o java: rewritten (old version was never complete, anyways)
tests:
o added new dynload_plain test covering basic use of all dynload functions
buildsys:
o cmake: made to work on systems without C++ compiler (thanks Franklin Mathieu)
Version 0.9 (2015/12/31)
dyncall:
dyncall/ChangeLog view on Meta::CPAN
o added subproject: autovar - predefined macro framework (was dyncall_macros.h)
o added support for Solaris and SunPro compiler for i386, x86_64, sparc and sparc64
o improved auto-detection via preprocessor defines
dyncall:
o uses portasm (GNU,Apple,Microsoft) common sources for x86,x64,ppc32,arm32_arm
o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
o bug fixes for x64/win64 calling convention
o added support for mingw32-w64 on x64
o improved cdecl x86 calling convention: stack always 16 byte aligned
o updated API and initial support for structs (for x86/AMD64)
o initial support for syscalls on x86, added x86 int80h linux/bsd
o added Minix port (stable)
o optimized vector buffer for small type pushing
o minor fix for amd64/sysv: alignment to 32-byte
o bug fix for ppc32/sysv: ellipsis calls work now
o updated API, introduced DC_CALL_C_ELLIPSIS_VARARGS
o changed interface: dcMode does not reset internally anymore
dyncallback:
o uses portasm for x86,x64
o added Solaris/x86/sunpro port (stable)
o added Minix port (unstable)
o callback support for Darwin/ppc32
o updates source, uses relative includes
dynload:
o fixes for missing includes (dyncall_alloc.h)
o fixes for self-resolving symbols on windows
dyncall/ChangeLog view on Meta::CPAN
o added zero-config (BSD,GNU,SUN) make files (Makefile.embedded)
o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic)
o added bootstrap lua script (download/build)
o Nmakefile: more tests included (resolve_self)
o improved cross-compilation for iOS (upgrade to 4.3 sdk)
o darwin 8.0 support
o added 'install' support for Makefile.embedded
buildsys/gmake updates:
o added support for msvc/x64 tool-chain
o default settings for build-dir changed to '.'
o cleanup: removed top-level Make{Prolog,Epilog,Rules} files and updated all sub-projects and tests
o added support for DESTDIR staging installation
o added support for manual page installation
buildsys/cmake updates:
o updated find module scripts (see cmake/Modules)
o added support for using dyncall as sub-project (via *Config.cmake files)
see details in README.CMake
o fixes for msvc and ml
o fixes for CPack
o fixes for universal builds on Mac OS X
o supports SunPro with *.S files.
o added experimental 'dynMake' portable make-based build-system (not stable, yet)
doc:
o added dyncallback documentation
o updated dyncall documentation
o minor updates
tests:
o added flexible test suite for calls (call_suite) based on Lua and C
o added syscall test
o updates to resolve-self test (adding additional link flags to export symbols)
o renamed *.cpp -> *.cc files (OpenBSD/Sun make has no implicit rules for cpp)
Version 0.6 (2010/09/25)
dyncall/ChangeLog view on Meta::CPAN
o plain: split "plain" test up in C and C++ part
o callbacksuite: added multiple configuration support for callback_suite
Version 0.5 (2010/02/01)
o renamed arm9 stuff to arm32
o added non-EABI ABI for arm32 (before, EABI was the default implementation)
o added dyncallback support for x64/windows (thanks Olivier), x64/darwin, arm32/arm, arm32/thumb
o synced documentation again with current state of the source (lots of small changes)
o updated ruby binding to current state of signature string (still some features missing, though)
o added a couple of new options to configure scripts (e.g. prefix-bd, new targets, etc.)
o darwin universal binary support
o added new tests callback_plain and calback_suite
o added Haiku/BeOS support
Version 0.4 (2009/07/06)
o added 'doc' makefile target for coherency and ease of use
o fixed nmake buildfiles and configure.bat (were out of date and wrong)
dyncall/ChangeLog view on Meta::CPAN
target "config" modified, phony without dependencies to other builds
o bugfix: GNU fastcall calling convention for float and double arguments was wrong (no skip of register)
o update: x86win32* suite tests are built on cygwin now, added total result output
o signature char (breaking) changes:
C Strings: 'S' -> 'Z'
long: 'l' -> 'j'
long long: 'L' -> 'l'
added unsigned integer type signature characters: upper case encoding
o added: callbacks component (support only for some platforms ATM)
o added: test cases for alloc_wx, thunk
o updated Documentation
Version 0.3 (2009/01/17)
o added Linux PPC32 support
o added ARM THUMB mode support
o cosmetic changes, documentation updated
o bugfix: on cygwin exported C symbols in GNU as are prefixed with '_' now.
o removed scons build support
Version 0.2 (2008/05/18)
o added scons build support
o configure variables all prefix CONFIG_* now
o configure variable INSTALL_DIR changed to INSTALL_PREFIX
o configure (shell version) option "--prefix" changed to "--prefix=<path>"
dyncall/doc/manual/callconvs/callconv_ppc64.tex view on Meta::CPAN
\caption{Register usage on PowerPC 64-Bit ELF ABI}
\end{table}
\paragraph{Parameter passing}
\begin{itemize}
\item stack grows down
\item stack parameter order: right-to-left
\item caller cleans up the stack
\item stack is always 16 byte aligned
\item the stack pointer must be atomically updated (to avoid any timing window in which an interrupt can occur with a partially updated stack), usually with the stdu (store doubleword with update) instruction
\item the first 8 integer parameters are passed in registers gpr3-gpr10
\item the first 13 floating point parameters are passed in registers fpr1-fpr13
\item preserved registers are saved using a defined order (from high to low addresses):
fpr* (64bit aligned),
gpr*,
VRSAVE save word (32 bits),
padding for alignment (4 or 12 bytes),
v* (128bit aligned)
\item if a floating point parameter is passed via a register, a gpr registers is skipped for subsequent integer parameters
\item the caller pushes subsequent parameters onto the stack
dyncall/test/sign/sign.c view on Meta::CPAN
dcReset(vm);
dcArgUShort( vm, 0xFFFF );
result = dcCallInt( vm, &add1s );
total = (result == 0x10000);
printf("result: sign (bugfix): %d\n", total);
}
/*result = dcCallInt( vm, &add1s );
total = (result == 0x10000);*/
/*OLD TEST: updated to using 'short'
dcArgChar( vm, (char) 255 );
result = dcCallInt( vm, &add1 );
total = (result == 256);*/
/*printf("result: sign: %d\n", total); */
return 0;
}
t/50_affix_pointers.t view on Meta::CPAN
sub {
diag __LINE__;
pass('our coderef was called');
is_deeply \@_, [ 4, 8 ], '... and given correct arguments';
diag __LINE__;
50.25;
}
),
900, 'making call to test various types of pointers';
diag __LINE__;
is $ptr, 100.5, 'Pointer[Double] was updated!';
}
diag __LINE__;
{
is pointer_test(
undef,
[ 1 .. 5 ],
5,
sub {
diag __LINE__;
pass('our coderef was called');
t/50_affix_pointers.t view on Meta::CPAN
is_deeply \@_, [ 4, 8 ], '... and given correct arguments';
50.25;
}
),
( $Config{usequadmath} ? 18.3382499999999986073362379102036 :
$Config{uselongdouble} ? 18.3382499999999986 :
18.33825 ), 'making call with Dyn::Call::Pointer object with packed data';
is unpack( 'd', $ptr ),
( $Config{usequadmath} ? 3.49299999999999988276044859958347 :
$Config{uselongdouble} ? 3.49299999999999988 :
3.493 ), 'Dyn::Call::Pointer updated';
diag __LINE__;
free $ptr;
diag __LINE__;
}
diag __LINE__;
subtest struct => sub {
diag __LINE__;
typedef massive => Struct [
B => Bool,
c => Char,
( run in 0.676 second using v1.01-cache-2.11-cpan-05444aca049 )