├── AUTHORS ├── BUGS ├── CMakeLists.txt ├── ChangeLog ├── LICENSE ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README ├── ToDo ├── autovar ├── LICENSE.txt ├── README.txt ├── autovar_ABI.h ├── autovar_ARCH.h ├── autovar_CC.h ├── autovar_OS.h └── autovar_OSFAMILY.h ├── buildsys ├── cmake │ └── Modules │ │ ├── FindDynCall.cmake │ │ ├── FindDynCallback.cmake │ │ ├── FindDynLoad.cmake │ │ └── UseLATEX.cmake ├── dynmake │ ├── Makefile.base.M │ ├── dynmake.bat │ └── dynmake.sh ├── lua │ ├── Makefile │ ├── README.txt │ ├── bootstrap.sh │ ├── cleanup.sh │ ├── mkfile │ └── setenv.sh ├── mk │ ├── app.mk │ ├── dirs.mk │ ├── epilog.mk │ ├── lib.mk │ ├── pcc.mk │ └── prolog.mk ├── nmake │ ├── common.nmake │ ├── epilog.nmake │ ├── prolog.nmake │ ├── tool_gcc.nmake │ └── tool_msvc.nmake ├── scripts │ ├── batch-build-linux.sh │ ├── batch-build-minix.sh │ ├── batch-build-psp.sh │ ├── conf-nds.bat │ ├── elf-to-psp-eboot.sh │ ├── setenv-cross-ios.sh │ └── setenv-sdk-ios.sh └── vs2005 │ ├── dyncall │ └── dyncall.vcproj │ ├── test_plain │ └── test_plain.vcproj │ └── vs2005.sln ├── configure ├── configure.bat ├── configure.rc ├── doc ├── Description.txt ├── License.txt ├── Makefile.generic ├── README-Cross.txt ├── README.CMake ├── README.Generic ├── README.MacOSX ├── README.Minix ├── README.NDS ├── README.PSP ├── README.SunOS ├── README.Windows ├── README.embedded ├── README.iOS └── manual │ ├── CMakeLists.txt │ ├── Makefile.generic │ ├── Nmakefile │ ├── callconvs │ ├── callconv_arm32.tex │ ├── callconv_arm64.tex │ ├── callconv_mips.tex │ ├── callconv_mips64.tex │ ├── callconv_ppc32.tex │ ├── callconv_ppc64.tex │ ├── callconv_sparc.tex │ ├── callconv_sparc64.tex │ ├── callconv_x64.tex │ └── callconv_x86.tex │ ├── dyncall_logo.eps │ ├── dyncall_logo.pdf │ ├── dyncall_logo.svg │ ├── dyncall_watermark.eps │ ├── dyncall_watermark.pdf │ ├── dyncall_watermark.svg │ ├── manual.tex │ ├── manual_bindings.tex │ ├── manual_build.tex │ ├── manual_cc.tex │ ├── manual_design.tex │ ├── manual_devel.tex │ ├── manual_dyncall_api.tex │ ├── manual_dyncallback_api.tex │ ├── manual_dynload_api.tex │ ├── manual_epilog.tex │ ├── manual_literature.tex │ ├── manual_motivation.tex │ ├── manual_overview.tex │ ├── manual_tex4ht.cfg │ └── manual_title.tex ├── dynMakefile ├── dyncall ├── CMakeLists.txt ├── DynCallConfig.cmake ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README-Developer.txt ├── README.txt ├── TODO ├── dynMakefile ├── dyncall.3 ├── dyncall.h ├── dyncall_alloc.h ├── dyncall_api.c ├── dyncall_call.S ├── dyncall_call_arm32_arm.S ├── dyncall_call_arm32_arm.h ├── dyncall_call_arm32_arm_armhf.S ├── dyncall_call_arm32_arm_armhf.h ├── dyncall_call_arm32_thumb.h ├── dyncall_call_arm32_thumb_apple.s ├── dyncall_call_arm32_thumb_armhf.S ├── dyncall_call_arm32_thumb_gas.s ├── dyncall_call_arm64.S ├── dyncall_call_arm64.h ├── dyncall_call_mips.h ├── dyncall_call_mips_eabi.h ├── dyncall_call_mips_eabi_gas.s ├── dyncall_call_mips_gas.S ├── dyncall_call_mips_n32.h ├── dyncall_call_mips_n32_gas.s ├── dyncall_call_mips_n64.h ├── dyncall_call_mips_n64_gas.s ├── dyncall_call_mips_o32.h ├── dyncall_call_mips_o32_gas.s ├── dyncall_call_ppc32.S ├── dyncall_call_ppc32.h ├── dyncall_call_ppc64.S ├── dyncall_call_ppc64.h ├── dyncall_call_sparc.S ├── dyncall_call_sparc.h ├── dyncall_call_sparc64.S ├── dyncall_call_sparc64.h ├── dyncall_call_sparc_v9.S ├── dyncall_call_sparc_v9.h ├── dyncall_call_x64-att.S ├── dyncall_call_x64.S ├── dyncall_call_x64.h ├── dyncall_call_x64_generic_masm.asm ├── dyncall_call_x86.S ├── dyncall_call_x86.h ├── dyncall_call_x86_8a.s ├── dyncall_call_x86_generic_masm.asm ├── dyncall_call_x86_nasm.asm ├── dyncall_callf.c ├── dyncall_callf.h ├── dyncall_callvm.c ├── dyncall_callvm.h ├── dyncall_callvm_arm32_arm.c ├── dyncall_callvm_arm32_arm.h ├── dyncall_callvm_arm32_arm_armhf.c ├── dyncall_callvm_arm32_arm_armhf.h ├── dyncall_callvm_arm32_thumb.c ├── dyncall_callvm_arm32_thumb.h ├── dyncall_callvm_arm64.c ├── dyncall_callvm_arm64.h ├── dyncall_callvm_arm64_apple.c ├── dyncall_callvm_base.c ├── dyncall_callvm_mips.c ├── dyncall_callvm_mips.h ├── dyncall_callvm_mips_eabi.c ├── dyncall_callvm_mips_eabi.h ├── dyncall_callvm_mips_n32.c ├── dyncall_callvm_mips_n64.c ├── dyncall_callvm_mips_n64.h ├── dyncall_callvm_mips_o32.c ├── dyncall_callvm_mips_o32.h ├── dyncall_callvm_ppc32.c ├── dyncall_callvm_ppc32.h ├── dyncall_callvm_ppc64.c ├── dyncall_callvm_ppc64.h ├── dyncall_callvm_sparc.c ├── dyncall_callvm_sparc.h ├── dyncall_callvm_sparc64.c ├── dyncall_callvm_sparc64.h ├── dyncall_callvm_sparc_v9.c ├── dyncall_callvm_sparc_v9.h ├── dyncall_callvm_x64.c ├── dyncall_callvm_x64.h ├── dyncall_callvm_x86.c ├── dyncall_callvm_x86.h ├── dyncall_config.h ├── dyncall_macros.h ├── dyncall_signature.h ├── dyncall_struct.c ├── dyncall_struct.h ├── dyncall_types.h ├── dyncall_utils.h ├── dyncall_value.h ├── dyncall_vector.c ├── dyncall_vector.h ├── gen-masm.sh └── mkfile ├── dyncallback ├── CMakeLists.txt ├── DynCallbackConfig.cmake ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── TODO ├── dynMakefile ├── dyncall_alloc_wx.c ├── dyncall_alloc_wx.h ├── dyncall_alloc_wx_malloc.c ├── dyncall_alloc_wx_mmap.c ├── dyncall_alloc_wx_win32.c ├── dyncall_args.c ├── dyncall_args.h ├── dyncall_args_arm32_arm.c ├── dyncall_args_arm32_arm.h ├── dyncall_args_arm32_thumb.c ├── dyncall_args_arm32_thumb.h ├── dyncall_args_arm64.c ├── dyncall_args_arm64_apple.c ├── dyncall_args_mips.c ├── dyncall_args_mips.h ├── dyncall_args_ppc32.c ├── dyncall_args_ppc32.h ├── dyncall_args_ppc32_sysv.c ├── dyncall_args_ppc64.c ├── dyncall_args_ppc64.h ├── dyncall_args_sparc32.c ├── dyncall_args_sparc32.h ├── dyncall_args_sparc64.c ├── dyncall_args_sparc64.h ├── dyncall_args_x64.c ├── dyncall_args_x64.h ├── dyncall_args_x86.c ├── dyncall_args_x86.h ├── dyncall_callback.c ├── dyncall_callback.h ├── dyncall_callback_arch.S ├── dyncall_callback_arm32_arm.c ├── dyncall_callback_arm32_arm.h ├── dyncall_callback_arm32_arm_apple.s ├── dyncall_callback_arm32_arm_gas.s ├── dyncall_callback_arm32_thumb.c ├── dyncall_callback_arm32_thumb.h ├── dyncall_callback_arm32_thumb_apple.s ├── dyncall_callback_arm32_thumb_gas.s ├── dyncall_callback_arm64.c ├── dyncall_callback_arm64.s ├── dyncall_callback_mips.c ├── dyncall_callback_mips.h ├── dyncall_callback_ppc32.S ├── dyncall_callback_ppc32.c ├── dyncall_callback_ppc32.h ├── dyncall_callback_ppc32_apple.s ├── dyncall_callback_ppc64.S ├── dyncall_callback_ppc64.c ├── dyncall_callback_ppc64.h ├── dyncall_callback_sparc32.c ├── dyncall_callback_sparc32.h ├── dyncall_callback_sparc32.s ├── dyncall_callback_sparc64.c ├── dyncall_callback_sparc64.s ├── dyncall_callback_x64.S ├── dyncall_callback_x64.c ├── dyncall_callback_x64.h ├── dyncall_callback_x64_masm.asm ├── dyncall_callback_x86.S ├── dyncall_callback_x86.c ├── dyncall_callback_x86.h ├── dyncall_callback_x86_8a.s ├── dyncall_callback_x86_masm.asm ├── dyncall_thunk.c ├── dyncall_thunk.h ├── dyncall_thunk_arm32_arm.c ├── dyncall_thunk_arm32_arm.h ├── dyncall_thunk_arm32_thumb.c ├── dyncall_thunk_arm32_thumb.h ├── dyncall_thunk_arm64.c ├── dyncall_thunk_arm64.h ├── dyncall_thunk_mips.c ├── dyncall_thunk_mips.h ├── dyncall_thunk_ppc32.c ├── dyncall_thunk_ppc32.h ├── dyncall_thunk_ppc32_sysv.c ├── dyncall_thunk_ppc64.c ├── dyncall_thunk_ppc64.h ├── dyncall_thunk_sparc32.c ├── dyncall_thunk_sparc32.h ├── dyncall_thunk_sparc64.c ├── dyncall_thunk_sparc64.h ├── dyncall_thunk_x64.c ├── dyncall_thunk_x64.h ├── dyncall_thunk_x86.c ├── dyncall_thunk_x86.h ├── dyncallback.3 ├── gen-masm.sh └── mkfile ├── dynload ├── CMakeLists.txt ├── DynLoadConfig.cmake ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── TODO ├── dynMakefile ├── dynload.3 ├── dynload.c ├── dynload.h ├── dynload_alloc.h ├── dynload_darwin.c ├── dynload_syms.c ├── dynload_syms_elf.c ├── dynload_syms_mach-o.c ├── dynload_syms_pe.c ├── dynload_unix.c └── dynload_windows.c ├── mkfile ├── portasm ├── README.txt ├── gen-masm.sh ├── portasm-arm.S ├── portasm-ppc.S ├── portasm-x64-att.S └── portasm-x86.S └── test ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── arm-thumb-interwork ├── Makefile-default.config ├── Makefile-thumb.config ├── README.txt └── build.sh ├── call_suite ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── cases.c ├── cases.h ├── cases.txt ├── config.lua ├── design.txt ├── dynMakefile ├── globals.c ├── globals.h ├── invoke.c ├── main.c ├── mk-cases.lua ├── mkfile └── rand-sig.lua ├── callback_plain ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── callback_plain.c ├── dynMakefile └── mkfile ├── callback_suite ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── _auto_config.h ├── _auto_invoke_macros.h ├── _auto_invoke_table.h ├── _auto_invokers.h ├── _auto_signatures.txt ├── _auto_sigstrings.h ├── config-random.lua ├── config-stress1.lua ├── config.lua ├── do_test.c ├── dynMakefile ├── dyncall_value_set.h ├── env.c ├── env.h ├── handler.c ├── invokers.c ├── invokers.h ├── main.c ├── make-config.lua ├── make-cstrings.lua ├── make-invoke-macros.lua ├── make-invoke-table.lua ├── make-invokers.lua ├── make-signatures.lua ├── mkfile ├── print.c ├── print.h ├── signature_utils.c ├── signature_utils.h ├── sigstrings.c ├── sigstrings.h └── stress1.cfg ├── callf ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── dynMakefile ├── main.c └── mkfile ├── common ├── platformInit.c └── platformInit.h ├── dynMakefile ├── ellipsis ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.h ├── config.h ├── dynMakefile ├── ellipsis.cc ├── main.cc └── mkcase.py ├── gen-masm ├── Makefile ├── call_x64.S ├── call_x64.masm ├── call_x86.S ├── call_x86.masm └── gen_masm.sh ├── hacking-arm-thumb-interwork ├── Makefile ├── Makefile.darwin ├── Makefile.linux ├── README.txt ├── arm.c ├── diff-gcc-defs │ ├── Makefile │ ├── diff-generic.sh │ ├── empty.S │ └── empty.c ├── test.c └── thumb.c ├── hacking-mips ├── Makefile ├── README.txt ├── call.c ├── calls.c ├── common.h ├── dispatch.c ├── f.c ├── f0.c ├── funs.c ├── main.c ├── node.c ├── prolog.c └── retn.c ├── makepkg.sh ├── malloc_wx ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── dynMakefile ├── mkfile └── test_wx.c ├── mkfile ├── nm ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── dynMakefile └── nm.c ├── pack-tests.sh ├── plain ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── dynMakefile ├── mkfile ├── test_framework.h ├── test_main.c └── test_structs.c ├── plain_c++ ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── dynMakefile ├── mkfile ├── test_framework.h └── test_main.cc ├── resolve_self ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── dynMakefile └── main.c ├── runalltests.bat ├── runalltests.sh ├── samples ├── calls │ ├── d16.c │ ├── d20.c │ ├── d40.c │ ├── f16.c │ ├── f20.c │ ├── f40.c │ ├── fd40.c │ ├── i3.c │ ├── i7.c │ ├── id40.c │ ├── l16.c │ └── many.c └── composite │ ├── args.asm │ ├── args.c │ ├── args.s │ ├── build.bat │ └── makefile ├── sharedlib ├── CMakeLists.txt ├── Makefile.embedded └── sharedlib.c ├── sign ├── Makefile.generic └── sign.c ├── suite ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.c ├── case.h ├── config.h ├── dynMakefile ├── main.c ├── mkcase.py └── mkfile ├── suite2 ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── case.cc ├── case.h ├── config.h ├── design.cfg ├── dynMakefile ├── funcinfo.h ├── ints.cfg ├── main.cc ├── mkcase.py ├── rand.py └── stress1.cfg ├── suite2_x86win32fast ├── CMakeLists.txt ├── Makefile.M ├── Makefile.generic ├── Nmakefile ├── case.cc ├── case.h ├── config.h ├── design.cfg ├── dynMakefile ├── funcinfo.h ├── main.cc ├── mkcase.py └── rand.py ├── suite2_x86win32std ├── CMakeLists.txt ├── Makefile.M ├── Makefile.generic ├── Nmakefile ├── case.cc ├── case.h ├── config.h ├── design.cfg ├── dynMakefile ├── funcinfo.h ├── main.cc ├── mkcase.py └── rand.py ├── suite3 ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── dynMakefile ├── main.cc └── mkcase.py ├── suite_floats ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── dynMakefile ├── main.cc └── mkcase.py ├── suite_x86win32fast ├── CMakeLists.txt ├── Makefile.M ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── dynMakefile ├── main.cc └── mkcase.py ├── suite_x86win32std ├── CMakeLists.txt ├── Makefile.M ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── dynMakefile ├── main.cc └── mkcase.py ├── syscall ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── dynMakefile └── syscall.c └── thunk ├── CMakeLists.txt ├── Makefile.M ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── dynMakefile ├── mkfile └── test_thunk.c /AUTHORS: -------------------------------------------------------------------------------- 1 | Daniel Adler 2 | Tassilo Philipp 3 | Olivier Chafik 4 | Erik Mackdanz 5 | Masanori Mitsugi 6 | 7 | -------------------------------------------------------------------------------- /BUGS: -------------------------------------------------------------------------------- 1 | - add support for SELinux; object files need to be tagged with section '.section .note.GNU-stack,"",%progbits' 2 | - dyncall sparc v7/v8: -xO3 on SunPro segfaults in tests. 3 | - dyncall sparc64 port: works fine on Debian 6, but has issues on OpenBSD and Solaris regarding passing of float and double values. 4 | - this BUGS file should be merged with ToDo or vice-versa 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | If not stated otherwise inside a file, all files here are distributed in 2 | terms of: 3 | 4 | Copyright (c) 2007-2015 Daniel Adler , 5 | Tassilo Philipp 6 | 7 | Permission to use, copy, modify, and distribute this software for any 8 | purpose with or without fee is hereby granted, provided that the above 9 | copyright notice and this permission notice appear in all copies. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18 | 19 | -------------------------------------------------------------------------------- /Makefile.M: -------------------------------------------------------------------------------- 1 | #include "buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | cd dyncall _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) 5 | cd dynload _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) 6 | cd dyncallback _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) 7 | 8 | clean: 9 | cd dyncall _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) clean 10 | cd dynload _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) clean 11 | cd dyncallback _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) clean 12 | 13 | tests: 14 | cd test _(SHELL_COMMAND_SEPARATOR) _(MAKE) _(MAKEFLAGS_USER) _(MAKEFLAG_FILE) _(MAKE_DEFAULT_FILE) 15 | 16 | -------------------------------------------------------------------------------- /Makefile.generic: -------------------------------------------------------------------------------- 1 | .PHONY: all clean install tests docs run-tests clean distclean libdyncall libdyncallback libdynload 2 | all: libdyncall libdyncallback libdynload 3 | install: all install-libdyncall install-libdyncallback install-libdynload 4 | libdyncall: 5 | cd dyncall && ${MAKE} all 6 | libdyncallback: 7 | cd dyncallback && ${MAKE} all 8 | libdynload: 9 | cd dynload && ${MAKE} all 10 | install-libdyncall: libdyncall 11 | cd dyncall && ${MAKE} install 12 | install-libdyncallback: libdyncallback 13 | cd dyncallback && ${MAKE} install 14 | install-libdynload: libdynload 15 | cd dynload && ${MAKE} install 16 | clean: 17 | cd dyncall && ${MAKE} $@ 18 | cd dynload && ${MAKE} $@ 19 | cd dyncallback && ${MAKE} $@ 20 | cd test && ${MAKE} $@ 21 | cd doc && ${MAKE} $@ 22 | tests: tests-libdyncall tests-libdyncallback tests-libdynload 23 | tests-libdyncall: libdyncall 24 | cd test && ${MAKE} all-dyncall 25 | tests-libdyncallback: libdyncallback 26 | cd test && ${MAKE} all-dyncallback 27 | tests-libdynload: libdynload 28 | cd test && ${MAKE} all-dynload 29 | docs: 30 | cd doc && ${MAKE} all 31 | run-tests: all 32 | cd test && ${MAKE} $@ 33 | distclean: clean 34 | rm -f Makefile.config 35 | find . -type f -name "Makefile.generic" | sed s/\.generic$$// | xargs rm 36 | 37 | -------------------------------------------------------------------------------- /autovar/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Daniel Adler 2 | 3 | Permission to use, copy, modify, and distribute this software for any 4 | purpose with or without fee is hereby granted, provided that the above 5 | copyright notice and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 12 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 13 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 | 15 | 16 | -------------------------------------------------------------------------------- /autovar/README.txt: -------------------------------------------------------------------------------- 1 | autovar -- a small macro auto-detection library 2 | 3 | 4 | the following gives the list of variables available. 5 | for each variable, a separate header file is used. 6 | 7 | OS: Operating System 8 | ARCH: Architecture 9 | CC: C Compiler 10 | ABI: Application Binary Interface 11 | OSFAMILY: OS Roots 12 | 13 | 14 | the following gives the tree of variables 15 | 16 | OS: 17 | Win32 18 | Win64 19 | Darwin 20 | IOS 21 | MacOSX 22 | Linux 23 | FreeBSD 24 | OpenBSD 25 | NetBSD 26 | DragonFlyBSD 27 | SunOS 28 | Cygwin 29 | MinGW 30 | NDS 31 | PSP 32 | BeOS 33 | Plan9 34 | VMS 35 | Minix 36 | Unknown 37 | 38 | ARCH: 39 | X86 40 | X64 41 | IA64 42 | PPC 43 | PPC64 44 | MIPS64 45 | MIPS 46 | ARM 47 | THUMB 48 | SH 49 | SPARC64 50 | SPARC 51 | 52 | ABI: 53 | PE 54 | Mach 55 | ELF 56 | ELF32 57 | ELF64 58 | 59 | OSFAMILY: 60 | Windows 61 | Unix 62 | 63 | CC: 64 | INTEL 65 | MSVC 66 | GNU 67 | WATCOM 68 | PCC 69 | SUN 70 | -------------------------------------------------------------------------------- /autovar/autovar_OSFAMILY.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: autovar 5 | File: autovar/autovar_OSFAMILY.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #ifndef AUTOVAR_OSFAMILY_H 26 | #define AUTOVAR_OSFAMILY_H 27 | 28 | #include "autovar_OS.h" 29 | 30 | #if defined(OS_Win32) || defined(OS_Win64) 31 | #define OSFAMILY_Windows 32 | #elif defined(OS_NDS) || defined(OS_PSP) 33 | #define OSFAMILY_GameConsole 34 | #else 35 | #define OSFAMILY_Unix 36 | #endif 37 | 38 | #endif /* AUTOVAR_OSFAMILY_H */ 39 | 40 | -------------------------------------------------------------------------------- /buildsys/dynmake/dynmake.bat: -------------------------------------------------------------------------------- 1 | cl /nologo /DMAKE_CMD_%~n2 /EP Makefile.M 1> Makefile.dynmake 2 | %2 /NOLOGO /f Makefile.dynmake %1 3 | -------------------------------------------------------------------------------- /buildsys/dynmake/dynmake.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #cpp -D MAKE_CMD_$2 -P Makefile.M | sed "s/^ */ /" > Makefile.dynmake 3 | gcc -D MAKE_CMD_$2 -E -P -x c Makefile.M | sed "s/^ */ /" > Makefile.dynmake 4 | $2 -f Makefile.dynmake $1 5 | -------------------------------------------------------------------------------- /buildsys/lua/Makefile: -------------------------------------------------------------------------------- 1 | DL=wget 2 | all: lua-5.1.4 3 | 4 | lua-5.1.4.tar.gz: 5 | ${DL} http://www.lua.org/ftp/lua-5.1.4.tar.gz 6 | lua-5.1.4: lua-5.1.4.tar.gz 7 | gunzip -c $? | tar xf - 8 | 9 | clean: 10 | rm -rf lua-5.1.4.tar.gz lua-5.1.4 11 | -------------------------------------------------------------------------------- /buildsys/lua/README.txt: -------------------------------------------------------------------------------- 1 | This helper folder is used to bootstrap lua on platforms where there 2 | is no lua at all. 3 | 4 | 5 | -------------------------------------------------------------------------------- /buildsys/lua/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ -z "${DL}" ]; then 3 | DL=wget 4 | fi 5 | case `uname -s` in 6 | Darwin) 7 | LPLAF=macosx 8 | ;; 9 | Linux) 10 | LPLAF=linux 11 | ;; 12 | FreeBSD) 13 | LPLAF=freebsd 14 | ;; 15 | SunOS) 16 | LPLAF=solaris 17 | ;; 18 | AIX) 19 | LPLAF=aix 20 | ;; 21 | DragonFly) 22 | LPLAF=bsd 23 | ;; 24 | *BSD) 25 | LPLAF=bsd 26 | ;; 27 | *) 28 | LPLAF=posix 29 | ;; 30 | esac 31 | DL="${DL}" make -f `dirname $0`/Makefile lua-5.1.4 32 | (cd lua-5.1.4; make ${LPLAF}) 33 | 34 | 35 | -------------------------------------------------------------------------------- /buildsys/lua/cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ -d lua-5.1.4 ]; then 4 | (cd lua-5.1.4;make clean) 5 | fi 6 | 7 | -------------------------------------------------------------------------------- /buildsys/lua/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2013 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | VER = 5.1.4 22 | LUA = lua-$VER 23 | TGZ = $LUA.tar.gz 24 | 25 | all:V: 26 | hget http://www.lua.org/ftp/$TGZ > $TGZ 27 | tar -xf $TGZ 28 | cd $LUA/src 29 | rm luac.c 30 | pcc *.c 31 | mv 8.out ../../lua 32 | cd ../.. 33 | rm -rf $LUA $TGZ 34 | 35 | -------------------------------------------------------------------------------- /buildsys/lua/setenv.sh: -------------------------------------------------------------------------------- 1 | # 2 | PATH=$PWD/lua-5.1.4/src:$PATH 3 | export PATH 4 | 5 | -------------------------------------------------------------------------------- /buildsys/mk/app.mk: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | # Set Plan9's mk variables. 22 | TARG = ${APPLICATION} 23 | OFILES = `{echo $UNITS | sed 's/ |$/.$O /g'} 24 | LIB = $LIBS 25 | 26 | # Add some targets to create a local copy of the bin, named as desired. 27 | all:V: $TARG 28 | 29 | $TARG: $O.out 30 | cp $O.out $TARG 31 | -------------------------------------------------------------------------------- /buildsys/mk/dirs.mk: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | all: dirs 21 | 22 | dirs:VQ: $DIRS 23 | for (i in $DIRS) @{ 24 | echo Handling sub-directory $i... 25 | cd $i && rfork && rm /env/DIRS && $MK -f mkfile $MKFLAGS 26 | } 27 | 28 | -------------------------------------------------------------------------------- /buildsys/mk/lib.mk: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | # Set Plan9's mk variables. 22 | LIB = lib${LIBRARY}_s.a$O 23 | OFILES = `{echo $UNITS | sed 's/ |$/.$O /g'} 24 | -------------------------------------------------------------------------------- /buildsys/mk/prolog.mk: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | # 'all' is always our default target. 21 | all: 22 | 23 | 24 | , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | #/////////////////////////////////////////////////// 21 | # 22 | # nmake rules 23 | # epilog.nmake 24 | # 25 | #/////////////////////////////////////////////////// 26 | 27 | 28 | !INCLUDE common.nmake 29 | -------------------------------------------------------------------------------- /buildsys/scripts/batch-build-linux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd `dirname $0`/../../ 4 | 5 | # Build libraries. 6 | 7 | make -f Makefile.generic clean all 8 | 9 | # Build tests: dynload tests need '-ldl'. 10 | 11 | ( cd test ; make -f Makefile.generic clean ) 12 | ( cd test ; LDLIBS=-ldl make -f Makefile.generic all-dynload ) 13 | ( cd test ; make -f Makefile.generic all ) 14 | 15 | 16 | -------------------------------------------------------------------------------- /buildsys/scripts/batch-build-minix.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd `dirname $0`/../../ 4 | 5 | # ---------------------------------------------------------- # 6 | # DynCall build script using Makefile.generic on Minix 3.1.8 # 7 | # ---------------------------------------------------------- # 8 | 9 | # build libs and tests, but exclude dynload 10 | 11 | ./configure 12 | make libdyncall libdyncallback tests-libdyncallback tests-libdyncall 13 | 14 | -------------------------------------------------------------------------------- /buildsys/scripts/batch-build-psp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd `dirname $0`/../../ 4 | 5 | # ------------------------------------------------------------- # 6 | # DynCall build script using Makefile.generic for PSP toolchain # 7 | # ------------------------------------------------------------- # 8 | 9 | # build libs and tests, but exclude dynload 10 | 11 | ./configure --target=PSP 12 | #no callback for mips, yet, but build 'empty' libdyncallback to make linker happy 13 | make libdyncall libdyncallback tests-libdyncall # tests-libdyncallback 14 | 15 | -------------------------------------------------------------------------------- /buildsys/scripts/elf-to-psp-eboot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! [ -x "$1" ]; then 4 | echo Usage: $0 \ 5 | exit 1 6 | fi 7 | 8 | TITLE=`basename $1` 9 | SFO=/tmp/${TITLE}.sfo 10 | FIXED_ELF=/tmp/${TITLE}.fixed 11 | STRIPPED_ELF=/tmp/${TITLE}.stripped 12 | 13 | mksfo dyncall_${TITLE} $SFO 14 | psp-fixup-imports -o $FIXED_ELF $1 15 | psp-strip $FIXED_ELF -o $STRIPPED_ELF 16 | pack-pbp EBOOT.PBP $SFO NULL NULL NULL NULL NULL $STRIPPED_ELF NULL 17 | rm $SFO 18 | rm $FIXED_ELF 19 | rm $STRIPPED_ELF 20 | -------------------------------------------------------------------------------- /buildsys/scripts/setenv-cross-ios.sh: -------------------------------------------------------------------------------- 1 | 2 | IOS_ARCH="armv6" 3 | IOS_SDK_VERSION="4.3" 4 | 5 | export TARGET_MACH="-arch ${IOS_ARCH}" 6 | export TARGET_ARCH="-arch ${IOS_ARCH} -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${IOS_SDK_VERSION}.sdk" 7 | 8 | 9 | -------------------------------------------------------------------------------- /buildsys/scripts/setenv-sdk-ios.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #export PATH=`xcode-select -print-path`/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:${PATH} 3 | DEVELOPER=`xcode-select -print-path` 4 | # WORKS: P="${DEVELOPER}/Platforms/iPhoneOS.platform/Developer" 5 | P="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain" 6 | export MANPATH="$P/usr/share/man:${MANPATH}" 7 | export PATH="$P/usr/bin:${PATH}" 8 | 9 | #if [ -z "${DEVELOPER}" ]; then 10 | #DEVELOPER=/Developer 11 | #fi 12 | #export PATH="${DEVELOPER}/Platforms/iPhoneOS.platform/Developer/usr/bin:${PATH}" 13 | # export CPATH="$P/usr/include:${CPATH}" 14 | #if [ `exec sw_vers -productVersion` ]; then 15 | # case `sw_vers -productVersion` in 16 | # 10.*) 17 | # 18 | # ;; 19 | # esac 20 | #export PATH=${DEVELOPER}/Platforms/iPhoneOS.platform/Developer/usr/bin:${PATH} 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/Description.txt: -------------------------------------------------------------------------------- 1 | DynCall Project 2 | 3 | The dyncall library encapsulates architecture-, OS- and compiler-specific function call semantics in a virtual "bind argument parameters from left to right and then call" interface allowing programmers to call C functions in a completely dynamic manner. In other words, instead of calling a function directly, the dyncall library provides a mechanism to push the function parameters manually and to issue the call afterwards. 4 | This means, that a program can determine at runtime what function to call, and what parameters to pass to it. The library is written in C and assembly and provides a very simple C interface to program against. 5 | 6 | The library comes in very handy to power flexible message systems, dynamic function call dispatch mechanisms, closure implementations or even to bridge different programming languages. 7 | When it comes to language bindings, the dyncall library provides a clean and portable C interface to dynamically issue calls to foreign code using small call kernels written in assembly. Instead of providing code for every bridged function call, which unnecessarily results in code bloat, only a couple of instructions are used to invoke every possible call. 8 | -------------------------------------------------------------------------------- /doc/License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2007-2012 Daniel Adler , 2 | Tassilo Philipp 3 | 4 | Permission to use, copy, modify, and distribute this software for any 5 | purpose with or without fee is hereby granted, provided that the above 6 | copyright notice and this permission notice appear in all copies. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 | 16 | -------------------------------------------------------------------------------- /doc/Makefile.generic: -------------------------------------------------------------------------------- 1 | .PHONY: all 2 | all clean: 3 | cd manual && ${MAKE} $@ 4 | -------------------------------------------------------------------------------- /doc/README-Cross.txt: -------------------------------------------------------------------------------- 1 | Cross-compilation of dyncall with gcc 2 | ===================================== 3 | 4 | Make sure cross-compile tools are installed and in your path, and set the 5 | CC, AR and LD envvars, explicitly (where $PREFIX is arm-eabi, etc., depending 6 | on the toolchain to be used): 7 | 8 | $ export CC=$PREFIX-gcc 9 | $ export AR=$PREFIX-ar 10 | $ export LD=$PREFIX-ld 11 | 12 | Also set CXX if you want to build the tests: 13 | 14 | $ export CXX=$PREFIX-g++ 15 | 16 | 17 | Then, build dyncall - one way would be to simply use Makefile.embedded: 18 | 19 | $ make -f Makefile.embedded sun 20 | $ (cd test; make -f Makefile.embedded) 21 | 22 | -------------------------------------------------------------------------------- /doc/README.MacOSX: -------------------------------------------------------------------------------- 1 | Building DynCall on Mac OS X 2 | ============================ 3 | 4 | 5 | The build system supports universal binaries (including static libraries). 6 | In addition, the desired SDK can be choosen. 7 | 8 | Configure switches related to Mac OS X: 9 | 10 | Operating System: 11 | --target=MacOSX (auto-detect) 12 | 13 | SDK: 14 | --sdk= (auto-detect) 15 | 16 | Architecture: 17 | not specified, builds universal binaries depending on SDK version 18 | 19 | 20 | Configure and build for host platform: 21 | 22 | ./configure 23 | make 24 | sudo make install 25 | 26 | 27 | Compile for Mac OS X 10.4u: 28 | 29 | configure --target=MacOSX --sdk=10.4u 30 | 31 | -------------------------------------------------------------------------------- /doc/README.Minix: -------------------------------------------------------------------------------- 1 | Building DynCall on Minix 3 2 | =========================== 3 | 4 | 5 | Status: 6 | ------- 7 | - Compiles under GNU tool-chain on Minix 3.1.8 using script for Makefile.generic 8 | or by building specific make targets 9 | - dyncall: tests run ok. 10 | - dyncallback: minor bugs on dyncallback (some cases fail) 11 | - dynload: unsupported due to missing dynamic linker. 12 | - Integration of ACK tool-chain is in progress but not functional at the moment... 13 | 14 | 15 | Building: 16 | --------- 17 | 18 | 1) using configure and make: 19 | $ ./configure 20 | $ make libdyncall libdyncallback 21 | 22 | 2) or using build script for gcc (using Makefile.generic): 23 | $ sh buildsys/scripts/batch-build-minix.sh 24 | 25 | 26 | Minix facts: 27 | ------------ 28 | - posix make 29 | - ACK (Amsterdam Compiler Kit) compiler for C, Modula-2 and Pascal 30 | using own Assembly format 31 | - ACK Assembler: 32 | if very first character is '#' - C preprocessor is run.. 33 | 34 | - Minix 32-bit: 35 | - ACK 32-bit compiler: long long is not supported 36 | - Minix 16-bit: not yet reviewed... 37 | 38 | -------------------------------------------------------------------------------- /doc/README.NDS: -------------------------------------------------------------------------------- 1 | Build instructions for DynCall on Nintendo DS 2 | using devkitPro and NMake under Windows 3 | ============================================= 4 | 5 | 6 | To build the library, you have to configure it first. 7 | Since the NDS build uses devkitPro and NMake, assure 8 | to have them in your %PATH%. 9 | 10 | To configure the library, call one of the following, 11 | depending if you want to use the processor in ARM or 12 | THUMB mode: 13 | 14 | configure.bat /tool-gcc /target-nds-arm 15 | configure.bat /tool-gcc /target-nds-thumb 16 | 17 | Note that the /tool-gcc flag is needed, because we're 18 | using devkitARM (via devkitPro) which is based on the 19 | GCC toolchain. The /target-nds-* flags don't imply 20 | this. 21 | 22 | Then, call: 23 | 24 | nmake /F Nmakefile 25 | 26 | -------------------------------------------------------------------------------- /doc/README.PSP: -------------------------------------------------------------------------------- 1 | Cross-compile DynCall for PSP using PSP-SDK 2 | =========================================== 3 | 4 | 5 | Make sure the PSP SDK's is installed and that the build tools (e.g. psp-gcc) are 6 | in your PATH. Also make sure that your PSP SDK's include files are in your CPATH 7 | 8 | 9 | Status: 10 | ------- 11 | 12 | - dyncall: tests run ok. 13 | - dyncallback: all good. 14 | - dynload: unsupported due to missing dynamic linker and ELF headers. 15 | 16 | 17 | 18 | There are currently two ways to build dyncall for PSP. 19 | 20 | Build using configure and make: 21 | ------------------------------- 22 | 23 | $ ./configure --target=PSP 24 | $ make libdyncall libdyncallback 25 | 26 | 27 | Build using build script for gcc (using Makefile.generic): 28 | ---------------------------------------------------------- 29 | $ sh buildsys/scripts/batch-build-psp.sh 30 | 31 | -------------------------------------------------------------------------------- /doc/manual/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(LATEX) 2 | if(PDFLATEX_COMPILER) 3 | add_custom_command( 4 | OUTPUT manual.pdf 5 | COMMAND ${PDFLATEX_COMPILER} 6 | ARGS manual.tex 7 | DEPENDS manual.tex 8 | ) 9 | file(GLOB CLEAN_FILES *.aux *.log *.lof *.lol *.lot *.out *.toc) 10 | set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEAN_FILES}") 11 | endif() 12 | add_custom_target(manual ALL echo DEPENDS manual.pdf) 13 | 14 | -------------------------------------------------------------------------------- /doc/manual/Makefile.generic: -------------------------------------------------------------------------------- 1 | all: manual.pdf 2 | 3 | sources: *.tex callconvs/*.tex dyncall_logo.* dyncall_watermark.* 4 | 5 | manual.pdf: sources 6 | # run twice for toc on some tex installs 7 | cd ${VPATH} && pdflatex -output-directory=${PWD} manual.tex 8 | cd ${VPATH} && pdflatex -output-directory=${PWD} manual.tex 9 | 10 | manual.html: manual_tex4ht.cfg sources 11 | # Create tex4ht.env from default one, but with better bitmaps 12 | cp $$(dirname $$(which tex4ht))/../share/texmf-dist/tex4ht/base/unix/tex4ht.env ${VPATH}/ 13 | cd ${VPATH} && sed -E -i '' 's/(Text|Graphics)(AlphaBits)=[1,2,3]([^0-9])/\1\2=4\3/g' tex4ht.env 14 | cd ${VPATH} && htlatex manual.tex manual_tex4ht " -cunihtf" 15 | 16 | clean: 17 | # pdf 18 | for i in pdf aux lof log lol lot out toc; do rm -f manual.$$i || true; done 19 | # html 20 | for i in 4ct 4tc css dvi html idv lg tmp xref; do rm -f manual.$$i || true; done 21 | for i in manual*x.png manual*.html texput.log manual_*.log zzmanual.eps zzmanual.ps tex4ht.env; do rm -f $$i || true; done 22 | -------------------------------------------------------------------------------- /doc/manual/Nmakefile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2007,2009 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | TOP = .. 21 | 22 | !INCLUDE $(TOP)/buildsys/nmake/prolog.nmake 23 | 24 | TARGETS=manual.pdf 25 | manual.pdf: dummy 26 | 27 | # Pseudo-targets are always out of date... 28 | dummy: 29 | 30 | !INCLUDE $(TOP)/buildsys/nmake/epilog.nmake 31 | 32 | -------------------------------------------------------------------------------- /doc/manual/callconvs/callconv_mips64.tex: -------------------------------------------------------------------------------- 1 | %////////////////////////////////////////////////////////////////////////////// 2 | % 3 | % Copyright (c) 2007,2009 Daniel Adler , 4 | % Tassilo Philipp 5 | % 6 | % Permission to use, copy, modify, and distribute this software for any 7 | % purpose with or without fee is hereby granted, provided that the above 8 | % copyright notice and this permission notice appear in all copies. 9 | % 10 | % THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | % WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | % MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | % ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | % WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | % 18 | %////////////////////////////////////////////////////////////////////////////// 19 | 20 | \subsection{MIPS64 Calling Convention} 21 | 22 | \paragraph{Overview} 23 | 24 | TBC. 25 | 26 | \paragraph{\product{dyncall} support} 27 | 28 | We are currently working on that. 29 | 30 | Our test machine is a Loongson-CPU 2F subnotebook with OpenBSD. 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /doc/manual/dyncall_logo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhuomingliang/dyncall/8fe9b5d4cdcb94c607a487ad9e204c2516f3a4e9/doc/manual/dyncall_logo.pdf -------------------------------------------------------------------------------- /doc/manual/dyncall_watermark.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhuomingliang/dyncall/8fe9b5d4cdcb94c607a487ad9e204c2516f3a4e9/doc/manual/dyncall_watermark.pdf -------------------------------------------------------------------------------- /doc/manual/manual_tex4ht.cfg: -------------------------------------------------------------------------------- 1 | \Preamble{xhtml,index=2,2,next,pic-tabular,charset="utf-8",p-width,pic-align} 2 | \Configure{VERSION}{} 3 | \Configure{VERSION}{} 4 | \Configure{DOCTYPE}{\HCode{\Hnewline}} 5 | \Configure{HTML}{\HCode{\Hnewline}}{\HCode{\Hnewline}} 6 | \Configure{@HEAD}{} 7 | \Configure{@HEAD}{\HCode{\Hnewline}} 8 | \Configure{@HEAD}{\HCode{\Hnewline}} 9 | \Configure{@HEAD}{\HCode{\Hnewline}} 10 | \Configure{@HEAD}{\HCode{\Hnewline}} 11 | \Configure{@HEAD}{\HCode{\Hnewline}} 12 | % should this really rely on online content (dyncall's .css) even for an offline build? @@@ 13 | \Configure{@HEAD}{\HCode{\Hnewline}} 14 | \Configure{@HEAD}{\HCode{dyncall.org - dyncall Manual\Hnewline}} 15 | 16 | %\DeclareMathSizes{12}{11}{7}{6} 17 | %\DeclareMathSizes{10}{9}{5}{4} 18 | %\DeclareMathSizes{11}{10}{6}{5} 19 | 20 | \begin{document} 21 | 22 | \EndPreamble 23 | -------------------------------------------------------------------------------- /dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /dyncall/DynCallConfig.cmake: -------------------------------------------------------------------------------- 1 | set(DYNCALL_INCLUDE_DIRS ${DynCall_SOURCE_DIR}/dyncall) 2 | set(DYNCALL_LIBRARIES dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /dyncall/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: _L(dyncall_s) 4 | 5 | _L(dyncall_s): _O(dyncall_vector) _O(dyncall_api) _O(dyncall_callvm) _O(dyncall_callvm_base) _O(dyncall_call) _O(dyncall_callf) _O(dyncall_struct) 6 | _(AR) _(ARFLAGS) _(ARFLAG_OUT_PREFIX)_(TARGET) _(PREREQS) 7 | 8 | clean: 9 | _(RM) _O(*) 10 | _(RM) _L(dyncall_s) 11 | -------------------------------------------------------------------------------- /dyncall/Makefile.embedded: -------------------------------------------------------------------------------- 1 | MAKEFILE = Makefile.embedded 2 | MAKE_CMD = ${MAKE} -f ${MAKEFILE} 3 | TARGET = libdyncall_s.a 4 | OBJS = dyncall_vector.o dyncall_api.o dyncall_callvm.o dyncall_callvm_base.o dyncall_call.o dyncall_callf.o dyncall_struct.o 5 | HEADERS = dyncall_macros.h dyncall_config.h dyncall_types.h dyncall.h dyncall_signature.h dyncall_value.h dyncall_callf.h dyncall_alloc.h 6 | all: ${TARGET} 7 | libdyncall_s.a: ${OBJS} 8 | ${AR} ${ARFLAGS} $@ ${OBJS} 9 | clean: 10 | rm -f ${OBJS} ${TARGET} 11 | install: all 12 | mkdir -p ${DESTDIR}${PREFIX}/include 13 | cp ${HEADERS} ${DESTDIR}${PREFIX}/include 14 | mkdir -p ${DESTDIR}${PREFIX}/lib 15 | cp ${TARGET} ${DESTDIR}${PREFIX}/lib 16 | mkdir -p ${DESTDIR}${PREFIX}/man/man3 17 | gzip -c dyncall.3 >${DESTDIR}${PREFIX}/man/man3/dyncall.3.gz 18 | .PHONY: all clean install 19 | osx-universal: 20 | CFLAGS="${CFLAGS} -arch i386 -arch x86_64 -arch ppc" ASFLAGS="${ASFLAGS} -arch i386 -arch x86_64 -arch ppc" AR="libtool" ARFLAGS="-static -o" ${MAKE_CMD} all 21 | -------------------------------------------------------------------------------- /dyncall/Makefile.generic: -------------------------------------------------------------------------------- 1 | LIBNAME = dyncall 2 | OBJS = dyncall_vector.o dyncall_api.o dyncall_callvm.o dyncall_callvm_base.o dyncall_call.o dyncall_callf.o dyncall_struct.o 3 | HEADERS = ${VPATH}/dyncall_macros.h ${VPATH}/dyncall_config.h ${VPATH}/dyncall_types.h ${VPATH}/dyncall.h ${VPATH}/dyncall_signature.h ${VPATH}/dyncall_value.h ${VPATH}/dyncall_callf.h ${VPATH}/dyncall_alloc.h 4 | LIB = lib${LIBNAME}_s.a 5 | .PHONY: all clean install 6 | all: ${LIB} 7 | ${LIB}: ${OBJS} 8 | ${AR} ${ARFLAGS} ${LIB} ${OBJS} 9 | clean: 10 | rm -f ${OBJS} ${LIB} 11 | install: all 12 | mkdir -p ${PREFIX}/lib 13 | mkdir -p ${PREFIX}/include 14 | cp ${LIB} ${PREFIX}/lib 15 | cp ${HEADERS} ${PREFIX}/include 16 | 17 | -------------------------------------------------------------------------------- /dyncall/README-Developer.txt: -------------------------------------------------------------------------------- 1 | Build with GCC Tool-Chain: 2 | 3 | One assembly front-end *.S source file for all supported architectures: 4 | 5 | Usage: 6 | gcc -c dyncall_call.S -o dyncall_call.o 7 | 8 | Advantages: 9 | - works fine with universal binary builds (fat binaries), e.g.: 10 | gcc -arch i386 -arch ppc -arch x86_64 -c dyncall_call.S -o dyncall_call.o 11 | 12 | Details: 13 | Simplified assembly file compilation via using a gigantic C Preprocessor switch include. 14 | 15 | source file "dyncall_call.S" selects the appropriate GAS/Apple assembly file 16 | "dyncall_call__.[sS]". 17 | 18 | archs so far: 19 | 20 | arm32_thumb .s 21 | arm32_arm .s 22 | mips .s 23 | ppc32 .s 24 | x64 .s 25 | x86 .S [ uses C macros ] 26 | 27 | asmtools: 28 | 29 | gas - standard GNU assembler 30 | apple - apple's assembler (based on GNU but is significantly different in syntax) 31 | masm - Microsoft assembler x86 and x64 32 | nasm - Netwide assembler for x86 and x64 33 | 34 | 35 | NOTE: .S is used for preprocessing assembly files using gcc 36 | .s is used directly with as 37 | 38 | advantages: 39 | - one way to build the kernel: 40 | 41 | gcc -c dyncall_call.S -o dyncall_call.o 42 | 43 | - we can build now universal binaries 44 | 45 | 46 | -------------------------------------------------------------------------------- /dyncall/README.txt: -------------------------------------------------------------------------------- 1 | Library Design 2 | 3 | Overview: 4 | 1. Call Kernel 5 | 2. Utilities (memory and static sized vectors) 6 | 3. Call State Machine 7 | 4. Application Programming Interface 8 | 5. extension: high-level formatted C API (ellipsis style) 9 | 10 | 11 | 1. Call Kernel 12 | 13 | Assembly Implementation: 14 | 15 | gcc front-end: dyncall_call.S 16 | uses the C preprocessor 17 | will include the apropriate assembly source 18 | 19 | architecture/tool specific sources: 20 | dyncall_call__.[s|asm] 21 | 22 | 23 | 2. Utilities (memory and static sized vectors) 24 | 25 | 2.1 Memory Management 26 | 27 | C Interface: dyncall_alloc.h 28 | 29 | 30 | 2.2 Static-sized Vector 31 | 32 | C Interface: dyncall_vector.h 33 | 34 | C Implementation: dyncall_vector.c 35 | 36 | 37 | 3. Call State Machine 38 | 39 | C Implementation: 40 | Top-level: dynall_callvm.c 41 | Sub-levels: 42 | dyncall_callvm_.c 43 | 44 | 45 | 4. Application Programming Interface 46 | 47 | C Header: 48 | Top-level: dyncall.h 49 | Sub-level headers: 50 | dyncall_macros.h 51 | dyncall_config.h 52 | dyncall_types.h 53 | C Implementation: dyncall_api.c 54 | 55 | 56 | 5. Extension: High-level C API (ellipsis style) 57 | 58 | C Header: 59 | Top-level: dyncall_callf.h 60 | Sub-level headers: 61 | dyncall_value.h 62 | dyncall_signature.h 63 | C Implementation: dyncall_callf.c 64 | 65 | 66 | -------------------------------------------------------------------------------- /dyncall/TODO: -------------------------------------------------------------------------------- 1 | - implement structure passing for all calling conventinos and platforms 2 | - make sure that struct support for ellipsis calls are not forgotten (copy everything by value) 3 | 4 | - merge arm32_thumb_{gas/apple} and include thumb support for portasm 5 | - check dyncall_call_x64_traditional_cpp.S / try-sync with win64 masm 6 | - remove dyncall_call_x86_apple.s 7 | - x64 port cleanup: all x64 calling conventions on all platforms 8 | - remove dyncall_call_x86_masm.asm dyncall_call_x64_masm.asm 9 | - x64 verification: return values are passed via RAX and RDX, and XMM0 and XMM1. 10 | -------------------------------------------------------------------------------- /dyncall/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /dyncall/dyncall_alloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_alloc.h 6 | Description: heap memory management interface (header only) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DYNCALL_ALLOC_H 28 | #define DYNCALL_ALLOC_H 29 | 30 | #ifndef dcAllocMem 31 | #include 32 | #define dcAllocMem malloc 33 | #endif 34 | 35 | #ifndef dcFreeMem 36 | #define dcFreeMem free 37 | #endif 38 | 39 | #endif /* DYNCALL_ALLOC_H */ 40 | 41 | -------------------------------------------------------------------------------- /dyncall/dyncall_call_sparc.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_call_sparc.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler 10 | 11 | Permission to use, copy, modify, and distribute this software for any 12 | purpose with or without fee is hereby granted, provided that the above 13 | copyright notice and this permission notice appear in all copies. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 16 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 17 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 18 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 20 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 21 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22 | 23 | */ 24 | 25 | 26 | #ifndef DYNCALL_CALL_SPARC_H 27 | #define DYNCALL_CALL_SPARC_H 28 | 29 | #include "dyncall_types.h" 30 | 31 | #ifdef __cplusplus 32 | extern "C" { 33 | #endif 34 | 35 | void dcCall_sparc (DCpointer target, DCsize size, DCpointer data); 36 | 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | 41 | #endif /* DYNCALL_CALL_SPARC_H */ 42 | 43 | -------------------------------------------------------------------------------- /dyncall/dyncall_call_sparc64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_call_sparc64.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler 10 | 11 | Permission to use, copy, modify, and distribute this software for any 12 | purpose with or without fee is hereby granted, provided that the above 13 | copyright notice and this permission notice appear in all copies. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 16 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 17 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 18 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 20 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 21 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22 | 23 | */ 24 | 25 | 26 | #ifndef DYNCALL_CALL_SPARC64_H 27 | #define DYNCALL_CALL_SPARC64_H 28 | 29 | #include "dyncall_types.h" 30 | 31 | #ifdef __cplusplus 32 | extern "C" { 33 | #endif 34 | 35 | void dcCall_sparc64 (DCpointer target, DCsize size, DCpointer data); 36 | 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | 41 | #endif /* DYNCALL_CALL_SPARC64_H */ 42 | 43 | -------------------------------------------------------------------------------- /dyncall/dyncall_call_sparc_v9.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_call_sparc_v9.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011-2013 Daniel Adler 10 | 11 | Permission to use, copy, modify, and distribute this software for any 12 | purpose with or without fee is hereby granted, provided that the above 13 | copyright notice and this permission notice appear in all copies. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 16 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 17 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 18 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 20 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 21 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22 | 23 | */ 24 | 25 | 26 | #ifndef DYNCALL_CALL_SPARC_V9_H 27 | #define DYNCALL_CALL_SPARC_V9_H 28 | 29 | #include "dyncall_types.h" 30 | 31 | #ifdef __cplusplus 32 | extern "C" { 33 | #endif 34 | 35 | void dcCall_v9 (DCCallVM* vm, DCpointer target); 36 | 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | 41 | #endif /* DYNCALL_CALL_SPARC_v9_H */ 42 | 43 | -------------------------------------------------------------------------------- /dyncall/dyncall_callvm_base.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_callvm_base.c 6 | Description: ARM 32-bit "thumb" ABI callvm implementation 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #include "dyncall_callvm.h" 28 | 29 | void dc_callvm_base_init(DCCallVM* pInstance, DCCallVM_vt* pVTable) 30 | { 31 | pInstance->mVTpointer = pVTable; 32 | pInstance->mError = DC_ERROR_NONE; 33 | } 34 | -------------------------------------------------------------------------------- /dyncall/dyncall_callvm_mips.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_callvm_mips.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DYNCALL_CALLVM_MIPS_H 28 | #define DYNCALL_CALLVM_MIPS_H 29 | 30 | /* Suported ABIs: */ 31 | 32 | #include "dyncall_callvm_mips_o32.h" 33 | #include "dyncall_callvm_mips_eabi.h" 34 | #include "dyncall_callvm_mips_n64.h" 35 | 36 | #endif /* DYNCALL_CALLVM_MIPS_H */ 37 | 38 | -------------------------------------------------------------------------------- /dyncall/dyncall_utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_utils.h 6 | Description: Type and calling-convention signature character defines 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | 28 | #ifndef DYNCALL_UTILS_H 29 | #define DYNCALL_UTILS_H 30 | 31 | /* C portable macros. */ 32 | 33 | #ifndef DC_MAX 34 | #define DC_MAX(a,b) ((a)>=(b))?(a):(b) 35 | #endif 36 | 37 | #endif /* DYNCALL_UTILS_H */ 38 | 39 | -------------------------------------------------------------------------------- /dyncall/gen-masm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Uses portasm to generates MASM sources for intel platforms. 4 | printf "; auto-generated by `basename $0`\r\n" > dyncall_call_x86_generic_masm.asm 5 | printf "; auto-generated by `basename $0`\r\n" > dyncall_call_x64_generic_masm.asm 6 | gcc -E -P -DGEN_MASM dyncall_call_x86.S | awk '{printf "%s\r\n", $0}' >> dyncall_call_x86_generic_masm.asm 7 | gcc -E -P -DGEN_MASM dyncall_call_x64-att.S | awk '{printf "%s\r\n", $0}' >> dyncall_call_x64_generic_masm.asm 8 | -------------------------------------------------------------------------------- /dyncall/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = .. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | LIBRARY = dyncall 26 | UNITS = $UNITS dyncall_vector dyncall_api dyncall_callf dyncall_call dyncall_callvm dyncall_callvm_base dyncall_struct 27 | 28 | 29 | <$TOP/buildsys/mk/epilog.mk 30 | -------------------------------------------------------------------------------- /dyncallback/DynCallbackConfig.cmake: -------------------------------------------------------------------------------- 1 | set(DYNCALLBACK_INCLUDE_DIRS ${DynCall_SOURCE_DIR}/dyncallback) 2 | set(DYNCALLBACK_LIBRARIES dyncallback_s) 3 | -------------------------------------------------------------------------------- /dyncallback/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: _L(dyncallback_s) 4 | 5 | _L(dyncallback_s): _O(dyncall_thunk) _O(dyncall_alloc_wx) _O(dyncall_args) _O(dyncall_callback) _O(dyncall_callback_arch) 6 | _(AR) _(ARFLAGS) _(ARFLAG_OUT_PREFIX)_(TARGET) _(PREREQS) 7 | 8 | clean: 9 | _(RM) _O(*) 10 | _(RM) _L(dyncallback_s) 11 | -------------------------------------------------------------------------------- /dyncallback/Makefile.embedded: -------------------------------------------------------------------------------- 1 | TARGET = libdyncallback_s.a 2 | OBJS = dyncall_alloc_wx.o dyncall_args.o dyncall_callback.o dyncall_callback_arch.o dyncall_thunk.o 3 | CFLAGS += -I../dyncall 4 | HEADERS = dyncall_callback.h dyncall_args.h 5 | all: ${TARGET} 6 | ${TARGET}: ${OBJS} 7 | ${AR} ${ARFLAGS} $@ ${OBJS} 8 | clean: 9 | rm -f ${OBJS} ${TARGET} 10 | install: all 11 | mkdir -p ${DESTDIR}${PREFIX}/include 12 | cp ${HEADERS} ${DESTDIR}${PREFIX}/include 13 | mkdir -p ${DESTDIR}${PREFIX}/lib 14 | cp ${TARGET} ${DESTDIR}${PREFIX}/lib 15 | .PHONY: all clean install 16 | -------------------------------------------------------------------------------- /dyncallback/Makefile.generic: -------------------------------------------------------------------------------- 1 | LIBNAME = dyncallback 2 | OBJS = dyncall_alloc_wx.o dyncall_args.o dyncall_callback.o dyncall_callback_arch.o dyncall_thunk.o 3 | HEADERS = ${VPATH}/dyncall_thunk.h ${VPATH}/dyncall_thunk_x86.h ${VPATH}/dyncall_thunk_ppc32.h ${VPATH}/dyncall_thunk_x64.h ${VPATH}/dyncall_thunk_arm32_arm.h ${VPATH}/dyncall_thunk_arm32_thumb.h ${VPATH}/dyncall_thunk_arm64.h ${VPATH}/dyncall_args.h ${VPATH}/dyncall_callback.h 4 | TOP = ${VPATH}/.. 5 | CFLAGS += -I${TOP}/dyncall 6 | 7 | LIB = lib${LIBNAME}_s.a 8 | 9 | .PHONY: all clean install 10 | 11 | all: ${LIB} 12 | ${LIB}: ${OBJS} 13 | ${AR} ${ARFLAGS} ${LIB} ${OBJS} 14 | clean: 15 | rm -f ${OBJS} ${LIB} 16 | install: all 17 | mkdir -p ${PREFIX}/lib 18 | mkdir -p ${PREFIX}/include 19 | cp ${LIB} ${PREFIX}/lib 20 | cp ${HEADERS} ${PREFIX}/include 21 | -------------------------------------------------------------------------------- /dyncallback/README.txt: -------------------------------------------------------------------------------- 1 | components: 2 | - alloc_wx 3 | - thunk 4 | 5 | BUGS 6 | call back failures for x64 apple: 7 | 8 | lppffldplfffddd)i 9 | 10 | -------------------------------------------------------------------------------- /dyncallback/TODO: -------------------------------------------------------------------------------- 1 | URGENT: 2 | - discuss character literal return value specifiers (e.g. cmp %al, 'i'), we might wanna use just an int for the size 3 | 4 | - psp mips support 5 | -------------------------------------------------------------------------------- /dyncallback/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /dyncallback/dyncall_alloc_wx.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_alloc_wx.c 6 | Description: Allocate write/executable memory - Implementation back-end selector (mmap or win32) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #include "../dyncall/dyncall_macros.h" 27 | 28 | #if defined(DC_WINDOWS) 29 | #include "dyncall_alloc_wx_win32.c" 30 | #elif defined(DC_UNIX) 31 | #include "dyncall_alloc_wx_mmap.c" 32 | #else 33 | #include "dyncall_alloc_wx_malloc.c" 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /dyncallback/dyncall_alloc_wx_malloc.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_alloc_wx_malloc.c 6 | Description: Allocate write/executable memory - Fallback implementation based 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #include "dyncall_alloc_wx.h" 27 | 28 | #include 29 | 30 | 31 | int dcAllocWX(size_t size, void** pp) 32 | { 33 | *pp = malloc(size); 34 | return 0; 35 | } 36 | 37 | void dcFreeWX(void* p, size_t size) 38 | { 39 | free(p); 40 | } 41 | -------------------------------------------------------------------------------- /dyncallback/dyncall_args_arm32_thumb.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_args_arm32_thumb.c 6 | Description: Callback's Arguments VM - Implementation for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #include "dyncall_args_arm32_thumb.h" 28 | #include "dyncall_args_arm32_arm.c" /* Uses same code as ARM mode. */ 29 | 30 | -------------------------------------------------------------------------------- /dyncallback/dyncall_args_arm32_thumb.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_args_arm32_thumb.h 6 | Description: Callback's Arguments VM - Header for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALLBACK_ARGS_ARM32_THUMB_H 27 | #define DYNCALLBACK_ARGS_ARM32_THUMB_H 28 | 29 | #include "dyncall_args_arm32_arm.h" /* Uses same code as ARM mode. */ 30 | 31 | #endif /* DYNCALLBACK_ARGS_ARM32_THUMB_H */ 32 | 33 | -------------------------------------------------------------------------------- /dyncallback/dyncall_args_sparc32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_args_sparc32.h 6 | Description: Callback's Arguments VM - Header for sparc32 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALLBACK_ARGS_SPARC32_H 27 | #define DYNCALLBACK_ARGS_SPARC32_H 28 | 29 | #include "dyncall_args.h" 30 | 31 | struct DCArgs 32 | { 33 | int dummy; 34 | }; 35 | 36 | #endif /* DYNCALLBACK_ARGS_SPARC32_H */ 37 | 38 | -------------------------------------------------------------------------------- /dyncallback/dyncall_args_sparc64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_args_sparc64.h 6 | Description: Callback's Arguments VM - Header for sparc32 - not yet 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALLBACK_ARGS_SPARC64_H 27 | #define DYNCALLBACK_ARGS_SPARC64_H 28 | 29 | #include "dyncall_args.h" 30 | 31 | struct DCArgs 32 | { 33 | int dummy; 34 | }; 35 | 36 | #endif /* DYNCALLBACK_ARGS_SPARC64_H */ 37 | 38 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_arm32_thumb.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_arm32_thumb.c 6 | Description: Callback - Implementation for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #include "dyncall_callback_arm32_thumb.h" 28 | #include "dyncall_callback_arm32_arm.c" /* Uses same code as ARM mode. */ 29 | 30 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_arm32_thumb.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_arm32_thumb.h 6 | Description: Callback - Header for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DYNCALL_CALLBACK_ARM32_THUMB_H_ 28 | #define DYNCALL_CALLBACK_ARM32_THUMB_H_ 29 | 30 | #include "dyncall_callback_arm32_arm.h" /* Uses same code as ARM mode. */ 31 | 32 | #endif /* DYNCALL_CALLBACK_ARM32_THUMB_H_ */ 33 | 34 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_sparc32.s: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_sparc32.s 6 | Description: Callback Thunk - Implementation for Sparc 32-bit 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | .globl dcCallbackThunkEntry 27 | dcCallbackThunkEntry: 28 | jmpl %i7 + 8, %g0 /* Return from proc. */ 29 | nop 30 | 31 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_sparc64.s: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_sparc64.s 6 | Description: Callback Thunk - Implementation for Sparc 64-bit 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | .globl dcCallbackThunkEntry 27 | dcCallbackThunkEntry: 28 | jmpl %i7 + 8, %g0 /* Return from proc. */ 29 | nop 30 | 31 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_arm32_arm.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_arm32_arm.h 6 | Description: Thunk - Header for ARM32 (ARM mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_ARM32_ARM_H 27 | #define DYNCALL_THUNK_ARM32_ARM_H 28 | 29 | 30 | struct DCThunk_ 31 | { 32 | unsigned int code[2]; 33 | void (*entry)(); 34 | }; 35 | 36 | #define DCTHUNK_ARM32_ARM_SIZE 12 37 | 38 | 39 | #endif /* DYNCALL_THUNK_ARM32_ARM_H */ 40 | 41 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_arm32_thumb.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_arm32_thumb.c 6 | Description: Thunk - Implementation for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #include "dyncall_thunk_arm32_arm.c" /* Since we can mix ARM and THUMB */ 28 | /* assembly, reuse the ARM mode code */ 29 | 30 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_arm32_thumb.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_arm32_thumb.h 6 | Description: Thunk - Header for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_ARM32_THUMB_H 27 | #define DYNCALL_THUNK_ARM32_THUMB_H 28 | 29 | #include "dyncall_thunk_arm32_arm.h" /* Uses same code as ARM mode. */ 30 | 31 | #define DCTHUNK_ARM32_THUMB_SIZE 12 32 | 33 | 34 | #endif /* DYNCALL_THUNK_ARM32_THUMB_H */ 35 | 36 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_mips.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_mips.h 6 | Description: Thunk - Header for MIPS 7 | License: 8 | 9 | Copyright (c) 2013 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_MIPS_H 27 | #define DYNCALL_THUNK_MIPS_H 28 | 29 | struct DCThunk_ 30 | { 31 | unsigned short data[6]; 32 | unsigned int jump; 33 | unsigned short bddt[2]; 34 | }; 35 | 36 | #endif /* DYNCALL_THUNK_MIPS_H */ 37 | 38 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_sparc32.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_sparc32.c 6 | Description: Thunk - Implementation for sparc32 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #include "dyncall_thunk.h" 27 | 28 | void dcbInitThunk(DCThunk* p, void (*entry)()) 29 | { 30 | /* not yet implemented */ 31 | } 32 | 33 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_sparc32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_sparc32.h 6 | Description: Thunk - Header for sparc32 - not yet implemented 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_SPARC32_H 27 | #define DYNCALL_THUNK_SPARC32_H 28 | 29 | struct DCThunk_ 30 | { 31 | int x[4]; /* dummy */ 32 | }; 33 | 34 | #define DCTHUNK_SIZE_SPARC32 32 35 | 36 | #endif /* DYNCALL_THUNK_SPARC32_H */ 37 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_sparc64.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_sparc64.c 6 | Description: Thunk - Implementation for sparc64 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #include "dyncall_thunk.h" 27 | 28 | void dcbInitThunk(DCThunk* p, void (*entry)()) 29 | { 30 | /* not yet implemented */ 31 | } 32 | 33 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_sparc64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_sparc64.h 6 | Description: Thunk - Header for sparc64 - not yet implemented 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_SPARC64_H 27 | #define DYNCALL_THUNK_SPARC64_H 28 | 29 | struct DCThunk_ 30 | { 31 | int x[4]; /* dummy */ 32 | }; 33 | 34 | #define DCTHUNK_SIZE_SPARC64 32 35 | 36 | #endif /* DYNCALL_THUNK_SPARC32_H */ 37 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_x64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_x64.h 6 | Description: Thunk - Header for x64 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_X64_H 27 | #define DYNCALL_THUNK_X64_H 28 | 29 | struct DCThunk_ 30 | { 31 | unsigned long long code[2]; 32 | void (*entry)(); 33 | }; 34 | 35 | #define DCTHUNK_X64_SIZE 24 36 | 37 | 38 | #endif /* DYNCALL_THUNK_X64_H */ 39 | 40 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_x86.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_x86.h 6 | Description: Thunk - Header for x86 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | #ifndef DYNCALL_THUNK_X86_H 27 | #define DYNCALL_THUNK_X86_H 28 | 29 | struct DCThunk_ 30 | { 31 | unsigned int code_load; 32 | void* addr_self; 33 | unsigned int code_jump; 34 | void (*addr_entry)(); 35 | }; 36 | 37 | #define DCTHUNK_X86_SIZE 16 38 | 39 | #endif /* DYNCALL_THUNK_X86_H */ 40 | -------------------------------------------------------------------------------- /dyncallback/gen-masm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Uses portasm to generates MASM sources for intel platforms. 4 | printf "; auto-generated by `basename $0`\r\n" >dyncall_callback_x86_masm.asm 5 | printf "; auto-generated by `basename $0`\r\n" >dyncall_callback_x64_masm.asm 6 | gcc -E -P -DGEN_MASM dyncall_callback_x86.S | awk '{printf "%s\r\n", $0}' >> dyncall_callback_x86_masm.asm 7 | gcc -E -P -DGEN_MASM dyncall_callback_x64.S | awk '{printf "%s\r\n", $0}' >> dyncall_callback_x64_masm.asm 8 | 9 | -------------------------------------------------------------------------------- /dyncallback/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2013 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = .. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | LIBRARY = dyncallback 26 | UNITS = $UNITS dyncall_alloc_wx dyncall_args dyncall_callback dyncall_callback_arch dyncall_thunk 27 | 28 | 29 | <$TOP/buildsys/mk/epilog.mk 30 | -------------------------------------------------------------------------------- /dynload/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Package: dyncall 2 | # File: dynload/CMakeLists.txt 3 | # Description: DynLoad library cmake files 4 | # License: 5 | # 6 | # Copyright (c) 2010 Daniel Adler 7 | # 8 | # Permission to use, copy, modify, and distribute this software for any 9 | # purpose with or without fee is hereby granted, provided that the above 10 | # copyright notice and this permission notice appear in all copies. 11 | # 12 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 15 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 | # 20 | 21 | add_library(dynload_s STATIC dynload.c dynload_syms.c) 22 | install(TARGETS dynload_s ARCHIVE DESTINATION lib) 23 | install(FILES dynload.h DESTINATION include) 24 | 25 | 26 | -------------------------------------------------------------------------------- /dynload/DynLoadConfig.cmake: -------------------------------------------------------------------------------- 1 | set(DYNLOAD_INCLUDE_DIRS ${DynCall_SOURCE_DIR}/dynload) 2 | set(DYNLOAD_LIBRARIES dynload_s) 3 | 4 | -------------------------------------------------------------------------------- /dynload/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: _L(dynload_s) 4 | 5 | _L(dynload_s): _O(dynload) _O(dynload_syms) 6 | _(AR) _(ARFLAGS) _(ARFLAG_OUT_PREFIX)_(TARGET) _(PREREQS) 7 | 8 | clean: 9 | _(RM) _O(*) 10 | _(RM) _L(dynload_s) 11 | -------------------------------------------------------------------------------- /dynload/Makefile.embedded: -------------------------------------------------------------------------------- 1 | MAKEFILE = Makefile.embedded 2 | MAKE_CMD = ${MAKE} -f Makefile.embedded 3 | TARGET = libdynload_s.a 4 | OBJS = dynload.o dynload_syms.o 5 | HEADERS = dynload.h 6 | all: ${TARGET} 7 | libdynload_s.a: ${OBJS} 8 | ${AR} ${ARFLAGS} $@ ${OBJS} 9 | clean: 10 | rm -f ${OBJS} ${TARGET} 11 | install: all 12 | mkdir -p ${DESTDIR}${PREFIX}/include 13 | cp ${HEADERS} ${DESTDIR}${PREFIX}/include 14 | mkdir -p ${DESTDIR}${PREFIX}/lib 15 | cp ${TARGET} ${DESTDIR}${PREFIX}/lib 16 | .PHONY: all clean install 17 | osx-universal: 18 | CFLAGS="${CFLAGS} -arch i386 -arch x86_64 -arch ppc" ASFLAGS="${ASFLAGS} -arch i386 -arch x86_64 -arch ppc" AR="libtool" ARFLAGS="-static -o" ${MAKE_CMD} all 19 | sun-64bit: 20 | CFLAGS="${CFLAGS} -m64" ASFLAGS="${ASFLAGS} -m64" ${MAKE_CMD} all 21 | sun-gcc: 22 | CC=gcc CFLAGS="${CFLAGS} -fPIC" ${MAKE_CMD} all 23 | -------------------------------------------------------------------------------- /dynload/Makefile.generic: -------------------------------------------------------------------------------- 1 | LIBNAME = dynload 2 | OBJS = dynload.o dynload_syms.o 3 | HEADERS = ${VPATH}/dynload.h 4 | 5 | LIB = lib${LIBNAME}_s.a 6 | 7 | .PHONY: all clean install 8 | 9 | all: ${LIB} 10 | ${LIB}: ${OBJS} 11 | ${AR} ${ARFLAGS} ${LIB} ${OBJS} 12 | clean: 13 | rm -f ${OBJS} ${LIB} 14 | install: all 15 | mkdir -p ${PREFIX}/lib 16 | mkdir -p ${PREFIX}/include 17 | cp ${LIB} ${PREFIX}/lib 18 | cp ${HEADERS} ${PREFIX}/include 19 | -------------------------------------------------------------------------------- /dynload/TODO: -------------------------------------------------------------------------------- 1 | - RTLD_LAZY in darwin, why not in unix? 2 | - Failed On Open Solaris 11: 3 | 4 | In file included from dynload_syms.c:28: 5 | dynload_syms_elf.c:56: error: syntax error before "Elf_Dyn" 6 | dynload_syms_elf.c:56: warning: data definition has no type or storage class 7 | dynload_syms_elf.c: In function `dlSymsInit': 8 | dynload_syms_elf.c:155: error: `pDyn' undeclared (first use in this function) 9 | dynload_syms_elf.c:155: error: (Each undeclared identifier is reported only once 10 | dynload_syms_elf.c:155: error: for each function it appears in.) 11 | dynload_syms_elf.c:155: error: syntax error before ')' token 12 | dynload_syms_elf.c:160: error: `DT_NULL' undeclared (first use in this function) 13 | dynload_syms_elf.c:163: error: `DT_STRTAB' undeclared (first use in this function) 14 | dynload_syms_elf.c:164: error: `DT_SYMTAB' undeclared (first use in this function) 15 | dynload_syms_elf.c:165: error: `DT_HASH' undeclared (first use in this function) 16 | make: *** [dynload_syms.o] Error 1 17 | 18 | DONE: 19 | - remove dependencies dyncall_{alloc,macros}.h 20 | 21 | -------------------------------------------------------------------------------- /dynload/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /dynload/dynload_alloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dynload 5 | File: dynload/dynload_alloc.h 6 | Description: heap memory management interface (header only) 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DL_ALLOC_H 28 | #define DL_ALLOC_H 29 | 30 | #ifndef dlAllocMem 31 | #include 32 | #define dlAllocMem malloc 33 | #endif 34 | 35 | #ifndef dlFreeMem 36 | #define dlFreeMem free 37 | #endif 38 | 39 | #endif /* DL_ALLOC_H */ 40 | 41 | -------------------------------------------------------------------------------- /dynload/dynload_syms.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dynload 5 | File: dynload/dynload_syms.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #include "dynload.h" 28 | #include "../autovar/autovar_ABI.h" 29 | #if defined(ABI_PE) 30 | #include "dynload_syms_pe.c" 31 | #elif defined(ABI_Mach) 32 | #include "dynload_syms_mach-o.c" 33 | #elif defined(ABI_ELF) 34 | #include "dynload_syms_elf.c" 35 | #else 36 | void dummy() { } 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = . 22 | 23 | <$TOP/buildsys/mk/prolog.mk 24 | 25 | # directories: 26 | DIRS = dyncall dyncallback 27 | AUTOS = ConfigVars 28 | 29 | #.PHONY: tests doc 30 | tests:V: 31 | cd test; $MK 32 | doc:V: 33 | cd $target/manual; $MK 34 | 35 | <$TOP/buildsys/mk/epilog.mk 36 | 37 | -------------------------------------------------------------------------------- /portasm/README.txt: -------------------------------------------------------------------------------- 1 | portasm - a toolkit for writing portable generic assembler sources 2 | ------------------------------------------------------------------ 3 | 4 | Copyright (C) 2011 Daniel Adler . 5 | Licensed under BSD two-clause license. 6 | 7 | 8 | Requirements 9 | ------------ 10 | - C Preprocessor 11 | 12 | 13 | Supported Architectures and Tool-chains: 14 | ---------------------------------------- 15 | 16 | - x86: gas, apple as, masm 17 | - x64: gas, apple as, masm 18 | - ppc: gas, apple as 19 | - arm: gas, apple as 20 | 21 | 22 | Usage: 23 | ------ 24 | 25 | Implement assembler sources in *.S files which use C preprocessor. 26 | #include portasm-.S at front 27 | 28 | In order to generate MASM files for X86 and X64, run 29 | 'gen-masm.sh ' script which reads .S and outputs .masm file. 30 | 31 | 32 | Common Macros: 33 | -------------- 34 | 35 | BEGIN_ASM 36 | END_ASM 37 | BEGIN_PROC(name) 38 | END_PROC(name) 39 | GLOBAL(name) 40 | HEX(value) 41 | 42 | 43 | -------------------------------------------------------------------------------- /portasm/gen-masm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | gcc -E -P -DGEN_MASM $1.S >$1.asm 3 | 4 | -------------------------------------------------------------------------------- /portasm/portasm-arm.S: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: portasm 5 | File: portasm/portasm-arm.S 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #define BEGIN_ASM .text 28 | #include "../autovar/autovar_OS.h" 29 | #if defined(OS_Darwin) 30 | #define GLOBAL_C(X) .globl _##X 31 | #define ENTRY_C(X) _##X: 32 | #else 33 | #define GLOBAL_C(X) .globl X 34 | #define ENTRY_C(X) X: 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories( 2 | ${PROJECT_SOURCE_DIR}/dynload 3 | ${PROJECT_SOURCE_DIR}/dyncall 4 | ${PROJECT_SOURCE_DIR}/dyncallback 5 | ) 6 | add_subdirectory(suite) 7 | add_subdirectory(ellipsis) 8 | add_subdirectory(suite2) 9 | add_subdirectory(callf) 10 | add_subdirectory(plain) 11 | add_subdirectory(plain_c++) 12 | add_subdirectory(suite3) 13 | add_subdirectory(suite_floats) 14 | add_subdirectory(callback_suite) 15 | add_subdirectory(thunk) 16 | add_subdirectory(malloc_wx) 17 | add_subdirectory(callback_plain) 18 | add_subdirectory(sharedlib) 19 | add_subdirectory(nm) 20 | 21 | if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") 22 | add_subdirectory(suite_x86win32fast) 23 | add_subdirectory(suite_x86win32std) 24 | add_subdirectory(suite2_x86win32fast) 25 | add_subdirectory(suite2_x86win32std) 26 | endif() 27 | 28 | if(${UNIX}) 29 | add_subdirectory(syscall) 30 | endif() 31 | 32 | -------------------------------------------------------------------------------- /test/arm-thumb-interwork/Makefile-default.config: -------------------------------------------------------------------------------- 1 | # auto-generated by ./configure 2 | PREFIX=/usr/local 3 | ASFLAGS= 4 | CFLAGS=-fPIC 5 | CXXFLAGS=-fPIC 6 | LDLIBS=-lm -ldl 7 | -------------------------------------------------------------------------------- /test/arm-thumb-interwork/Makefile-thumb.config: -------------------------------------------------------------------------------- 1 | # auto-generated by ./configure 2 | PREFIX=/usr/local 3 | ASFLAGS=-mthumb 4 | CFLAGS=-fPIC -mthumb 5 | CXXFLAGS=-fPIC -mthumb 6 | LDLIBS=-lm -ldl 7 | -------------------------------------------------------------------------------- /test/arm-thumb-interwork/README.txt: -------------------------------------------------------------------------------- 1 | This tests arm/thumb interwork. 2 | Run build.sh from top-level build directory. 3 | 4 | 1. dyncall is compiled as default using Makefile-default.config 5 | 2. tests are compiled with -mthumb using Makefile-thumb.config 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/arm-thumb-interwork/build.sh: -------------------------------------------------------------------------------- 1 | cp buildsys/arm-thumb-interwork/Makefile-default.config Makefile.config 2 | make clean all 3 | cp buildsys/arm-thumb-interwork/Makefile-thumb.config Makefile.config 4 | cd test && make all 5 | 6 | -------------------------------------------------------------------------------- /test/call_suite/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/call_suite/Makefile.embedded: -------------------------------------------------------------------------------- 1 | TARGET = call_suite ${OBJS} 2 | OBJS = globals.o invoke.o cases.o main.o 3 | 4 | SRCDIR = ../.. 5 | BLDDIR = ${SRCDIR} 6 | LUA = lua 7 | 8 | CPPFLAGS += -I${SRCDIR}/dyncall 9 | LDFLAGS += -L${BLDDIR}/dyncall 10 | LDLIBS += -ldyncall_s 11 | 12 | .PHONY: all clean config config-random 13 | 14 | all: ${TARGET} 15 | call_suite: ${OBJS} 16 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o $@ 17 | config: 18 | ${LUA} mk-cases.lua cases.h 19 | config-random: 20 | ${LUA} rand-sig.lua >cases.txt 21 | ${LUA} mk-cases.lua cases.h 22 | cases.o: cases.h 23 | clean: 24 | rm -f ${TARGET} 25 | 26 | -------------------------------------------------------------------------------- /test/call_suite/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = call_suite 2 | OBJS = globals.o invoke.o cases.o main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | LUA = lua 8 | .PHONY: all clean install config config-random 9 | all: ${APP} 10 | ${APP}: ${OBJS} 11 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 12 | clean: 13 | rm -f ${APP} ${OBJS} 14 | install: 15 | mkdir -p ${PREFIX}/test 16 | cp ${APP} ${PREFIX}/test 17 | config: 18 | ${LUA} mk-cases.lua cases.h 19 | config-random: 20 | ${LUA} rand-sig.lua >cases.txt 21 | ${LUA} mk-cases.lua cases.h 22 | -------------------------------------------------------------------------------- /test/call_suite/README.txt: -------------------------------------------------------------------------------- 1 | call_suite for dyncall written in C and Lua. 2 | 3 | -------------------------------------------------------------------------------- /test/call_suite/config.lua: -------------------------------------------------------------------------------- 1 | -- user config for rand-sig.lua: 2 | minargs = 0 3 | maxargs = 32 4 | ncases = 100 5 | types = "csijlpfd" 6 | 7 | -------------------------------------------------------------------------------- /test/call_suite/design.txt: -------------------------------------------------------------------------------- 1 | vffffffffffffffff 2 | vfffffffffffffffff 3 | vf 4 | vff 5 | vfff 6 | vffff 7 | vfffff 8 | vffffff 9 | vfffffff 10 | vd 11 | vdd 12 | vddd 13 | vdddd 14 | vddddd 15 | vdddddd 16 | vddddddd 17 | vfffddd 18 | vdddfff 19 | vffffffd 20 | vddddddf 21 | vlllllld 22 | vlllllldd 23 | vllllllddd 24 | vlllllldddd 25 | vllllllff 26 | vllllllfff 27 | vllllllffff 28 | vllllllfffffffffffffff 29 | vllllllffffffffffffffff 30 | vlllllldddddddddddddddd 31 | vllllllddddddddddddddddd 32 | vdddddddddddddddd 33 | vddddddddddddddddd 34 | vddddddddddddddddl 35 | vllllllllllllllll 36 | vlllllllllllllllll 37 | vlllldllllllllllll 38 | vlllldddd 39 | vllllddddll 40 | vllllddddlllll 41 | vllllddddlllllllll 42 | vdfdfdfdfdf 43 | vdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdf 44 | vfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd 45 | vd 46 | vdd 47 | vddd 48 | vdddd 49 | vddddd 50 | vdddddd 51 | vddddddd 52 | vdddddddd 53 | vddddddddd 54 | vdddddddddd 55 | vddddddddddd 56 | vdddddddddddd 57 | vddddddddddddd 58 | vdddddddddddddd 59 | vddddddddddddddd 60 | vdddddddddddddddd 61 | vddddddddddddddddd 62 | vdddddddddddddddddd 63 | vddddddddddddddddddd 64 | vdddddddddddddddddddd 65 | vddddddddddddddddddddd 66 | vdddddddddddddddddddddd 67 | vddddddddddddddddddddddd 68 | vdddddddddddddddddddddddd 69 | -------------------------------------------------------------------------------- /test/call_suite/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/call_suite/rand-sig.lua: -------------------------------------------------------------------------------- 1 | require"config" 2 | 3 | rtypes = "v"..types 4 | 5 | math.randomseed(2342) 6 | local sigs = { } 7 | local id 8 | for i = 1, ncases do 9 | id = math.random(#rtypes) 10 | local nargs = math.random(minargs,maxargs) 11 | local sig = { rtypes:sub(id,id)} 12 | for j = 1, nargs do 13 | id = math.random(#types) 14 | sig[#sig+1] = types:sub(id,id) 15 | end 16 | io.write(table.concat(sig)) 17 | io.write("\n") 18 | end 19 | 20 | -------------------------------------------------------------------------------- /test/callback_plain/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | add_executable(callback_plain callback_plain.c) 3 | target_link_libraries(callback_plain dyncallback_s) 4 | 5 | -------------------------------------------------------------------------------- /test/callback_plain/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/callback_plain/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = callback_plain 2 | OBJS = callback_plain.o 3 | 4 | SRCTOP = ../.. 5 | BLDTOP = ${SRCTOP} 6 | CFLAGS += -I${SRCTOP}/dyncall 7 | LDFLAGS += -L${BLDDIR}/dyncallback 8 | LDLIBS += -ldyncallback_s 9 | 10 | all: ${APP} 11 | 12 | .PHONY: all clean install 13 | 14 | ${APP}: ${OBJS} 15 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 16 | 17 | clean: 18 | rm -f ${APP} ${OBJS} 19 | 20 | -------------------------------------------------------------------------------- /test/callback_plain/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = callback_plain 2 | OBJS = callback_plain.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncallback -ldyncallback_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | -------------------------------------------------------------------------------- /test/callback_plain/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/callback_plain/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2013 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = callback_plain 26 | APPLICATION = callback_plain 27 | LIBS = $TOP/dyncallback/libdyncallback_s.a$O 28 | 29 | 30 | <$TOP/buildsys/mk/epilog.mk 31 | -------------------------------------------------------------------------------- /test/callback_suite/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(callback_suite env.c handler.c sigstrings.c invokers.c do_test.c main.c print.c signature_utils.c) 2 | target_link_libraries(callback_suite dyncallback_s) 3 | 4 | -------------------------------------------------------------------------------- /test/callback_suite/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/callback_suite/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = callback_suite 2 | OBJS = env.o handler.o sigstrings.o invokers.o do_test.o main.o print.o signature_utils.o 3 | 4 | SRCTOP = ../.. 5 | BLDTOP = ${SRCTOP} 6 | CFLAGS += -I${SRCTOP}/dyncall -I${SRCTOP}/dyncallback 7 | LDFLAGS += -L${BLDTOP}/dyncall -L${BLDTOP}/dyncallback 8 | LDLIBS += -ldyncall_s -ldyncallback_s 9 | 10 | all: ${APP} 11 | 12 | .PHONY: all clean install 13 | 14 | ${APP}: ${OBJS} 15 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 16 | 17 | clean: 18 | rm -f ${APP} ${OBJS} 19 | 20 | -------------------------------------------------------------------------------- /test/callback_suite/_auto_config.h: -------------------------------------------------------------------------------- 1 | #define CONFIG_NSIGS 400 2 | #define CONFIG_MAXARGS 29 3 | #define CONFIG_API 4 | -------------------------------------------------------------------------------- /test/callback_suite/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/callback_suite/invokers.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/invokers.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | void DoInvoke(int index, void* addr); 26 | -------------------------------------------------------------------------------- /test/callback_suite/make-config.lua: -------------------------------------------------------------------------------- 1 | require "config" 2 | 3 | local defs = { 4 | MAXARGS = maxargs, 5 | NSIGS = nsigs, 6 | API = api 7 | } 8 | 9 | for k,v in pairs(defs) do 10 | io.write("#define CONFIG_" .. k .. " " .. v .. "\n" ) 11 | end 12 | io.flush() 13 | 14 | -------------------------------------------------------------------------------- /test/callback_suite/make-cstrings.lua: -------------------------------------------------------------------------------- 1 | require "config" 2 | for line in io.lines() do 3 | io.write( '"' .. ccprefix .. line .. '",\n' ) 4 | end 5 | io.flush() 6 | 7 | -------------------------------------------------------------------------------- /test/callback_suite/make-invoke-macros.lua: -------------------------------------------------------------------------------- 1 | require "config" 2 | if mode == "ordered" then 3 | minargs = 0 4 | end 5 | local i 6 | for i = minargs, maxargs do 7 | local line = "#define F" .. i .. "(ID,R" 8 | local argdef = "" 9 | local argset = "" 10 | if i > 0 then 11 | line = line .. "," 12 | local j 13 | for j = 0, i-1 do 14 | if j > 0 then 15 | argdef = argdef .. "," 16 | argset = argset .. "," 17 | end 18 | argdef = argdef .. "A" .. j 19 | argset = argset .. "A[" .. j .. "].A" .. j 20 | end 21 | end 22 | line = line .. argdef .. ") void ID(void* addr) { Result.R = ((CONFIG_API R(*)(" .. argdef .. "))addr)(" .. argset .. ");}\n" 23 | io.write(line) 24 | end 25 | io.flush() 26 | 27 | 28 | -------------------------------------------------------------------------------- /test/callback_suite/make-invoke-table.lua: -------------------------------------------------------------------------------- 1 | require "config" 2 | 3 | local i 4 | for i = 1, nsigs do 5 | line = "&f" .. i .. ",\n" 6 | io.write(line) 7 | end 8 | 9 | -------------------------------------------------------------------------------- /test/callback_suite/make-invokers.lua: -------------------------------------------------------------------------------- 1 | require "config" 2 | local id = 1 3 | for signature in io.lines() do 4 | local nargs = string.len(signature) - 2 5 | local rtype = string.sub(signature, nargs + 2, nargs + 2) 6 | local outline = "F" .. nargs .. "(f" .. id .. "," .. rtype 7 | for i = 1, nargs do 8 | local type = string.sub(signature, i, i) 9 | outline = outline .. "," .. type 10 | end 11 | outline = outline .. ")\n" 12 | io.write( outline ) 13 | id = id + 1 14 | end 15 | io.flush() 16 | 17 | -------------------------------------------------------------------------------- /test/callback_suite/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2013 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = env handler sigstrings invokers do_test main print signature_utils 26 | APPLICATION = callback_suite 27 | LIBS = $TOP/dyncallback/libdyncallback_s.a$O 28 | 29 | 30 | <$TOP/buildsys/mk/epilog.mk 31 | -------------------------------------------------------------------------------- /test/callback_suite/print.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/print.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | void PrintUsage(const char* appname); 26 | void PrintHeader(); 27 | void PrintCaseInfo(int index, const char* signature); 28 | void PrintCaseResult(int result); 29 | void PrintTotalResult(int result); 30 | -------------------------------------------------------------------------------- /test/callback_suite/signature_utils.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/signature_utils.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #include "dyncall_signature.h" 26 | 27 | const char* SignatureSkipCallPrefix(const char* signature) 28 | { 29 | if ( signature[0] == DC_SIGCHAR_CC_PREFIX ) { 30 | signature += 2; 31 | } 32 | return signature; 33 | } 34 | -------------------------------------------------------------------------------- /test/callback_suite/signature_utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/signature_utils.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | const char* SignatureSkipCallPrefix(const char* signature); 26 | -------------------------------------------------------------------------------- /test/callback_suite/sigstrings.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/sigstrings.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #include "_auto_config.h" 26 | 27 | const char* sigstrings[CONFIG_NSIGS] = 28 | { 29 | #include "_auto_sigstrings.h" 30 | }; 31 | 32 | const char* GetSignature(int index) 33 | { 34 | return sigstrings[index]; 35 | } 36 | 37 | -------------------------------------------------------------------------------- /test/callback_suite/sigstrings.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/sigstrings.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | const char* GetSignature(int index); /* index starts at 0 */ 26 | 27 | -------------------------------------------------------------------------------- /test/callback_suite/stress1.cfg: -------------------------------------------------------------------------------- 1 | i)B 2 | i)c 3 | i)C 4 | i)s 5 | i)S 6 | i)i 7 | i)I 8 | i)j 9 | i)J 10 | i)l 11 | i)L 12 | i)p 13 | i)f 14 | i)d 15 | ii)B 16 | iii)B 17 | i)c 18 | ii)C 19 | iii)C 20 | i)i 21 | ii)i 22 | iii)i 23 | iiii)i 24 | iiiii)i 25 | iiiiii)i 26 | iiiiiii)i 27 | iiiiiiii)i 28 | iiiiiiiii)i 29 | iiiiiiiiii)i 30 | iiiiiiiiiii)i 31 | iiiiiiiiiiii)i 32 | l)l 33 | ll)l 34 | lll)l 35 | llll)l 36 | lllll)l 37 | llllll)l 38 | lllllll)l 39 | j)j 40 | jj)j 41 | jjj)j 42 | jjjj)j 43 | jjjjj)j 44 | jjjjjj)j 45 | fdfdid)i 46 | fdidid)f 47 | ffidid)d 48 | didddd)l 49 | dfdidd)i 50 | ddiddd)f 51 | jjjjjj)j 52 | llllll)l 53 | iiiiii)i 54 | ffffff)f 55 | dddddd)d 56 | idfdid)l 57 | -------------------------------------------------------------------------------- /test/callf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(callf main.c) 2 | target_link_libraries(callf dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/callf/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/callf/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = callf 2 | OBJS = main.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dyncall 6 | LDFLAGS += -L${TOP}/dyncall 7 | LDLIBS += -ldyncall_s 8 | 9 | all: ${APP} 10 | 11 | .PHONY: all clean 12 | 13 | ${APP}: ${OBJS} 14 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 15 | 16 | clean: 17 | rm -f ${APP} ${OBJS} 18 | 19 | -------------------------------------------------------------------------------- /test/callf/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = callf 2 | OBJS = main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/callf/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/callf/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = main 26 | APPLICATION = callf 27 | LIBS = $TOP/dyncall/libdyncall_s.a$O 28 | 29 | <$TOP/buildsys/mk/epilog.mk 30 | -------------------------------------------------------------------------------- /test/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all && exit || sh $(?:bat=sh) all 3 | clean: ./../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean && exit || sh $(?:bat=sh) clean 5 | -------------------------------------------------------------------------------- /test/ellipsis/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(ellipsis main.cc ellipsis.cc) 2 | target_link_libraries(ellipsis dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/ellipsis/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/ellipsis/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = ellipsis 2 | OBJS = ellipsis.o main.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dyncall 6 | LDFLAGS += -L${TOP}/dyncall 7 | LDLIBS += -ldyncall_s 8 | 9 | all: ${APP} 10 | 11 | .PHONY: all clean install 12 | 13 | ${APP}: ${OBJS} 14 | ${CXX} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 15 | 16 | clean: 17 | rm -f ${APP} ${OBJS} 18 | 19 | -------------------------------------------------------------------------------- /test/ellipsis/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = ellipsis 2 | OBJS = ellipsis.o main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CXXFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/ellipsis/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/ellipsis/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NARGS 3 27 | #define NTYPES 4 28 | -------------------------------------------------------------------------------- /test/ellipsis/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/gen-masm/Makefile: -------------------------------------------------------------------------------- 1 | all: call_x86.masm call_x64.masm 2 | 3 | %.masm: %.S 4 | ${CPP} -E -P -DGEN_MASM $< -o $@ 5 | -------------------------------------------------------------------------------- /test/gen-masm/gen_masm.sh: -------------------------------------------------------------------------------- 1 | gcc -E -P -DGEN_MASM call_x86.S >call_x86.masm 2 | gcc -E -P -DGEN_MASM call_x64.S >call_x64.masm 3 | 4 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/Makefile: -------------------------------------------------------------------------------- 1 | include Makefile.darwin 2 | 3 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/Makefile.darwin: -------------------------------------------------------------------------------- 1 | TARGETS = test 2 | TARGET_ARCH += -arch armv6 3 | TARGET_ARCH += -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk 4 | # TARGET_ARCH += -mno-thumb-interwork 5 | # TARGET_ARCH += -mthumb-interwork 6 | CFLAGS += -mthumb 7 | # CFLAGS = -mthumb-interwork 8 | # CFLAGS_THUMB = -mthumb $(CFLAGS) 9 | # CFLAGS += -mthumb-interwork 10 | all: $(LOADLIBES) test 11 | 12 | thumb.o: thumb.c 13 | $(CC) -c $(CPPFLAGS) $(CFLAGS) $(TARGET_ARCH) -mthumb $< -o $@ 14 | 15 | arm.o: arm.c 16 | 17 | test.o: test.c 18 | 19 | test: test.o thumb.o arm.o 20 | $(LINK.o) $^ $(OUTPUT_OPTION) 21 | 22 | %.s: %.c 23 | $(CC) -S $(CPPFLAGS) $(CFLAGS) $(TARGET_ARCH) $< -o $@ 24 | 25 | clean: 26 | $(RM) $(TARGETS) *.o 27 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/Makefile.linux: -------------------------------------------------------------------------------- 1 | TARGETS = test 2 | TARGET_ARCH += -mthumb-interwork 3 | all: test 4 | thumb.o: thumb.c 5 | $(COMPILE.c) $< -mthumb $(OUTPUT_OPTION) 6 | test: test.o thumb.o arm.o 7 | $(LINK.o) $^ $(OUTPUT_OPTION) 8 | clean: 9 | $(RM) $(TARGETS) *.o 10 | 11 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/README.txt: -------------------------------------------------------------------------------- 1 | darwin: 2 | 3 | armv6: addresses are even 4 | 5 | arm addresses are even 6 | thumb addresses are odd 7 | 8 | armv7: addresses are odd -mthumb-interwork and -mno-thumb-interwork no effect 9 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/arm.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-arm-thumb-interwork/arm.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | void arm() 26 | { 27 | } 28 | 29 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/diff-gcc-defs/Makefile: -------------------------------------------------------------------------------- 1 | default: all 2 | .PHONY: all clean 3 | 4 | TOP = ../../.. 5 | 6 | include $(TOP)/ConfigVars 7 | 8 | ifeq ("${CONFIG_OS}","iphoneos") 9 | DIFFSCRIPT=diff-iphoneos.sh 10 | else 11 | DIFFSCRIPT=diff-generic.sh 12 | endif 13 | 14 | all: 15 | sh ${DIFFSCRIPT} 16 | clean: 17 | rm -Rf out 18 | 19 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/diff-gcc-defs/diff-generic.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | TARGET_ARCH="-arch armv7" 3 | mkdir -p out 4 | 5 | # ARCHS="armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6t2 armv6z armv7-a armv7-r ep9312" 6 | ARCHS="armv2" 7 | # armv7 armv7-m iwmmxt 8 | 9 | touch empty.c 10 | touch empty.S 11 | 12 | gcc ${TARGET_ARCH} -E -dM empty.c | sort >out/c_default 13 | gcc ${TARGET_ARCH} -E -dM empty.S | sort >out/a_default 14 | 15 | rm -f out/diff_c out/diff_a 16 | 17 | for a in ${ARCHS} ; do 18 | gcc ${TARGET_ARCH} -E -dM -march=${a} empty.c | sort >out/c_${a} 19 | gcc ${TARGET_ARCH} -E -dM -march=${a} empty.S | sort >out/a_${a} 20 | echo ${a} >>out/diff_c 21 | echo ${a} >>out/diff_a 22 | diff out/c_default out/c_${a} >>out/diff_c 23 | diff out/a_default out/a_${a} >>out/diff_a 24 | done 25 | 26 | # armv3 is default. 27 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/diff-gcc-defs/empty.S: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-arm-thumb-interwork/diff-gcc-defs/empty.S 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/diff-gcc-defs/empty.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-arm-thumb-interwork/diff-gcc-defs/empty.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/test.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-arm-thumb-interwork/test.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #include 26 | #include "../common/platformInit.h" 27 | 28 | void arm(); 29 | void thumb(); 30 | 31 | int main(int argc, char* argv[]) 32 | { 33 | arm(); 34 | thumb(); 35 | printf("arm: %d\n", (ptrdiff_t) &arm); 36 | printf("thumb: %d\n", (ptrdiff_t) &thumb); 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /test/hacking-arm-thumb-interwork/thumb.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-arm-thumb-interwork/thumb.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | void thumb() 26 | { 27 | } 28 | 29 | -------------------------------------------------------------------------------- /test/hacking-mips/Makefile: -------------------------------------------------------------------------------- 1 | CFLAGS = 2 | MODULES = main.o dispatch.o f.o node.o call.o 3 | TARGETS = calls.s test 4 | all: $(TARGETS) 5 | test: $(MODULES) 6 | $(CC) $^ -o $@ 7 | %.s: %.c 8 | $(CC) -S $< -o $@ 9 | clean: 10 | $(RM) $(TARGETS) *.o 11 | -------------------------------------------------------------------------------- /test/hacking-mips/README.txt: -------------------------------------------------------------------------------- 1 | here are some snippets that helped when exploring the mips abis. 2 | -------------------------------------------------------------------------------- /test/hacking-mips/call.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/call.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | void call_f0() 26 | { 27 | n0(); 28 | } 29 | 30 | void call_f4() 31 | { 32 | n4(1,2,3,4); 33 | } 34 | 35 | void call_f8() 36 | { 37 | n8(1,2,3,4,5,6,7,8); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /test/hacking-mips/dispatch.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/dispatch.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #include "common.h" 26 | int dispatch(fp funptr, int a0, int a1, int a2, int a3, int a4, int a5) 27 | { 28 | return funptr(a0,a1,a2,a3,a4,a5); 29 | /* 30 | int result1 = funptr(a0,a1,a2,a3,a4,a5); 31 | return result1 + a0 + a1 + a2; 32 | */ 33 | } 34 | -------------------------------------------------------------------------------- /test/hacking-mips/f.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/f.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #include "common.h" 26 | int f(int a0, int a1, int a2, int a3, int a4, int a5) 27 | { 28 | return a0+a1+a2+a3+a4+a5; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /test/hacking-mips/f0.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/f0.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | void f0() 26 | { 27 | } 28 | 29 | -------------------------------------------------------------------------------- /test/hacking-mips/funs.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/funs.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | typedef float f; 26 | f _ffffffffff(f f0, f f1, f f2, f f3, f f4, f f5, f f6, f f7, f f8, f f9) 27 | { 28 | return f0+f1+f2+f3+f4+f5+f6+f7+f8+f9; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /test/hacking-mips/retn.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/retn.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define DEF_RETN(N) int ret##N(int a0, int a1, int a2, int a3, int a4, int a5) { return a##N; } 26 | 27 | DEF_RETN(0) 28 | DEF_RETN(1) 29 | DEF_RETN(2) 30 | DEF_RETN(3) 31 | DEF_RETN(4) 32 | DEF_RETN(5) 33 | 34 | -------------------------------------------------------------------------------- /test/makepkg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # script to package some tests for quick deployment (useful for embedded stuff) 3 | 4 | TOP=.. 5 | . $TOP/ConfigVars 6 | 7 | TESTS="callf ellipsis malloc_wx plain plain_c++ suite suite2 suite3 suite_floats callback_plain callback_suite" 8 | # addition test: 9 | # 10 | # callback_plain callback_suite callf 11 | # ellipsis 12 | # malloc_wx thunk 13 | # nm 14 | # plain suite suite2 suite3 15 | # suite2_x86win32fast suite2_x86win32std suite_x86win32fast suite_x86win32std 16 | 17 | TARGET="${CONFIG_OS}_${CONFIG_ARCH}_${CONFIG_TOOL}_${CONFIG_CONFIG}" 18 | BUILD_DIR=build_out 19 | 20 | mkdir -p pack_out/testpkg 21 | for I in $TESTS ; do 22 | cp $I/$BUILD_DIR/$TARGET/$I pack_out/testpkg 23 | done 24 | tar -cvzf test-pack.tar.gz -C pack_out testpkg 25 | -------------------------------------------------------------------------------- /test/malloc_wx/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(malloc_wx test_wx.c) 2 | target_link_libraries(malloc_wx dyncallback_s) 3 | 4 | -------------------------------------------------------------------------------- /test/malloc_wx/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/malloc_wx/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = malloc_wx 2 | OBJS = test_wx.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dyncallback -I${TOP}/dyncall 6 | LDFLAGS += -L${TOP}/dyncallback 7 | LDLIBS += -ldyncallback_s 8 | 9 | all: ${APP} 10 | 11 | .PHONY: all clean 12 | 13 | ${APP}: ${OBJS} 14 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 15 | 16 | clean: 17 | rm -f ${APP} ${OBJS} 18 | 19 | -------------------------------------------------------------------------------- /test/malloc_wx/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = malloc_wx 2 | OBJS = test_wx.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncallback -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncallback -ldyncallback_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/malloc_wx/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/malloc_wx/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2013 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = test_wx 26 | APPLICATION = malloc_wx 27 | LIBS = $TOP/dyncallback/libdyncallback_s.a$O 28 | 29 | 30 | <$TOP/buildsys/mk/epilog.mk 31 | -------------------------------------------------------------------------------- /test/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = .. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | # only C-stuff for now... 25 | DIRS = callf plain call_suite suite thunk malloc_wx callback_plain callback_suite # plain_c++ is not included, b/c C++ on Plan9 is rather inexistant 26 | #DIRS = suite2 suite3 suite_floats ellipsis 27 | 28 | <$TOP/buildsys/mk/epilog.mk 29 | -------------------------------------------------------------------------------- /test/nm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(nm nm.c) 2 | target_link_libraries(nm dynload_s ${CMAKE_DL_LIBS}) 3 | 4 | -------------------------------------------------------------------------------- /test/nm/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/nm/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = nm 2 | OBJS = nm.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dynload 6 | LDFLAGS += -L${TOP}/dynload 7 | LDLIBS += -ldynload_s 8 | # Works on: Darwin, NetBSD. 9 | # Linux: add '-ldl' 10 | 11 | all: ${APP} 12 | 13 | .PHONY: all clean 14 | 15 | ${APP}: ${OBJS} 16 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o $@ 17 | 18 | clean: 19 | rm -f ${APP} ${OBJS} 20 | 21 | -------------------------------------------------------------------------------- /test/nm/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = nm 2 | OBJS = nm.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dynload 6 | LDLIBS_D += -L${BLDTOP}/dynload -ldynload_s 7 | # Works on: Darwin, NetBSD. 8 | # Linux: add '-ldl' 9 | .PHONY: all clean install 10 | all: ${APP} 11 | ${APP}: ${OBJS} 12 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS_D} ${LDLIBS} -o ${APP} 13 | clean: 14 | rm -f ${APP} ${OBJS} 15 | install: 16 | mkdir -p ${PREFIX}/test 17 | cp ${APP} ${PREFIX}/test 18 | 19 | -------------------------------------------------------------------------------- /test/nm/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/pack-tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # pack-script for embedded testing. 3 | 4 | DATE=`date +%s` 5 | NAME="dyncall-tests-${DATE}" 6 | 7 | mkdir -p _work/${NAME} 8 | printf "#!/bin/sh\n" >_work/${NAME}/run.sh 9 | for I in $* ; do 10 | cp $I/$I _work/${NAME} 11 | printf "./$I\n" >>_work/${NAME}/run.sh 12 | printf "%-20s <- %-20s\n" "$I" "$PWD/$I/$I" >>_work/${NAME}/CONTENTS.txt 13 | done 14 | mkdir -p _packed 15 | chmod +x _work/${NAME}/run.sh 16 | tar -cvzf _packed/${NAME}.tar.gz -C _work ${NAME} 17 | printf "finished: tests are in ${PWD}/_packed/${NAME}.tar.gz, execute run-all.sh\n" 18 | 19 | -------------------------------------------------------------------------------- /test/plain/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(plain test_main.c test_structs.c) 2 | target_link_libraries(plain dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/plain/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: plain 4 | 5 | plain: _O(test_main) _O(test_structs) 6 | _(CC) _(CFLAGS) _(PREREQS) _(LDFLAGS) _(LDFLAG_IN_PREFIX)dyncall_s _(LDFLAG_OUT_PREFIX)_(TARGET) 7 | 8 | clean: 9 | _(RM) _O(*) 10 | _(RM) plain 11 | -------------------------------------------------------------------------------- /test/plain/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = plain 2 | OBJS = test_main.o test_structs.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dyncall 6 | LDFLAGS += -L${TOP}/dyncall 7 | LDLIBS += -ldyncall_s 8 | 9 | all: ${APP} 10 | 11 | .PHONY: all clean install 12 | 13 | ${APP}: ${OBJS} 14 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 15 | 16 | clean: 17 | rm -f ${APP} ${OBJS} 18 | 19 | -------------------------------------------------------------------------------- /test/plain/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = plain 2 | OBJS = test_main.o test_structs.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/plain/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/plain/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = test_main test_structs 26 | APPLICATION = plain 27 | LIBS = $TOP/dyncall/libdyncall_s.a$O 28 | 29 | <$TOP/buildsys/mk/epilog.mk 30 | -------------------------------------------------------------------------------- /test/plain_c++/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(plain_cxx test_main.cc) 2 | target_link_libraries(plain_cxx dyncall_s) 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/plain_c++/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/plain_c++/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = plain_c++ 2 | OBJS = test_main.o 3 | TOP = ../.. 4 | CFLAGS += -I${TOP}/dyncall 5 | LDFLAGS += -L${TOP}/dyncall 6 | LDLIBS += -ldyncall_s 7 | 8 | all: ${APP} 9 | 10 | .PHONY: all clean install 11 | 12 | ${APP}: ${OBJS} 13 | ${CXX} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 14 | 15 | clean: 16 | rm -f ${APP} ${OBJS} 17 | 18 | -------------------------------------------------------------------------------- /test/plain_c++/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = plain_c++ 2 | OBJS = test_main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CXXFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/plain_c++/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/plain_c++/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = test_main 26 | APPLICATION = plain_c++ 27 | 28 | 29 | <$TOP/buildsys/mk/epilog.mk 30 | -------------------------------------------------------------------------------- /test/resolve_self/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/resolve_self/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = resolve_self 2 | OBJS = main.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dynload 6 | LDFLAGS += -L${TOP}/dynload 7 | LDLIBS += -ldynload_s 8 | 9 | all: ${APP} 10 | 11 | .PHONY: all clean install 12 | 13 | ${APP}: ${OBJS} 14 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 15 | 16 | clean: 17 | rm -f ${APP} ${OBJS} 18 | 19 | -------------------------------------------------------------------------------- /test/resolve_self/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = resolve_self 2 | OBJS = main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dynload 6 | LDLIBS_D = -L${BLDTOP}/dynload -ldynload_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS_D} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/resolve_self/README.txt: -------------------------------------------------------------------------------- 1 | test for dynload library to resolve symbols from application image itself. 2 | by Daniel Adler in 2010 3 | 4 | Description 5 | A test function is specified in the main application, that will be 6 | dynamically resolved on main entry of the test program. 7 | 8 | The library path argument to dlLoadLibrary is set to NULL to 9 | specify the application image. 10 | 11 | Background 12 | self referencing is important on configurations where there is no 13 | shared library but everything is statically linked. 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/resolve_self/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/runalltests.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | callf\callf.exe 3 | pause 4 | ellipsis\ellipsis.exe 5 | pause 6 | malloc_wx\malloc_wx.exe 7 | pause 8 | plain\plain.exe 9 | pause 10 | plain_c++\plain_c++.exe 11 | pause 12 | suite\suite.exe 13 | pause 14 | suite_x86win32std\suite.exe 15 | pause 16 | suite_x86win32fast\suite.exe 17 | pause 18 | suite2\suite2.exe 19 | pause 20 | suite2_x86win32std\suite2.exe 21 | pause 22 | suite2_x86win32fast\suite2.exe 23 | pause 24 | suite3\suite3.exe 25 | pause 26 | suite_floats\suite_floats.exe 27 | pause 28 | thunk\thunk.exe 29 | pause 30 | callback_plain\callback_plain.exe 31 | pause 32 | callback_suite\callback_suite.exe 33 | pause 34 | -------------------------------------------------------------------------------- /test/runalltests.sh: -------------------------------------------------------------------------------- 1 | A="callf ellipsis malloc_wx plain plain_c++ suite suite2 suite3 suite_floats callback_plain call_suite callback_suite" # syscall nm resolve_self thunk 2 | for i in $A ; do 3 | $i/$i 4 | done 5 | 6 | -------------------------------------------------------------------------------- /test/samples/calls/d16.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/d16.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define d double 26 | void d16( 27 | d,d,d,d, 28 | d,d,d,d, 29 | d,d,d,d, 30 | d,d,d,d 31 | ); 32 | void t(d* x) 33 | { 34 | d16(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]); 35 | } 36 | -------------------------------------------------------------------------------- /test/samples/calls/d20.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/d20.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define d double 26 | void d20( 27 | d,d,d,d, 28 | d,d,d,d, 29 | d,d,d,d, 30 | d,d,d,d, 31 | d,d,d,d 32 | ); 33 | void t(d*x) 34 | { 35 | d20(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15],x[16],x[17],x[18],x[19]); 36 | } 37 | -------------------------------------------------------------------------------- /test/samples/calls/d40.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/d40.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define d double 26 | void d40( 27 | d,d,d,d, 28 | d,d,d,d, 29 | d,d,d,d, 30 | d,d,d,d, 31 | d,d,d,d, 32 | d,d,d,d, 33 | d,d,d,d, 34 | d,d,d,d, 35 | d,d,d,d, 36 | d,d,d,d 37 | ); 38 | void t() 39 | { 40 | d40( 41 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 42 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 43 | ); 44 | } 45 | -------------------------------------------------------------------------------- /test/samples/calls/f16.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/f16.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define f float 26 | void f16( 27 | f,f,f,f, 28 | f,f,f,f, 29 | f,f,f,f, 30 | f,f,f,f 31 | ); 32 | void t(f* x) 33 | { 34 | f16(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]); 35 | } 36 | -------------------------------------------------------------------------------- /test/samples/calls/f20.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/f20.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define f float 26 | void f20( 27 | f,f,f,f, 28 | f,f,f,f, 29 | f,f,f,f, 30 | f,f,f,f, 31 | f,f,f,f 32 | ); 33 | void t() 34 | { 35 | f20(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); 36 | } 37 | -------------------------------------------------------------------------------- /test/samples/calls/f40.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/f40.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define d float 26 | void f40( 27 | d,d,d,d, 28 | d,d,d,d, 29 | d,d,d,d, 30 | d,d,d,d, 31 | d,d,d,d, 32 | d,d,d,d, 33 | d,d,d,d, 34 | d,d,d,d, 35 | d,d,d,d, 36 | d,d,d,d 37 | ); 38 | void t() 39 | { 40 | f40( 41 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 42 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 43 | ); 44 | } 45 | -------------------------------------------------------------------------------- /test/samples/calls/i3.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/i3.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define i int 26 | void i3(i,i,i); 27 | 28 | void t(i*x) 29 | { 30 | i3(x[1],x[2],x[3]); 31 | } 32 | -------------------------------------------------------------------------------- /test/samples/calls/i7.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/i7.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define i int 26 | void i7(i,i,i,i,i,i,i); 27 | void t() 28 | { 29 | i7(0,1,2,3,4,5,6); 30 | } 31 | -------------------------------------------------------------------------------- /test/samples/calls/l16.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/samples/calls/l16.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #define X long long 26 | void f16( 27 | X,X,X,X, 28 | X,X,X,X, 29 | X,X,X,X, 30 | X,X,X,X 31 | ); 32 | void t(X* x) 33 | { 34 | f16(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]); 35 | } 36 | -------------------------------------------------------------------------------- /test/samples/composite/build.bat: -------------------------------------------------------------------------------- 1 | cl /c /O2 args.c /Faargs.asm 2 | -------------------------------------------------------------------------------- /test/samples/composite/makefile: -------------------------------------------------------------------------------- 1 | TARGETS=args.s 2 | 3 | #CC=gcc-mp-4.7 4 | #TARGET_ARCH=-march=corei7-avx 5 | #TARGET_ARCH=-march=corei7-avx -mavx -msse2avx 6 | #-mno-vzeroupper 7 | CFLAGS=-O3 8 | #-fomit-frame-pointer -fno-exceptions 9 | # -fno-rtti 10 | all: ${TARGETS} 11 | clean: 12 | rm -f ${TARGETS} 13 | .c.s: 14 | ${CC} -S $< -o $@ ${CFLAGS} ${TARGET_ARCH} 15 | -------------------------------------------------------------------------------- /test/sharedlib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(sharedlib SHARED sharedlib.c) 2 | target_link_libraries(sharedlib dynload_s) 3 | -------------------------------------------------------------------------------- /test/sharedlib/Makefile.embedded: -------------------------------------------------------------------------------- 1 | MAKEFILE = Makefile.embedded 2 | MAKE_CMD = ${MAKE} -f ${MAKEFILE} 3 | TARGET = libsharedlib.so 4 | OBJS = sharedlib.o 5 | CPPFLAGS += -I../../dynload 6 | LDFLAGS += -L../../dynload 7 | LDLIBS += -ldynload_s 8 | 9 | ${TARGET}: ${OBJS} 10 | ${CC} -shared -o $@ $? ${LDFLAGS} ${LDLIBS} 11 | all: ${TARGET} 12 | clean: 13 | rm -f ${TARGET} ${OBJS} 14 | 15 | sun-gcc: 16 | CC=gcc CFLAGS="${CFLAGS} -fPIC" ${MAKE_CMD} all 17 | -------------------------------------------------------------------------------- /test/sharedlib/sharedlib.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/sharedlib/sharedlib.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | #include "dynload.h" 26 | 27 | DLLib* mylib_load(char const *name) 28 | { 29 | return dlLoadLibrary(name); 30 | } 31 | -------------------------------------------------------------------------------- /test/sign/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = sign 2 | OBJS = sign.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | CFLAGS += -O3 8 | .PHONY: all clean install 9 | all: ${APP} 10 | ${APP}: ${OBJS} 11 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 12 | clean: 13 | rm -f ${APP} ${OBJS} 14 | install: 15 | mkdir -p ${PREFIX}/test 16 | cp ${APP} ${PREFIX}/test 17 | -------------------------------------------------------------------------------- /test/suite/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite main.c case.c) 2 | if(WIN32) 3 | else() 4 | list(APPEND AUX_LIBS m) 5 | endif() 6 | target_link_libraries(suite dyncall_s ${AUX_LIBS}) 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/suite/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = suite 2 | OBJS = case.o main.o 3 | SRCTOP = ../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDFLAGS += -L${BLDTOP}/dyncall 7 | LDLIBS += -ldyncall_s 8 | 9 | .PHONY: all clean autogen 10 | all: ${APP} 11 | ${APP}: ${OBJS} 12 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 13 | clean: 14 | rm -f ${APP} ${OBJS} 15 | autogen: 16 | python mkcase.py >case.h 2>config.h 17 | -------------------------------------------------------------------------------- /test/suite/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite 2 | OBJS = case.o main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/suite/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NARGS 8 27 | #define NTYPES 2 28 | -------------------------------------------------------------------------------- /test/suite/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2010 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = case main 26 | APPLICATION = suite 27 | LIBS = $TOP/dyncall/libdyncall_s.a$O 28 | 29 | #.PHONY: config 30 | #config: mkcase.py 31 | # echo Generating test cases... 32 | # python mkcase.py >case.h 2>config.h 33 | 34 | 35 | <$TOP/buildsys/mk/epilog.mk 36 | -------------------------------------------------------------------------------- /test/suite2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite2 case.cc main.cc) 2 | target_link_libraries(suite2 dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/suite2/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite2/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = suite2 2 | OBJS = case.o main.o 3 | 4 | TOP = ../.. 5 | CFLAGS += -I${TOP}/dyncall 6 | LDFLAGS += -L${TOP}/dyncall 7 | LDLIBS += -ldyncall_s 8 | 9 | all: ${APP} 10 | 11 | 12 | .PHONY: all clean autogen 13 | 14 | ${APP}: ${OBJS} 15 | ${CXX} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 16 | 17 | clean: 18 | rm -f ${APP} ${OBJS} 19 | 20 | autogen: 21 | python mkcase.py 1>case.h 2>config.h 22 | -------------------------------------------------------------------------------- /test/suite2/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite2 2 | OBJS = case.o main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CXXFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean configure install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | configure: 14 | python mkcase.py 1>case.h 2>config.h 15 | install: 16 | mkdir -p ${PREFIX}/test 17 | cp ${APP} ${PREFIX}/test 18 | 19 | -------------------------------------------------------------------------------- /test/suite2/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite2/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NCASES 16 27 | #define MAXARGS 14 28 | -------------------------------------------------------------------------------- /test/suite2/design.cfg: -------------------------------------------------------------------------------- 1 | 2 | dddddddddd 3 | iiiiiiiiii 4 | iiiiiiiiffffff 5 | iiiiiiiidddddd 6 | ffffffffff 7 | llllllllll 8 | ifffffffff 9 | iddddddddd 10 | idfdidfdid 11 | fdfdididfd 12 | fdidididid 13 | ffidididid 14 | didddd 15 | dfdidd 16 | ilflfl 17 | ddiddd 18 | 19 | -------------------------------------------------------------------------------- /test/suite2/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite2/funcinfo.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite2/funcinfo.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DC_TEST_FUNCINFO_H 28 | #define DC_TEST_FUNCINFO_H 29 | 30 | #include "../../dyncall/dyncall_signature.h" 31 | 32 | struct funcinfo 33 | { 34 | DCpointer funcptr; 35 | const DCsigchar* sig; 36 | }; 37 | 38 | extern funcinfo gFuncInfos[]; 39 | 40 | #endif /* DC_TEST_FUNCINFO_H */ 41 | -------------------------------------------------------------------------------- /test/suite2/ints.cfg: -------------------------------------------------------------------------------- 1 | 2 | i 3 | ii 4 | iii 5 | iiii 6 | iiiii 7 | iiiiii 8 | iiiiiii 9 | iiiiiiii 10 | iiiiiiiii 11 | iiiiiiiiii 12 | -------------------------------------------------------------------------------- /test/suite2/stress1.cfg: -------------------------------------------------------------------------------- 1 | 2 | dddddddddd 3 | iiiiiiiiii 4 | iiiiiiiiffffff 5 | iiiiiiiidddddd 6 | ffffffffff 7 | llllllllll 8 | ifffffffff 9 | iddddddddd 10 | idfdidfdid 11 | fdfdididfd 12 | fdidididid 13 | ffidididid 14 | didddd 15 | dfdidd 16 | ilflfl 17 | ddiddd 18 | 19 | -------------------------------------------------------------------------------- /test/suite2_x86win32fast/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite2_x86win32fast case.cc main.cc) 2 | target_link_libraries(suite2_x86win32fast dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/suite2_x86win32fast/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite2_x86win32fast/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite2_x86win32fast 2 | OBJS = case.o main.o 3 | 4 | TOP = ../.. 5 | CFLAGS = -I${TOP}/dyncall 6 | LDFLAGS = -L${TOP}/dyncall 7 | LDLIBS = -ldyncall_s 8 | LINK = ${CXX} 9 | 10 | all: ${APP} 11 | 12 | .PHONY: all clean install 13 | 14 | RM ?= rm -f 15 | AR ?= ar 16 | MKDIR ?= mkdir 17 | INSTALL ?= install -p 18 | 19 | ${APP}: ${OBJS} 20 | ${LINK} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} ${TARGET_ARCH} 21 | 22 | clean: 23 | ${RM} ${APP} ${OBJS} 24 | 25 | -------------------------------------------------------------------------------- /test/suite2_x86win32fast/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite2_x86win32fast/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NCASES 97 27 | #define MAXARGS 19 28 | -------------------------------------------------------------------------------- /test/suite2_x86win32fast/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite2_x86win32fast/funcinfo.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite2_x86win32fast/funcinfo.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DC_TEST_FUNCINFO_H 28 | #define DC_TEST_FUNCINFO_H 29 | 30 | #include "../../dyncall/dyncall_signature.h" 31 | 32 | struct funcinfo 33 | { 34 | DCpointer funcptr; 35 | const DCsigchar* sig; 36 | }; 37 | 38 | extern funcinfo gFuncInfos[]; 39 | 40 | #endif /* DC_TEST_FUNCINFO_H */ 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /test/suite2_x86win32std/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite2_x86win32std case.cc main.cc) 2 | target_link_libraries(suite2_x86win32std dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/suite2_x86win32std/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite2_x86win32std/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite2_x86win32std 2 | OBJS = case.o main.o 3 | 4 | TOP = ../.. 5 | CFLAGS = -I${TOP}/dyncall 6 | LDFLAGS = -L${TOP}/dyncall 7 | LDLIBS = -ldyncall_s 8 | LINK = ${CXX} 9 | 10 | all: ${APP} 11 | 12 | .PHONY: all clean install 13 | 14 | RM ?= rm -f 15 | AR ?= ar 16 | MKDIR ?= mkdir 17 | INSTALL ?= install -p 18 | 19 | ${APP}: ${OBJS} 20 | ${LINK} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} ${TARGET_ARCH} 21 | 22 | clean: 23 | ${RM} ${APP} ${OBJS} 24 | 25 | -------------------------------------------------------------------------------- /test/suite2_x86win32std/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite2_x86win32std/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NCASES 94 27 | #define MAXARGS 19 28 | -------------------------------------------------------------------------------- /test/suite2_x86win32std/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite2_x86win32std/funcinfo.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite2_x86win32std/funcinfo.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2007-2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | 26 | 27 | #ifndef DC_TEST_FUNCINFO_H 28 | #define DC_TEST_FUNCINFO_H 29 | 30 | #include "../../dyncall/dyncall_signature.h" 31 | 32 | struct funcinfo 33 | { 34 | DCpointer funcptr; 35 | const DCsigchar* sig; 36 | }; 37 | 38 | extern funcinfo gFuncInfos[]; 39 | 40 | #endif /* DC_TEST_FUNCINFO_H */ 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /test/suite3/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite3 case.cc main.cc) 2 | target_link_libraries(suite3 dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/suite3/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite3/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = suite3 2 | OBJS = case.o main.o 3 | TOP = ../.. 4 | CFLAGS += -I${TOP}/dyncall 5 | LDFLAGS += -L${TOP}/dyncall 6 | LDLIBS += -ldyncall_s 7 | 8 | .PHONY: all clean autogen 9 | 10 | all: ${APP} 11 | ${APP}: ${OBJS} 12 | ${CXX} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 13 | clean: 14 | rm -f ${APP} ${OBJS} 15 | autogen: 16 | python mkcase.py 1>case.h 2>config.h 17 | -------------------------------------------------------------------------------- /test/suite3/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite3 2 | OBJS = case.o main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CPPFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/suite3/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite3/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NARGS 4 27 | #define NTYPES 4 28 | -------------------------------------------------------------------------------- /test/suite3/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite_floats/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite_floats case.cc main.cc) 2 | target_link_libraries(suite_floats dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/suite_floats/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite_floats/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = suite_floats 2 | OBJS = case.o main.o 3 | TOP = ../.. 4 | CFLAGS += -I${TOP}/dyncall 5 | LDFLAGS += -L${TOP}/dyncall 6 | LDLIBS += -ldyncall_s 7 | 8 | all: ${APP} 9 | 10 | 11 | .PHONY: all clean 12 | 13 | ${APP}: ${OBJS} 14 | ${CXX} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 15 | 16 | clean: 17 | rm -f ${APP} ${OBJS} 18 | 19 | -------------------------------------------------------------------------------- /test/suite_floats/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite_floats 2 | OBJS = case.o main.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CXXFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CXX} ${CXXFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/suite_floats/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite_floats/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NARGS 10 27 | #define NTYPES 2 28 | -------------------------------------------------------------------------------- /test/suite_floats/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite_x86win32fast/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite_x86win32fast main.cc case.cc) 2 | target_link_libraries(suite_x86win32fast dyncall_s) 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/suite_x86win32fast/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite_x86win32fast/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite_x86win32fast 2 | OBJS = case.o main.o 3 | 4 | SRCTOP = ../.. 5 | BLDTOP = ../../ 6 | CFLAGS += -I${SRCTOP}/dyncall 7 | LDFLAGS += -L${BLDTOP}/dyncall 8 | LDLIBS += -ldyncall_s 9 | LINK = ${CC} 10 | 11 | all: ${APP} 12 | 13 | .PHONY: all clean install 14 | 15 | RM ?= rm -f 16 | AR ?= ar 17 | MKDIR ?= mkdir 18 | INSTALL ?= install -p 19 | 20 | ${APP}: ${OBJS} 21 | ${LINK} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} ${TARGET_ARCH} 22 | 23 | clean: 24 | ${RM} ${APP} ${OBJS} 25 | 26 | -------------------------------------------------------------------------------- /test/suite_x86win32fast/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite_x86win32fast/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NARGS 3 27 | #define NTYPES 6 28 | -------------------------------------------------------------------------------- /test/suite_x86win32fast/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/suite_x86win32std/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite_x86win32std main.cc case.cc) 2 | target_link_libraries(suite_x86win32std dyncall_s) 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/suite_x86win32std/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/suite_x86win32std/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = suite_x86win32std 2 | OBJS = case.o main.o 3 | 4 | SRCTOP = ../.. 5 | BLDTOP = ../../ 6 | CFLAGS += -I${SRCTOP}/dyncall 7 | LDFLAGS += -L${BLDTOP}/dyncall 8 | LDLIBS += -ldyncall_s 9 | LINK = ${CC} 10 | 11 | all: ${APP} 12 | 13 | .PHONY: all clean install 14 | 15 | RM ?= rm -f 16 | AR ?= ar 17 | MKDIR ?= mkdir 18 | INSTALL ?= install -p 19 | 20 | ${APP}: ${OBJS} 21 | ${LINK} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} ${TARGET_ARCH} 22 | 23 | clean: 24 | ${RM} ${APP} ${OBJS} 25 | 26 | -------------------------------------------------------------------------------- /test/suite_x86win32std/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/suite_x86win32std/config.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011 Daniel Adler , 10 | Tassilo Philipp 11 | 12 | Permission to use, copy, modify, and distribute this software for any 13 | purpose with or without fee is hereby granted, provided that the above 14 | copyright notice and this permission notice appear in all copies. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 17 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 18 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 19 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 | 24 | */ 25 | /* auto generated by mkcase (on stderr) */ 26 | #define NARGS 3 27 | #define NTYPES 6 28 | -------------------------------------------------------------------------------- /test/suite_x86win32std/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/syscall/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(syscall syscall.c) 2 | target_link_libraries(syscall dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /test/syscall/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/syscall/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = syscall 2 | OBJS = syscall.o 3 | 4 | SRCTOP = ../.. 5 | BLDTOP = ../.. 6 | CFLAGS += -I${SRCTOP}/dyncall 7 | LDFLAGS += -L${BLDTOP}/dyncall 8 | LDLIBS += -ldyncall_s 9 | LINK = ${CC} 10 | 11 | all: ${APP} 12 | 13 | .PHONY: all clean 14 | 15 | ${APP}: ${OBJS} 16 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 17 | 18 | clean: 19 | rm -f ${APP} ${OBJS} 20 | 21 | -------------------------------------------------------------------------------- /test/syscall/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = syscall 2 | OBJS = syscall.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncall -ldyncall_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/syscall/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/thunk/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(test_thunk test_thunk.c) 2 | target_link_libraries(test_thunk dyncallback_s) 3 | 4 | -------------------------------------------------------------------------------- /test/thunk/Makefile.M: -------------------------------------------------------------------------------- 1 | #include "../../buildsys/dynmake/Makefile.base.M" 2 | 3 | all: 4 | echo not impl!!! 5 | 6 | clean: 7 | echo not impl!!! 8 | -------------------------------------------------------------------------------- /test/thunk/Makefile.embedded: -------------------------------------------------------------------------------- 1 | APP = thunk 2 | OBJS = test_thunk.o 3 | 4 | SRCTOP = ../.. 5 | BLDTOP = ../.. 6 | CFLAGS += -I${SRCTOP}/dyncallback -I${SRCTOP}/dyncall 7 | LDFLAGS += -L${BLDTOP}/dyncallback 8 | LDLIBS += -ldyncallback_s 9 | LINK = ${CC} 10 | 11 | all: ${APP} 12 | 13 | .PHONY: all clean 14 | 15 | ${APP}: ${OBJS} 16 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o ${APP} 17 | 18 | clean: 19 | rm -f ${APP} ${OBJS} 20 | 21 | -------------------------------------------------------------------------------- /test/thunk/Makefile.generic: -------------------------------------------------------------------------------- 1 | APP = thunk 2 | OBJS = test_thunk.o 3 | SRCTOP = ${VPATH}/../.. 4 | BLDTOP = ../.. 5 | CFLAGS += -I${SRCTOP}/dyncallback -I${SRCTOP}/dyncall 6 | LDLIBS += -L${BLDTOP}/dyncallback -ldyncallback_s 7 | .PHONY: all clean install 8 | all: ${APP} 9 | ${APP}: ${OBJS} 10 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS} -o ${APP} 11 | clean: 12 | rm -f ${APP} ${OBJS} 13 | install: 14 | mkdir -p ${PREFIX}/test 15 | cp ${APP} ${PREFIX}/test 16 | 17 | -------------------------------------------------------------------------------- /test/thunk/dynMakefile: -------------------------------------------------------------------------------- 1 | all: ./../../buildsys/dynmake/dynmake.bat 2 | $(?:/=\\) all $(MAKE) && exit || sh $(?:bat=sh) all $(MAKE) 3 | clean: ./../../buildsys/dynmake/dynmake.bat 4 | $(?:/=\\) clean $(MAKE) && exit || sh $(?:bat=sh) clean $(MAKE) 5 | -------------------------------------------------------------------------------- /test/thunk/mkfile: -------------------------------------------------------------------------------- 1 | #////////////////////////////////////////////////////////////////////////////// 2 | # 3 | # Copyright (c) 2013 Daniel Adler , 4 | # Tassilo Philipp 5 | # 6 | # Permission to use, copy, modify, and distribute this software for any 7 | # purpose with or without fee is hereby granted, provided that the above 8 | # copyright notice and this permission notice appear in all copies. 9 | # 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | # 18 | #////////////////////////////////////////////////////////////////////////////// 19 | 20 | 21 | TOP = ../.. 22 | <$TOP/buildsys/mk/prolog.mk 23 | 24 | 25 | UNITS = test_thunk 26 | APPLICATION = thunk 27 | LIBS = $TOP/dyncallback/libdyncallback_s.a$O 28 | 29 | 30 | <$TOP/buildsys/mk/epilog.mk 31 | --------------------------------------------------------------------------------