├── .hgtags ├── .travis.yml ├── AUTHORS ├── BUGS ├── CMakeLists.txt ├── ChangeLog ├── LICENSE ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README ├── ToDo ├── appveyor.yml ├── 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 ├── 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 │ └── vs2005.sln ├── configure ├── configure.bat ├── configure.rc ├── doc ├── 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 ├── disas_examples │ ├── arm.armhf.disas │ ├── arm.atpcs_arm.disas │ ├── arm.darwin_arm.disas │ ├── arm.darwin_thumb.disas │ ├── arm64.aapcs.disas │ ├── mips.eabi.disas │ ├── mips.o32.disas │ ├── mips64.n64.disas │ ├── ppc.darwin.disas │ ├── ppc.sysv.disas │ ├── ppc64.elfabi.disas │ ├── sparc.sparc.disas │ ├── sparc64.sparc64.disas │ ├── x64.sysv.disas │ ├── x64.win.disas │ ├── x86.cdecl.disas │ ├── x86.fastcall_borland.disas │ └── x86.plan9call.disas └── manual │ ├── CMakeLists.txt │ ├── Makefile.generic │ ├── Nmakefile │ ├── callconvs │ ├── callconv_arm32.tex │ ├── callconv_arm64.tex │ ├── callconv_mips32.tex │ ├── callconv_mips64.tex │ ├── callconv_ppc32.tex │ ├── callconv_ppc64.tex │ ├── callconv_sparc32.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 ├── dyncall ├── CMakeLists.txt ├── DynCallConfig.cmake ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README-Developer.txt ├── README.txt ├── dyncall.3 ├── dyncall.h ├── dyncall_alloc.h ├── dyncall_api.c ├── dyncall_call.S ├── dyncall_call_arm32_arm.S ├── dyncall_call_arm32_arm_armhf.S ├── dyncall_call_arm32_thumb_apple.s ├── dyncall_call_arm32_thumb_armhf.S ├── dyncall_call_arm32_thumb_gas.s ├── dyncall_call_arm64.S ├── dyncall_call_mips_eabi_gas.s ├── dyncall_call_mips_n32.S ├── dyncall_call_mips_n64.S ├── dyncall_call_mips_o32.S ├── dyncall_call_ppc32.S ├── dyncall_call_ppc64.S ├── dyncall_call_sparc.S ├── dyncall_call_sparc64.S ├── dyncall_call_x64.S ├── dyncall_call_x64_generic_masm.asm ├── dyncall_call_x86.S ├── 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_n32.h ├── 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_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.embedded ├── Makefile.generic ├── Nmakefile ├── 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.c ├── dyncall_args_arm32.h ├── dyncall_args_arm64.c ├── dyncall_args_arm64_apple.c ├── dyncall_args_mips.c ├── dyncall_args_mips.h ├── dyncall_args_mips64.c ├── dyncall_args_mips_o32.c ├── 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.c ├── dyncall_callback_arm32_arm_apple.s ├── dyncall_callback_arm32_arm_gas.S ├── dyncall_callback_arm32_thumb_apple.S ├── dyncall_callback_arm32_thumb_gas.S ├── dyncall_callback_arm64.S ├── dyncall_callback_arm64.c ├── dyncall_callback_mips.c ├── dyncall_callback_mips_eabi_gas.s ├── dyncall_callback_mips_n32.S ├── dyncall_callback_mips_n64.S ├── dyncall_callback_mips_o32.S ├── dyncall_callback_ppc32.S ├── dyncall_callback_ppc32.c ├── dyncall_callback_ppc32_apple.s ├── dyncall_callback_ppc64.S ├── dyncall_callback_ppc64.c ├── dyncall_callback_sparc32.c ├── dyncall_callback_sparc32.s ├── dyncall_callback_sparc64.c ├── dyncall_callback_sparc64.s ├── dyncall_callback_x64.S ├── dyncall_callback_x64.c ├── dyncall_callback_x64_masm.asm ├── dyncall_callback_x86.S ├── dyncall_callback_x86.c ├── dyncall_callback_x86_8a.s ├── dyncall_callback_x86_masm.asm ├── dyncall_thunk.c ├── dyncall_thunk.h ├── dyncall_thunk_arm32.c ├── dyncall_thunk_arm32.h ├── dyncall_thunk_arm64.c ├── dyncall_thunk_arm64.h ├── dyncall_thunk_mips.c ├── dyncall_thunk_mips.h ├── dyncall_thunk_mips64.c ├── dyncall_thunk_mips64.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.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── dynload.3 ├── dynload.c ├── dynload.h ├── dynload_alloc.h ├── 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-ppc64.S ├── portasm-x64.S └── portasm-x86.S └── test ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── arm-thumb-interwork ├── Makefile-default.config ├── Makefile-thumb.config ├── README.txt └── build.sh ├── call_suite ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── cases.c ├── cases.h ├── cases.txt ├── config.lua ├── design.txt ├── globals.c ├── globals.h ├── invoke.c ├── main.c ├── mk-cases.lua ├── mkfile └── rand-sig.lua ├── callback_plain ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── callback_plain.c └── mkfile ├── callback_suite ├── CMakeLists.txt ├── 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 ├── 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.embedded ├── Makefile.generic ├── Nmakefile ├── main.c └── mkfile ├── common ├── platformInit.c └── platformInit.h ├── dynload_plain ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile └── dynload_plain.c ├── ellipsis ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.h ├── config.h ├── 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.embedded ├── Makefile.generic ├── Nmakefile ├── mkfile └── test_wx.c ├── mkfile ├── nm ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile └── nm.c ├── pack-tests.sh ├── plain ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── mkfile ├── test_main.c └── test_structs.c ├── plain_c++ ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── mkfile └── test_main.cc ├── resolve_self ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt └── main.c ├── run-build.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.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.c ├── case.h ├── config.h ├── main.c ├── mkcase.py └── mkfile ├── suite2 ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── case.cc ├── case.h ├── config.h ├── design.cfg ├── funcinfo.h ├── ints.cfg ├── main.cc ├── mkcase.py ├── rand.py └── stress1.cfg ├── suite2_x86win32fast ├── CMakeLists.txt ├── Makefile.generic ├── Nmakefile ├── case.cc ├── case.h ├── config.h ├── design.cfg ├── funcinfo.h ├── main.cc ├── mkcase.py └── rand.py ├── suite2_x86win32std ├── CMakeLists.txt ├── Makefile.generic ├── Nmakefile ├── case.cc ├── case.h ├── config.h ├── design.cfg ├── funcinfo.h ├── main.cc ├── mkcase.py └── rand.py ├── suite3 ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── main.cc └── mkcase.py ├── suite_floats ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── main.cc └── mkcase.py ├── suite_x86win32fast ├── CMakeLists.txt ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── main.cc └── mkcase.py ├── suite_x86win32std ├── CMakeLists.txt ├── Makefile.generic ├── Nmakefile ├── README.txt ├── case.cc ├── case.h ├── config.h ├── main.cc └── mkcase.py ├── syscall ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic └── syscall.c └── thunk ├── CMakeLists.txt ├── Makefile.embedded ├── Makefile.generic ├── Nmakefile ├── mkfile └── test_thunk.c /.hgtags: -------------------------------------------------------------------------------- 1 | d9c707a699d9077241270c7a279fda54493f3b20 r0.9-RC1 2 | a461b6977b52c1c741421a9a6949bf23495574c7 r0.9-RC2 3 | ecc9403e214ac96fb50e4c4adba018a25cfb25ed r0.9-RC3 4 | 9e9d6a90492a47449759ea6e892b1971059c5c67 r0.9-RC4 5 | 4eef76c8d22fff07f16b2100fab18526649c503e r0.9-RC5 6 | f1d47aca579aa0c6c1c7cd94fad6465388666b47 r0.9 7 | f1d47aca579aa0c6c1c7cd94fad6465388666b47 r0.9 8 | 0000000000000000000000000000000000000000 r0.9 9 | 0000000000000000000000000000000000000000 r0.9 10 | 8b3f468f1bf90102e798a55775d7acb8b2a7e4ae r0.9 11 | dfc6f17361410ca0f6a63b59d7a3865849a8c574 r1.0-RC1 12 | ce688f871d51f5af672a55873ec6c50aed6caf59 r1.0-RC2 13 | 8d9629a078e493e9dcea6e17fa03882a1155f7fd r1.0-RC3 14 | 4e63c6411e59e8467a1a11bb281fe3859854c0c3 r1.0 15 | 3c6bc720bc1f1c3c9c95232de3747a658925ca9e r1.1-RC1 16 | c607d67cd6b824536566ec07187c7bb385541b54 r1.1-RC2 17 | da4b267c10bf516e687f7512ab8c49f6c5af9be9 r1.1-RC3 18 | 127fe78cb7dda66d89b0d5bcc778202a1ff0a387 r1.1-RC4 19 | 2f28f26c72a71952667aebe16b7281f8df7692f6 r1.1 20 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Daniel Adler 2 | Tassilo Philipp 3 | Olivier Chafik 4 | Erik Mackdanz 5 | Masanori Mitsugi 6 | 7 | -------------------------------------------------------------------------------- /BUGS: -------------------------------------------------------------------------------- 1 | - add support for SELinux 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-2020 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.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 | show-compiler-predefs: 37 | ${CC} ${CFLAGS} -dM -E - < /dev/null 38 | 39 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: '{build}' 2 | skip_tags: true 3 | image: Visual Studio 2019 4 | clone_depth: 3 5 | environment: 6 | AWS_ACCESS_KEY_ID: 7 | secure: 7jhk0oV/vjFsOcsAHLMUcNGUGLuGmnuPxGH0ce/Vky8= 8 | AWS_SECRET_ACCESS_KEY: 9 | secure: 5KKYpsIHwYHHh5ud0U7Ss0rLumv6G8tkS6abh1B9aq4wY6+1kq5fN/3E5BsdBVKy 10 | AWS_DEFAULT_REGION: us-east-1 11 | S3_CONFIG_VOLATILE: --acl public-read --cache-control "public, must-revalidate, proxy-revalidate, max-age=0" 12 | GIT_FORMAT: '%%H' 13 | matrix: 14 | - ARCH: x64 15 | PLATFORM: x64 16 | - ARCH: x86 17 | PLATFORM: Win32 18 | - ARCH: arm64 19 | PLATFORM: ARM64 20 | matrix: 21 | fast_finish: true 22 | build_script: 23 | - cmd: >- 24 | mkdir build 25 | 26 | cd build 27 | 28 | cmake -G "Visual Studio 16 2019" -A %PLATFORM% -DCMAKE_C_FLAGS_RELEASE:STRING="/EHsc /Ox /GF /Gy /GR- /MT /DNDEBUG" .. 29 | 30 | cmake --build . --config Release 31 | 32 | aws s3 cp dyncall\Release\dyncall_s.lib s3://build.lwjgl.org/nightly/windows/%ARCH%/core/ %S3_CONFIG_VOLATILE% 33 | 34 | aws s3 cp dyncallback\Release\dyncallback_s.lib s3://build.lwjgl.org/nightly/windows/%ARCH%/core/ %S3_CONFIG_VOLATILE% 35 | 36 | aws s3 cp dynload\Release\dynload_s.lib s3://build.lwjgl.org/nightly/windows/%ARCH%/core/ %S3_CONFIG_VOLATILE% 37 | test: off 38 | notifications: 39 | - provider: Email 40 | to: 41 | - iotsakp@gmail.com 42 | subject: dyncall CI 43 | on_build_success: true 44 | on_build_failure: true 45 | on_build_status_changed: true -------------------------------------------------------------------------------- /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 | GameConsole 63 | 64 | CC: 65 | INTEL 66 | MSVC 67 | GNU 68 | WATCOM 69 | PCC 70 | SUN 71 | -------------------------------------------------------------------------------- /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-2018 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 AUTOVAR_OSFAMILY_H 27 | #define AUTOVAR_OSFAMILY_H 28 | 29 | #include "autovar_OS.h" 30 | 31 | #if defined(OS_Win32) || defined(OS_Win64) 32 | #define OSFAMILY_Windows 33 | #elif defined(OS_NDS) || defined(OS_PSP) 34 | #define OSFAMILY_GameConsole 35 | #else 36 | #define OSFAMILY_Unix 37 | #endif 38 | 39 | #endif /* AUTOVAR_OSFAMILY_H */ 40 | 41 | -------------------------------------------------------------------------------- /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/epilog.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 | # If we have subdirectories, handle them. 22 | <|if(! ~ x$DIRS x) { cat $TOP/buildsys/mk/dirs.mk }; echo 23 | 24 | # If we have a library to build, include lib.mk, if it is an application, 25 | # include app.mk, etc.. 26 | <|if(! ~ x$LIBRARY x) { cat $TOP/buildsys/mk/lib.mk /sys/src/cmd/mklib }; echo 27 | <|if(! ~ x$APPLICATION x) { cat $TOP/buildsys/mk/app.mk /sys/src/cmd/mkone }; echo 28 | 29 | # Overrides. 30 | <$TOP/buildsys/mk/pcc.mk 31 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /buildsys/vs2005/vs2005.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 9.00 3 | # Visual Studio 2005 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dyncall", "dyncall\dyncall.vcproj", "{DF67B85F-C8F8-4FB1-A701-867A9C835ABA}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {DF67B85F-C8F8-4FB1-A701-867A9C835ABA}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {DF67B85F-C8F8-4FB1-A701-867A9C835ABA}.Debug|Win32.Build.0 = Debug|Win32 14 | {DF67B85F-C8F8-4FB1-A701-867A9C835ABA}.Release|Win32.ActiveCfg = Release|Win32 15 | {DF67B85F-C8F8-4FB1-A701-867A9C835ABA}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /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) by 6 | default (i386, x86_64). 7 | In addition, the desired SDK can be choosen. 8 | 9 | Optional configure switches for Mac OS X: 10 | 11 | Operating System: 12 | --target=MacOSX (optional, auto-detect) 13 | 14 | SDK: 15 | --sdk= (optional, auto-detect) 16 | 17 | Architecture: 18 | not specified, builds universal binaries depending on SDK version 19 | 20 | 21 | Configure and build for host platform: 22 | 23 | ./configure 24 | make 25 | sudo make install 26 | 27 | 28 | Compile for Mac OS X 10.4u: 29 | 30 | configure --target=MacOSX --sdk=10.4u 31 | 32 | -------------------------------------------------------------------------------- /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/disas_examples/x64.win.disas: -------------------------------------------------------------------------------- 1 | ; @@@ missing 2 | -------------------------------------------------------------------------------- /doc/disas_examples/x86.fastcall_borland.disas: -------------------------------------------------------------------------------- 1 | ; #pragma pack(push, 1) 2 | ; struct TTest 3 | ; { 4 | ; __int32 i1; 5 | ; __int32 i2; 6 | ; }; 7 | ; #pragma pack(pop) 8 | ; 9 | ; TTest __fastcall DoTest() 10 | ; { 11 | ; TTest t; 12 | ; t.i1 = 1; 13 | ; t.i2 = 2; 14 | ; return t; 15 | ; } 16 | ; 17 | ; ... 18 | ; TTest t = DoTest(); 19 | 20 | ; from http://codeverge.com/embarcadero.cppbuilder.cpp/does-fastcall-have-any-bearing-on/1043767 21 | 22 | 23 | DoTest(): 24 | push ebp ; | 25 | mov ebp,esp ; | prolog 26 | add esp,-0x0c ; | 27 | mov [ebp-0x04],eax ; pointer to hidden param in eax -> local area 28 | mov [ebp-0x0c],0x00000001 ; val 1 -> local area 29 | mov [ebp-0x08],0x00000002 ; val 2 -> local area 30 | mov eax,[ebp-0x04] ; refetch eax (pointlessly) 31 | mov edx,[ebp-0x0c] ; get val 1 in edx and ... 32 | mov [eax],edx ; ... store at *eax 33 | mov edx,[ebp-0x08] ; get val 2 in edx and ... 34 | mov [eax+0x04],edx ; ... store at *(eax + 4) 35 | mov eax, [ebp-0x04] ; return value 36 | mov esp,ebp ; | 37 | pop ebp ; | epilog 38 | ret ; | 39 | 40 | ; vim: ft=asm 41 | 42 | -------------------------------------------------------------------------------- /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/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/dyncall_logo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LWJGL-CI/dyncall/3bcebd526fe16f0aa520e32597ff3dbfbf30b1e4/doc/manual/dyncall_logo.pdf -------------------------------------------------------------------------------- /doc/manual/dyncall_watermark.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LWJGL-CI/dyncall/3bcebd526fe16f0aa520e32597ff3dbfbf30b1e4/doc/manual/dyncall_watermark.pdf -------------------------------------------------------------------------------- /dyncall/DynCallConfig.cmake: -------------------------------------------------------------------------------- 1 | set(DYNCALL_INCLUDE_DIRS ${DynCall_SOURCE_DIR}/dyncall) 2 | set(DYNCALL_LIBRARIES dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /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/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-2018 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_ALLOC_H 29 | #define DYNCALL_ALLOC_H 30 | 31 | #ifndef dcAllocMem 32 | #include 33 | #define dcAllocMem malloc 34 | #endif 35 | 36 | #ifndef dcFreeMem 37 | #define dcFreeMem free 38 | #endif 39 | 40 | #endif /* DYNCALL_ALLOC_H */ 41 | 42 | -------------------------------------------------------------------------------- /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-2018 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 | #include "dyncall_callvm.h" 29 | 30 | void dc_callvm_base_init(DCCallVM* pInstance, DCCallVM_vt* pVTable) 31 | { 32 | pInstance->mVTpointer = pVTable; 33 | pInstance->mError = DC_ERROR_NONE; 34 | } 35 | -------------------------------------------------------------------------------- /dyncall/dyncall_callvm_mips.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_callvm_mips.c 6 | Description: ARM 32-bit "thumb" ABI callvm implementation 7 | License: 8 | 9 | Copyright (c) 2007-2018 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 | #if defined(__GNUC__) 29 | 30 | #if defined(DC__ABI_MIPS_O32) 31 | #include "dyncall_callvm_mips_o32.c" 32 | #elif defined(DC__ABI_MIPS_N64) 33 | #include "dyncall_callvm_mips_n64.c" 34 | #elif defined(DC__ABI_MIPS_N32) 35 | #include "dyncall_callvm_mips_n32.c" 36 | #else 37 | #include "dyncall_callvm_mips_eabi.c" 38 | #endif 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /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-2018 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_CALLVM_MIPS_H 29 | #define DYNCALL_CALLVM_MIPS_H 30 | 31 | /* Suported ABIs: */ 32 | 33 | #include "dyncall_callvm_mips_o32.h" 34 | #include "dyncall_callvm_mips_eabi.h" 35 | #include "dyncall_callvm_mips_n64.h" 36 | 37 | #endif /* DYNCALL_CALLVM_MIPS_H */ 38 | 39 | -------------------------------------------------------------------------------- /dyncall/dyncall_callvm_sparc.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_callvm_sparc.h 6 | Description: Call VM for sparc processor architecture. 7 | License: 8 | 9 | Copyright (c) 2011-2020 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 | 27 | #ifndef DYNCALL_CALLVM_SPARC_H 28 | #define DYNCALL_CALLVM_SPARC_H 29 | 30 | #include "dyncall_callvm.h" 31 | #include "dyncall_vector.h" 32 | 33 | /* NOTE: if something changes here, update offset marks in dyncall_call_sparc.S */ 34 | 35 | typedef struct DCCallVM_sparc_ DCCallVM_sparc; 36 | struct DCCallVM_sparc_ 37 | { 38 | DCCallVM mInterface; /* 8 bytes (vtable,errorid) */ 39 | DCVecHead mVecHead; /* 8 bytes (max,size) */ 40 | }; 41 | 42 | #endif /* DYNCALL_CALLVM_SPARC_H */ 43 | 44 | -------------------------------------------------------------------------------- /dyncall/dyncall_callvm_sparc64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_callvm_sparc64.h 6 | Description: Call VM for sparc64 (v9) ABI. 7 | License: 8 | 9 | Copyright (c) 2011-2018 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 | 27 | #ifndef DYNCALL_CALLVM_SPARC_V9_H 28 | #define DYNCALL_CALLVM_SPARC_V9_H 29 | 30 | #include "dyncall_callvm.h" 31 | #include "dyncall_vector.h" 32 | 33 | typedef struct 34 | { 35 | DCCallVM mInterface; /* 0: +12:8 = 16*/ 36 | DCVecHead mVecHead; /* 16 152: mTotalSize +8 */ 37 | /* 24 160: mSize +8 */ 38 | /* 32 168: mData */ 39 | } DCCallVM_v9; 40 | 41 | #endif /* DYNCALL_CALLVM_SPARC_V9_H */ 42 | 43 | -------------------------------------------------------------------------------- /dyncall/dyncall_config.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncall 5 | File: dyncall/dyncall_config.h 6 | Description: Macro configuration file for non-standard C types 7 | License: 8 | 9 | Copyright (c) 2007-2018 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 | /* 29 | 30 | dyncall type configuration 31 | 32 | REVISION 33 | 2007/12/11 initial 34 | 35 | */ 36 | 37 | #ifndef DYNCALL_CONFIG_H 38 | #define DYNCALL_CONFIG_H 39 | 40 | #include "dyncall_macros.h" 41 | 42 | #define DC_BOOL int 43 | #define DC_LONG_LONG long long 44 | #define DC_POINTER void* 45 | 46 | #endif /* DYNCALL_CONFIG_H */ 47 | 48 | -------------------------------------------------------------------------------- /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-2018 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 | 29 | #ifndef DYNCALL_UTILS_H 30 | #define DYNCALL_UTILS_H 31 | 32 | /* C portable macros. */ 33 | 34 | #ifndef DC_MAX 35 | #define DC_MAX(a,b) ((a)>=(b))?(a):(b) 36 | #endif 37 | 38 | #endif /* DYNCALL_UTILS_H */ 39 | 40 | -------------------------------------------------------------------------------- /dyncall/gen-masm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd `dirname $0` 3 | 4 | ../portasm/gen-masm.sh dyncall_call_x86 _generic_masm 5 | ../portasm/gen-masm.sh dyncall_call_x64 _generic_masm 6 | 7 | -------------------------------------------------------------------------------- /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.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.h ${VPATH}/dyncall_thunk_arm64.h ${VPATH}/dyncall_thunk_mips.h ${VPATH}/dyncall_thunk_mips64.h ${VPATH}/dyncall_thunk_ppc64.h ${VPATH}/dyncall_thunk_sparc32.h ${VPATH}/dyncall_thunk_sparc64.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/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-2018 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/dyncall_macros.h" 28 | 29 | #if defined(DC_WINDOWS) 30 | #include "dyncall_alloc_wx_win32.c" 31 | #elif defined(DC_UNIX) 32 | #include "dyncall_alloc_wx_mmap.c" 33 | #else 34 | #include "dyncall_alloc_wx_malloc.c" 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /dyncallback/dyncall_alloc_wx.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_alloc_wx.h 6 | Description: Allocate write/executable memory - Interface 7 | License: 8 | 9 | Copyright (c) 2007-2018 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_WX_HPP 28 | #define DYNCALL_ALLOC_WX_HPP 29 | 30 | #include "dyncall_types.h" 31 | 32 | typedef int DCerror; 33 | 34 | #ifdef __cplusplus 35 | extern "C" { 36 | #endif 37 | 38 | DCerror dcAllocWX (DCsize size, void** p); 39 | DCerror dcInitExecWX(void* p, DCsize size); 40 | void dcFreeWX (void* p, DCsize size); 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | 46 | 47 | #endif /* DYNCALL_ALLOC_WX_HPP */ 48 | 49 | -------------------------------------------------------------------------------- /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-2018 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_alloc_wx.h" 28 | 29 | #include 30 | 31 | 32 | DCerror dcAllocWX(size_t size, void** pp) 33 | { 34 | *pp = malloc(size); 35 | return 0; 36 | } 37 | 38 | DCerror dcInitExecWX(void* p, size_t size) 39 | { 40 | return 0; 41 | } 42 | 43 | void dcFreeWX(void* p, size_t size) 44 | { 45 | free(p); 46 | } 47 | 48 | -------------------------------------------------------------------------------- /dyncallback/dyncall_args_arm32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_args_arm32.h 6 | Description: Callback's Arguments VM - Header for ARM32 (ARM and THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2018 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 DYNCALLBACK_ARGS_ARM32_H 28 | #define DYNCALLBACK_ARGS_ARM32_H 29 | 30 | #include "dyncall_args.h" 31 | 32 | struct DCArgs 33 | { 34 | /* Don't change order! */ 35 | long reg_data[4]; 36 | int reg_count; 37 | long* stack_ptr; 38 | #if defined(DC__ABI_ARM_HF) 39 | DCfloat f[16]; 40 | int freg_count; 41 | int dreg_count; 42 | #endif 43 | }; 44 | 45 | #endif /* DYNCALLBACK_ARGS_ARM32_H */ 46 | 47 | -------------------------------------------------------------------------------- /dyncallback/dyncall_args_ppc64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_args_ppc64.h 6 | Description: Callback's Arguments VM - Header for ppc64 7 | License: 8 | 9 | Copyright (c) 2014-2015 Masanori Mitsugi 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 | #ifndef DYNCALLBACK_ARGS_PPC64_H 26 | #define DYNCALLBACK_ARGS_PPC64_H 27 | 28 | #include "dyncall_args.h" 29 | 30 | struct DCArgs 31 | { 32 | long long ireg_data[8]; 33 | double freg_data[13]; 34 | unsigned char* stackptr; 35 | int ireg_count; 36 | int freg_count; 37 | }; 38 | 39 | #endif /* DYNCALLBACK_ARGS_PPC64_H */ 40 | 41 | -------------------------------------------------------------------------------- /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-2018 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 DYNCALLBACK_ARGS_SPARC32_H 28 | #define DYNCALLBACK_ARGS_SPARC32_H 29 | 30 | #include "dyncall_args.h" 31 | 32 | struct DCArgs 33 | { 34 | int *arg_ptr; 35 | }; 36 | 37 | #endif /* DYNCALLBACK_ARGS_SPARC32_H */ 38 | 39 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_arm32_thumb_apple.S: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_arm32_thumb_apple.S 6 | Description: Callback Thunk - Implementation for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2018 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 | /* We can use the ARM mode callback code here, because the thunk switches */ 28 | /* into ARM mode, the parameters passed use the same registers/stack spase */ 29 | /* as the ARM mode, and the bx instruction switches back to THUMB mode, if */ 30 | /* the function to be called has a "THUMB function address" (=address+1). */ 31 | #include "dyncall_callback_arm32_arm_apple.s" 32 | 33 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_arm32_thumb_gas.S: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_arm32_thumb_gas.S 6 | Description: Callback Thunk - Implementation for ARM32 (THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2018 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 | /* We can use the ARM mode callback code here, because the thunk switches */ 28 | /* into ARM mode, the parameters passed use the same registers/stack space */ 29 | /* as the ARM mode, and the bx instruction switches back to THUMB mode, if */ 30 | /* the function to be called has a "THUMB function address" (=address+1). */ 31 | #include "dyncall_callback_arm32_arm_gas.S" 32 | 33 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_mips_n32.S: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_callback_mips_n32.S 6 | Description: Callback Thunk - Implementation for mips64 n32 7 | License: 8 | 9 | Copyright (c) 2016 Tassilo Philipp 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 | .section .mdebug.abiN32 26 | .previous 27 | .abicalls 28 | .text 29 | .align 2 30 | .globl dcCallbackThunkEntry 31 | .ent dcCallbackThunkEntry 32 | dcCallbackThunkEntry: 33 | 34 | .end dcCallbackThunkEntry 35 | 36 | -------------------------------------------------------------------------------- /dyncallback/dyncall_callback_x86_masm.asm: -------------------------------------------------------------------------------- 1 | ; auto-generated by gen-masm.sh 2 | .386 3 | .MODEL FLAT 4 | .CODE 5 | DCThunk_size = 16 6 | DCArgs_size = 20 7 | DCValue_size = 8 8 | CTX_thunk = 0 9 | CTX_phandler = 16 10 | CTX_pargsvt = 20 11 | CTX_stack_cleanup = 24 12 | CTX_userdata = 28 13 | frame_arg0 = 8 14 | frame_ret = 4 15 | frame_parent = 0 16 | frame_CTX = -4 17 | frame_DCArgs = -24 18 | frame_DCValue = -32 19 | _dcCallbackThunkEntry PROC 20 | OPTION PROLOGUE:NONE, EPILOGUE:NONE 21 | push EBP 22 | mov EBP,ESP 23 | push EAX 24 | push 0 25 | push EDX 26 | push ECX 27 | lea ECX,dword ptr [EBP+frame_arg0] 28 | push ECX 29 | push dword ptr [EAX+CTX_pargsvt] 30 | mov ECX,ESP 31 | push 0 32 | push 0 33 | mov EDX,ESP 34 | and ESP,-16 35 | push dword ptr [EAX+CTX_userdata] 36 | push EDX 37 | push ECX 38 | push EAX 39 | call dword ptr [EAX+CTX_phandler] 40 | mov ESP,EBP 41 | pop ECX 42 | pop ECX 43 | mov EDX,dword ptr [EBP+frame_CTX] 44 | add ESP,dword ptr [EDX+CTX_stack_cleanup] 45 | push ECX 46 | lea EDX,dword ptr [EBP+frame_DCValue] 47 | mov EBP,dword ptr [EBP+0] 48 | cmp AL,102 49 | je return_f32 50 | cmp AL,100 51 | je return_f64 52 | return_i64: 53 | mov EAX,dword ptr [EDX+0] 54 | mov EDX,dword ptr [EDX+4] 55 | ret 56 | return_f32: 57 | fld dword ptr [EDX+0] 58 | ret 59 | return_f64: 60 | fld qword ptr [EDX+0] 61 | return_void: 62 | ret 63 | _dcCallbackThunkEntry ENDP 64 | END 65 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_arm32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_arm32.h 6 | Description: Thunk - Header for ARM32 (ARM and THUMB mode) 7 | License: 8 | 9 | Copyright (c) 2007-2018 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_THUNK_ARM32_H 28 | #define DYNCALL_THUNK_ARM32_H 29 | 30 | 31 | struct DCThunk_ 32 | { 33 | unsigned int code[2]; 34 | void (*entry)(); 35 | }; 36 | 37 | #define DCTHUNK_ARM32_SIZE 12 38 | 39 | 40 | #endif /* DYNCALL_THUNK_ARM32_H */ 41 | 42 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_arm64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_arm64.h 6 | Description: Thunk - Header for ARM64 / ARMv8 / AAPCS64 7 | License: 8 | 9 | Copyright (c) 2015-2018 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_ARM64_H 27 | #define DYNCALL_THUNK_ARM64_H 28 | 29 | struct DCThunk_ /* off size */ 30 | { /* ----|---- */ 31 | unsigned int code[4]; /* 0 16 */ 32 | void (*entry)(); /* 16 8 */ 33 | void* reserved; /* 24 8 */ 34 | }; /* 32 total */ 35 | 36 | #endif /* DYNCALL_THUNK_ARM64_H */ 37 | 38 | -------------------------------------------------------------------------------- /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-2018 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_THUNK_MIPS_H 28 | #define DYNCALL_THUNK_MIPS_H 29 | 30 | struct DCThunk_ 31 | { 32 | unsigned short data[6]; 33 | unsigned int jump; 34 | unsigned short bddt[2]; // branch delay slots 35 | }; 36 | 37 | #define DCTHUNK_MIPS_SIZE 20 38 | 39 | #endif /* DYNCALL_THUNK_MIPS_H */ 40 | 41 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_mips64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_mips64.h 6 | Description: Thunk - Header for MIPS64 7 | License: 8 | 9 | Copyright (c) 2016-2018 Tassilo Philipp 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_THUNK_MIPS64_H 27 | #define DYNCALL_THUNK_MIPS64_H 28 | 29 | struct DCThunk_ 30 | { 31 | union { 32 | unsigned short s[26]; 33 | unsigned int i[13]; /* don't change from 'int', must be 32bit wide */ 34 | } text; 35 | unsigned int padding; /* 4 bytes, to get struct size to multiple of 8 */ 36 | }; 37 | 38 | #define DCTHUNK_MIPS64_SIZE 56 39 | 40 | #endif /* DYNCALL_THUNK_MIPS64_H */ 41 | 42 | -------------------------------------------------------------------------------- /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 7 | License: 8 | 9 | Copyright (c) 2007-2018 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_THUNK_SPARC32_H 28 | #define DYNCALL_THUNK_SPARC32_H 29 | 30 | struct DCThunk_ 31 | { 32 | unsigned int code[6]; 33 | }; 34 | 35 | #define DCTHUNK_SIZE_SPARC32 24 36 | 37 | #endif /* DYNCALL_THUNK_SPARC32_H */ 38 | 39 | -------------------------------------------------------------------------------- /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 7 | License: 8 | 9 | Copyright (c) 2007-2018 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_THUNK_SPARC64_H 28 | #define DYNCALL_THUNK_SPARC64_H 29 | 30 | struct DCThunk_ 31 | { 32 | unsigned int code[14]; 33 | }; 34 | 35 | #define DCTHUNK_SIZE_SPARC64 56 36 | 37 | #endif /* DYNCALL_THUNK_SPARC64_H */ 38 | -------------------------------------------------------------------------------- /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-2018 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_THUNK_X64_H 28 | #define DYNCALL_THUNK_X64_H 29 | 30 | struct DCThunk_ 31 | { 32 | unsigned long long code[2]; 33 | void (*entry)(); 34 | }; 35 | 36 | #define DCTHUNK_X64_SIZE 24 37 | 38 | 39 | #endif /* DYNCALL_THUNK_X64_H */ 40 | 41 | -------------------------------------------------------------------------------- /dyncallback/dyncall_thunk_x86.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dyncallback 5 | File: dyncallback/dyncall_thunk_x86.c 6 | Description: Thunk - Implementation for x86 7 | License: 8 | 9 | Copyright (c) 2007-2018 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.h" 28 | 29 | void dcbInitThunk(DCThunk* p, void (*entry)()) 30 | { 31 | /* 32 | x86 thunk code: 33 | nop 34 | nop 35 | nop 36 | mov %eax, p 37 | jmp [%eax+12] 38 | nop 39 | */ 40 | 41 | p->code_load = 0xb8909090UL; /* nop;nop;nop;mov %eax, ... */ 42 | p->addr_self = p; 43 | p->code_jump = 0x900C60ffUL; /* jmp [%eax+12] ; nop */ 44 | p->addr_entry = entry; 45 | } 46 | -------------------------------------------------------------------------------- /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-2018 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_THUNK_X86_H 28 | #define DYNCALL_THUNK_X86_H 29 | 30 | struct DCThunk_ 31 | { 32 | unsigned int code_load; 33 | void* addr_self; 34 | unsigned int code_jump; 35 | void (*addr_entry)(); 36 | }; 37 | 38 | #define DCTHUNK_X86_SIZE 16 39 | 40 | #endif /* DYNCALL_THUNK_X86_H */ 41 | -------------------------------------------------------------------------------- /dyncallback/gen-masm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd `dirname $0` 3 | 4 | ../portasm/gen-masm.sh dyncall_callback_x86 _masm 5 | ../portasm/gen-masm.sh dyncall_callback_x64 _masm 6 | 7 | -------------------------------------------------------------------------------- /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.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/dynload.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: dynload 5 | File: dynload/dynload.c 6 | Description: Auto-include delegate to windows/posix-based dynamic linker. 7 | License: 8 | 9 | Copyright (c) 2007-2018 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 "../autovar/autovar_OSFAMILY.h" 28 | #if defined(OSFAMILY_Windows) 29 | # include "dynload_windows.c" 30 | #elif defined(OSFAMILY_Unix) 31 | # include "dynload_unix.c" 32 | #endif 33 | 34 | -------------------------------------------------------------------------------- /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-2018 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 DL_ALLOC_H 29 | #define DL_ALLOC_H 30 | 31 | #ifndef dlAllocMem 32 | #include 33 | #define dlAllocMem malloc 34 | #endif 35 | 36 | #ifndef dlFreeMem 37 | #define dlFreeMem free 38 | #endif 39 | 40 | #endif /* DL_ALLOC_H */ 41 | 42 | -------------------------------------------------------------------------------- /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-2018 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 | #include "dynload.h" 29 | #include "../autovar/autovar_ABI.h" 30 | #if defined(ABI_PE) 31 | #include "dynload_syms_pe.c" 32 | #elif defined(ABI_Mach) 33 | #include "dynload_syms_mach-o.c" 34 | #elif defined(ABI_ELF) 35 | #include "dynload_syms_elf.c" 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /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 | `which gcc || which clang` -E -P -DGEN_MASM ${1:?Usage: $0 []}.S \ 3 | | sed "/^$/d;1i\\ 4 | ; auto-generated by `basename $0` 5 | ;s/$/ 6 | /" \ 7 | > $1$2.asm 8 | 9 | -------------------------------------------------------------------------------- /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-2018 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 | #define BEGIN_ASM .text 29 | #include "../autovar/autovar_OS.h" 30 | #if defined(OS_Darwin) 31 | #define GLOBAL_C(X) .globl _##X 32 | #define ENTRY_C(X) _##X: 33 | #else 34 | #define GLOBAL_C(X) .globl X 35 | #define ENTRY_C(X) X: 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories( 2 | ${PROJECT_SOURCE_DIR}/dynload 3 | ${PROJECT_SOURCE_DIR}/dyncall 4 | ${PROJECT_SOURCE_DIR}/dyncallback 5 | ) 6 | 7 | if (CMAKE_CXX_COMPILER_WORKS) 8 | add_subdirectory(plain_c++) 9 | add_subdirectory(suite2) 10 | add_subdirectory(suite3) 11 | add_subdirectory(suite_floats) 12 | add_subdirectory(ellipsis) 13 | endif () 14 | 15 | add_subdirectory(call_suite) 16 | add_subdirectory(callback_suite) 17 | add_subdirectory(plain) 18 | add_subdirectory(suite) 19 | add_subdirectory(callf) 20 | add_subdirectory(nm) 21 | add_subdirectory(dynload_plain) 22 | add_subdirectory(resolve_self) 23 | add_subdirectory(thunk) 24 | add_subdirectory(malloc_wx) 25 | add_subdirectory(callback_plain) 26 | add_subdirectory(sharedlib) 27 | 28 | if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86" AND CMAKE_CXX_COMPILER_WORKS) 29 | add_subdirectory(suite_x86win32fast) 30 | add_subdirectory(suite_x86win32std) 31 | add_subdirectory(suite2_x86win32fast) 32 | add_subdirectory(suite2_x86win32std) 33 | endif() 34 | 35 | if(${UNIX}) 36 | add_subdirectory(syscall) 37 | endif() 38 | 39 | -------------------------------------------------------------------------------- /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/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(call_suite globals.c invoke.c cases.c main.c) 2 | target_link_libraries(call_suite dyncall_s) 3 | 4 | 5 | -------------------------------------------------------------------------------- /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 = 64 4 | ncases = 400 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/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 = globals invoke cases main 26 | APPLICATION = call_suite 27 | LIBS = $TOP/dyncall/libdyncall_s.a$O 28 | 29 | #.PHONY: config 30 | #config: mkconfig.lua rand-sig.lua mk-cases.lua 31 | # echo Generating test cases... 32 | # lua mk-config.lua >config.h 33 | # lua rand-sig.lua >cases.txt 34 | # lua mk-cases.lua cases.h 35 | 36 | 37 | <$TOP/buildsys/mk/epilog.mk 38 | -------------------------------------------------------------------------------- /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.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/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.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_API 2 | #define CONFIG_MAXARGS 67 3 | #define CONFIG_NSIGS 800 4 | -------------------------------------------------------------------------------- /test/callback_suite/config-random.lua: -------------------------------------------------------------------------------- 1 | -- section 'main' -------------------------------------------------------------- 2 | 3 | nsigs = 800 -- number of test cases 4 | mode = "random" -- generatore mode: 'random' or 'ordered' type sequences 5 | minargs = 0 -- minimum num. of supported arguments (>= 0) 6 | maxargs = 67 -- maximum num. of supported arguments (>= minargs) 7 | 8 | 9 | -- section 'types' ------------------------------------------------------------- 10 | 11 | argtypes = "BcCsSiIjJlLpfd" -- supported argument types 12 | rettypes = argtypes -- supported return types (currently no void support) 13 | 14 | 15 | -- section 'ordered' ----------------------------------------------------------- 16 | 17 | offset = 0 -- permutation index offset (default = 0) 18 | step = 1 -- permutation index increment (default = 1) 19 | 20 | 21 | -- section 'random' ------------------------------------------------------------ 22 | 23 | seed = 40 -- random seed 24 | 25 | 26 | -- section 'calling convention' (useful on Windows for now) -------------------- 27 | 28 | api = "" -- calling convention ("__stdcall" or "__fastcall") 29 | -- for gcc use "__attribute__((__stdcall__))" or "__attribute__((__fastcall__))" 30 | -- for ms ? 31 | ccprefix = "" -- signature prefix ("_s" (stdcall), "_f" (gcc fastcall) or "_F" (microsoft fastcall)) 32 | -------------------------------------------------------------------------------- /test/callback_suite/config.lua: -------------------------------------------------------------------------------- 1 | -- auto-generated file from template config-random.lua (created by GNUmake) 2 | -- section 'main' -------------------------------------------------------------- 3 | 4 | nsigs = 800 -- number of test cases 5 | mode = "random" -- generatore mode: 'random' or 'ordered' type sequences 6 | minargs = 0 -- minimum num. of supported arguments (>= 0) 7 | maxargs = 67 -- maximum num. of supported arguments (>= minargs) 8 | 9 | 10 | -- section 'types' ------------------------------------------------------------- 11 | 12 | argtypes = "BcCsSiIjJlLpfd" -- supported argument types 13 | rettypes = argtypes -- supported return types (currently no void support) 14 | 15 | 16 | -- section 'ordered' ----------------------------------------------------------- 17 | 18 | offset = 0 -- permutation index offset (default = 0) 19 | step = 1 -- permutation index increment (default = 1) 20 | 21 | 22 | -- section 'random' ------------------------------------------------------------ 23 | 24 | seed = 40 -- random seed 25 | 26 | 27 | -- section 'calling convention' (useful on Windows for now) -------------------- 28 | 29 | api = "" -- calling convention ("__stdcall" or "__fastcall") 30 | -- for gcc use "__attribute__((__stdcall__))" or "__attribute__((__fastcall__))" 31 | -- for ms ? 32 | ccprefix = "" -- signature prefix ("_s" (stdcall), "_f" (gcc fastcall) or "_F" (microsoft fastcall)) 33 | -------------------------------------------------------------------------------- /test/callback_suite/dyncall_value_set.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/callback_suite/dyncall_value_set.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011-2018 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_types.h" 27 | typedef struct DCValueSet_ 28 | { 29 | DCbool B; 30 | DCchar c; 31 | DCuchar C; 32 | DCshort s; 33 | DCushort S; 34 | DCint i; 35 | DCuint I; 36 | DClong j; 37 | DCulong J; 38 | DClonglong l; 39 | DCulonglong L; 40 | DCfloat f; 41 | DCdouble d; 42 | DCpointer p; 43 | } DCValueSet; 44 | 45 | -------------------------------------------------------------------------------- /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-2018 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 | void DoInvoke(int index, void* addr); 27 | -------------------------------------------------------------------------------- /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-2018 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 | void PrintUsage(const char* appname); 27 | void PrintHeader(); 28 | void PrintCaseInfo(int index, const char* signature); 29 | void PrintCaseResult(int result); 30 | void PrintTotalResult(int result); 31 | -------------------------------------------------------------------------------- /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-2018 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_signature.h" 27 | 28 | const char* SignatureSkipCallPrefix(const char* signature) 29 | { 30 | if ( signature[0] == DC_SIGCHAR_CC_PREFIX ) { 31 | signature += 2; 32 | } 33 | return signature; 34 | } 35 | -------------------------------------------------------------------------------- /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-2018 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 | const char* SignatureSkipCallPrefix(const char* signature); 27 | -------------------------------------------------------------------------------- /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-2018 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 "_auto_config.h" 27 | 28 | const char* sigstrings[CONFIG_NSIGS] = 29 | { 30 | #include "_auto_sigstrings.h" 31 | }; 32 | 33 | const char* GetSignature(int index) 34 | { 35 | return sigstrings[index]; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /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-2018 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 | const char* GetSignature(int index); /* index starts at 0 */ 27 | 28 | -------------------------------------------------------------------------------- /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.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/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/dynload_plain/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(dynload_plain dynload_plain.c) 2 | target_link_libraries(dynload_plain dynload_s ${CMAKE_DL_LIBS}) 3 | file(WRITE x.c "int dynload_plain_testfunc() { return 5; }") 4 | add_library(x SHARED x.c) 5 | set_target_properties(x PROPERTIES OUTPUT_NAME "dynload_plain_ß_test") 6 | set_target_properties(x PROPERTIES PREFIX "") 7 | set_target_properties(x PROPERTIES SUFFIX "") 8 | if(${UNIX}) 9 | exec_program("((ldd `which ls` | grep -o '/.*/libc.so[^ ]*' || ls /lib*/libc.so* || ls /usr/lib/libc.so*) | grep -v '\\.a\$' | (sort -V -r || sort -t . -n -k 2)) 2>/dev/null | head -1" OUTPUT_VARIABLE DEF_C_DYLIB) 10 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEF_C_DYLIB=\\\"${DEF_C_DYLIB}\\\"") 11 | endif() 12 | 13 | -------------------------------------------------------------------------------- /test/dynload_plain/Makefile.embedded: -------------------------------------------------------------------------------- 1 | # path to default libc.so file, easier to do via shell than in code (see main() in dynload_plain.c) 2 | # for compat: first gmake style, then assignment op which will use ! as part of var name on gmake<4 3 | # and thus not override previously set var 4 | DEF_C_DYLIB=$(shell ((ldd `which ls` | grep -o '/.*/libc.so[^ ]*' || ls /lib*/libc.so* || ls /usr/lib/libc.so*) | grep -v '\.a$$' | (sort -V -r || sort -t . -n -k 2)) 2>/dev/null | head -1) 5 | DEF_C_DYLIB!=((ldd `which ls` | grep -o '/.*/libc.so[^ ]*' || ls /lib*/libc.so* || ls /usr/lib/libc.so*) | grep -v '\.a$$' | (sort -V -r || sort -t . -n -k 2)) 2>/dev/null | head -1 6 | 7 | APP = dynload_plain 8 | OBJS = dynload_plain.o 9 | TEST_U8_SO = dynload_plain_ß_test # @@@ unsure if every platform handles ß, here (ANSI, UTF-8, ...) 10 | 11 | TOP = ../.. 12 | CFLAGS += -I${TOP}/dynload -DDEF_C_DYLIB=\"${DEF_C_DYLIB}\" 13 | LDFLAGS += -L${TOP}/dynload 14 | LDLIBS += -ldynload_s 15 | # Works on: Darwin, NetBSD. 16 | # Linux: add '-ldl' 17 | 18 | all: ${APP} ${TEST_U8_SO} 19 | 20 | .PHONY: all clean 21 | 22 | ${APP}: ${OBJS} 23 | ${CC} ${OBJS} ${LDFLAGS} ${LDLIBS} -o $@ 24 | 25 | ${TEST_U8_SO}: 26 | echo 'int dynload_plain_testfunc() { return 5; }' | ${CC} -`[ \`uname\` = Darwin ] && echo dynamiclib || echo shared` -x c - -o ${TEST_U8_SO} 27 | 28 | clean: 29 | rm -f ${APP} ${OBJS} ${TEST_U8_SO} 30 | 31 | -------------------------------------------------------------------------------- /test/dynload_plain/Makefile.generic: -------------------------------------------------------------------------------- 1 | # path to default libc.so file, easier to do via shell than in code (see main() in dynload_plain.c) 2 | # for compat: first gmake style, then assignment op which will use ! as part of var name on gmake<4 3 | # and thus not override previously set var 4 | DEF_C_DYLIB=$(shell ((ldd `which ls` | grep -o '/.*/libc.so[^ ]*' || ls /lib*/libc.so* || ls /usr/lib/libc.so*) | grep -v '\.a$$' | (sort -V -r || sort -t . -n -k 2)) 2>/dev/null | head -1) 5 | DEF_C_DYLIB!=((ldd `which ls` | grep -o '/.*/libc.so[^ ]*' || ls /lib*/libc.so* || ls /usr/lib/libc.so*) | grep -v '\.a$$' | (sort -V -r || sort -t . -n -k 2)) 2>/dev/null | head -1 6 | 7 | APP = dynload_plain 8 | OBJS = dynload_plain.o 9 | TEST_U8_SO = dynload_plain_ß_test # @@@ unsure if every platform handles ß, here (ANSI, UTF-8, ...) 10 | SRCTOP = ${VPATH}/../.. 11 | BLDTOP = ../.. 12 | CFLAGS += -I${SRCTOP}/dynload -DDEF_C_DYLIB=\"${DEF_C_DYLIB}\" 13 | LDLIBS_D += -L${BLDTOP}/dynload -ldynload_s 14 | 15 | # Works on: Darwin, NetBSD. 16 | # Linux: add '-ldl' 17 | .PHONY: all clean install 18 | all: ${APP} ${TEST_U8_SO} 19 | ${APP}: ${OBJS} 20 | ${CC} ${LDFLAGS} ${OBJS} ${LDLIBS_D} ${LDLIBS} -o ${APP} 21 | ${TEST_U8_SO}: 22 | echo 'int dynload_plain_testfunc() { return 5; }' | ${CC} -`[ \`uname\` = Darwin ] && echo dynamiclib || echo shared` -x c - -o ${TEST_U8_SO} 23 | clean: 24 | rm -f ${APP} ${OBJS} ${TEST_U8_SO} 25 | install: 26 | mkdir -p ${PREFIX}/test 27 | cp ${APP} ${TEST_U8_SO} ${PREFIX}/test 28 | 29 | -------------------------------------------------------------------------------- /test/ellipsis/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(ellipsis main.cc ellipsis.cc) 2 | target_link_libraries(ellipsis dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NARGS 3 28 | #define NTYPES 4 29 | -------------------------------------------------------------------------------- /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/call_x64.masm: -------------------------------------------------------------------------------- 1 | .CODE 2 | 3 | dcCall_x64_sysv PROC 4 | OPTION PROLOGUE:NONE, EPILOGUE:NONE 5 | push rbp 6 | push rbx 7 | mov rbp, rsp 8 | mov rbx, r8 9 | movsd xmm0, qword ptr[rcx ] 10 | movsd xmm1, qword ptr[rcx+ 8] 11 | movsd xmm2, qword ptr[rcx+16] 12 | movsd xmm3, qword ptr[rcx+24] 13 | movsd xmm4, qword ptr[rcx+32] 14 | movsd xmm5, qword ptr[rcx+40] 15 | movsd xmm6, qword ptr[rcx+48] 16 | movsd xmm7, qword ptr[rcx+56] 17 | sub rsp, rdi 18 | mov rax, rdi 19 | add rax, 8 20 | and rax, 15 21 | sub rsp, rax 22 | mov rcx, rdi 23 | mov rdi, rsp 24 | rep movsb 25 | mov rdi, qword ptr[rdx ] 26 | mov rsi, qword ptr[rdx+ 8] 27 | mov rcx, qword ptr[rdx+24] 28 | mov r8, qword ptr[rdx+32] 29 | mov r9, qword ptr[rdx+40] 30 | mov rdx, qword ptr[rdx+16] 31 | mov al, 8 32 | call rbx 33 | mov rsp, rbp 34 | pop rbx 35 | pop rbp 36 | ret 37 | dcCall_x64_sysv ENDP 38 | dcCall_x64_win64 PROC 39 | OPTION PROLOGUE:NONE, EPILOGUE:NONE 40 | push rbp 41 | push rsi 42 | push rdi 43 | mov rbp, rsp 44 | sub rsp, rcx 45 | mov rax, rcx 46 | add rax, 8 47 | and rax, 15 48 | sub rsp, rax 49 | mov rsi, rdx 50 | mov rdi, rsp 51 | mov rax, r9 52 | rep movsb 53 | mov rcx, qword ptr[r8 ] 54 | mov rdx, qword ptr[r8+ 8] 55 | mov r9, qword ptr[r8+24] 56 | mov r8, qword ptr[r8+16] 57 | movd xmm0, rcx 58 | movd xmm1, rdx 59 | movd xmm2, r8 60 | movd xmm3, r9 61 | push r9 62 | push r8 63 | push rdx 64 | push rcx 65 | call rax 66 | mov rsp, rbp 67 | pop rdi 68 | pop rsi 69 | pop rbp 70 | ret 71 | dcCall_x64_win64 ENDP 72 | END 73 | -------------------------------------------------------------------------------- /test/gen-masm/gen_masm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd `dirname $0` 3 | 4 | ../../portasm/gen-masm.sh call_x86 5 | ../../portasm/gen-masm.sh call_x64 6 | 7 | -------------------------------------------------------------------------------- /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-2018 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 | void arm() 27 | { 28 | } 29 | 30 | -------------------------------------------------------------------------------- /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-2018 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 | -------------------------------------------------------------------------------- /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-2018 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 | -------------------------------------------------------------------------------- /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-2018 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 27 | #include "../common/platformInit.h" 28 | 29 | void arm(); 30 | void thumb(); 31 | 32 | int main(int argc, char* argv[]) 33 | { 34 | arm(); 35 | thumb(); 36 | printf("arm: %d\n", (ptrdiff_t) &arm); 37 | printf("thumb: %d\n", (ptrdiff_t) &thumb); 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /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-2018 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 | void thumb() 27 | { 28 | } 29 | 30 | -------------------------------------------------------------------------------- /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-2018 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 | void call_f0() 27 | { 28 | n0(); 29 | } 30 | 31 | void call_f4() 32 | { 33 | n4(1,2,3,4); 34 | } 35 | 36 | void call_f8() 37 | { 38 | n8(1,2,3,4,5,6,7,8); 39 | } 40 | 41 | -------------------------------------------------------------------------------- /test/hacking-mips/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/common.h 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011-2018 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 | typedef int (*fp)(int,int,int,int,int,int); 27 | 28 | extern int f(int,int,int,int,int,int); 29 | extern int dispatch(fp,int,int,int,int,int,int); 30 | extern void ext(); 31 | extern void n0(); 32 | extern void n1(int a); 33 | extern void n2(int a, int b); 34 | extern void n4(int a, int b, int c, int d); 35 | extern void n8(int a, int b, int c, int d, int e, int f, int g, int h); 36 | extern void call_f0(); 37 | extern void call_f4(); 38 | extern void call_f8(); 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-2018 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 "common.h" 27 | int dispatch(fp funptr, int a0, int a1, int a2, int a3, int a4, int a5) 28 | { 29 | return funptr(a0,a1,a2,a3,a4,a5); 30 | /* 31 | int result1 = funptr(a0,a1,a2,a3,a4,a5); 32 | return result1 + a0 + a1 + a2; 33 | */ 34 | } 35 | -------------------------------------------------------------------------------- /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-2018 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 "common.h" 27 | int f(int a0, int a1, int a2, int a3, int a4, int a5) 28 | { 29 | return a0+a1+a2+a3+a4+a5; 30 | } 31 | 32 | -------------------------------------------------------------------------------- /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-2018 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 | void f0() 27 | { 28 | } 29 | 30 | -------------------------------------------------------------------------------- /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-2018 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 | typedef float f; 27 | f _ffffffffff(f f0, f f1, f f2, f f3, f f4, f f5, f f6, f f7, f f8, f f9) 28 | { 29 | return f0+f1+f2+f3+f4+f5+f6+f7+f8+f9; 30 | } 31 | 32 | -------------------------------------------------------------------------------- /test/hacking-mips/main.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/main.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011-2018 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 "common.h" 27 | #include 28 | 29 | #define v0 0 30 | #define v1 1 31 | #define v2 2 32 | #define v3 3 33 | #define v4 4 34 | #define v5 5 35 | 36 | void ext() 37 | { 38 | } 39 | 40 | int main(int argc, char* argv[]) 41 | { 42 | int result; 43 | call_f0(); 44 | call_f4(); 45 | call_f8(); 46 | n0(); 47 | n8(1,2,3,4,5,6,7,8); 48 | result = dispatch(&f,v0,v1,v2,v3,v4,v5); 49 | assert(result == v0+v1+v2+v3+v4+v5+v0+v1+v2 ); 50 | return 0; 51 | } 52 | 53 | -------------------------------------------------------------------------------- /test/hacking-mips/node.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Package: dyncall 4 | Library: test 5 | File: test/hacking-mips/node.c 6 | Description: 7 | License: 8 | 9 | Copyright (c) 2011-2018 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 "common.h" 27 | 28 | void l0() { } 29 | void l1(int a) { } 30 | void l2(int a, int b) { } 31 | void l4(int a, int b, int c, int d) { } 32 | void l8(int a, int b, int c, int d, int e, int f, int g, int h) { } 33 | 34 | void n0() { ext(); } 35 | void n1(int a) { ext(); } 36 | void n2(int a, int b) { ext(); } 37 | void n4(int a, int b, int c, int d) { ext(); } 38 | void n8(int a, int b, int c, int d, int e, int f, int g, int h) { ext(); } 39 | 40 | -------------------------------------------------------------------------------- /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-2018 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 | #define DEF_RETN(N) int ret##N(int a0, int a1, int a2, int a3, int a4, int a5) { return a##N; } 27 | 28 | DEF_RETN(0) 29 | DEF_RETN(1) 30 | DEF_RETN(2) 31 | DEF_RETN(3) 32 | DEF_RETN(4) 33 | DEF_RETN(5) 34 | 35 | -------------------------------------------------------------------------------- /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.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/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.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/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.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/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.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++/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/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(resolve_self main.c) 2 | target_link_libraries(resolve_self dynload_s) 3 | 4 | -------------------------------------------------------------------------------- /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 | LDFLAGS += -rdynamic 7 | LDLIBS_D = -L${BLDTOP}/dynload -ldynload_s 8 | .PHONY: all clean install 9 | all: ${APP} 10 | ${APP}: ${OBJS} 11 | ${CC} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LDLIBS_D} ${LDLIBS} -o ${APP} 12 | clean: 13 | rm -f ${APP} ${OBJS} 14 | install: 15 | mkdir -p ${PREFIX}/test 16 | cp ${APP} ${PREFIX}/test 17 | 18 | -------------------------------------------------------------------------------- /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 | Note that on some platforms, linker flags have to be used so symbol 16 | names are in the binary, at first hand (e.g. --export-dynamic). 17 | 18 | -------------------------------------------------------------------------------- /test/run-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | for i in $* ; 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-2018 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 | #define d double 27 | void d16( 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 | 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]); 36 | } 37 | -------------------------------------------------------------------------------- /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-2018 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 | #define d double 27 | void d20( 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 | ); 34 | void t(d*x) 35 | { 36 | 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]); 37 | } 38 | -------------------------------------------------------------------------------- /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-2018 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 | #define d double 27 | void d40( 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 | d,d,d,d 38 | ); 39 | void t() 40 | { 41 | d40( 42 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 43 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /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-2018 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 | #define f float 27 | void f16( 28 | f,f,f,f, 29 | f,f,f,f, 30 | f,f,f,f, 31 | f,f,f,f 32 | ); 33 | void t(f* x) 34 | { 35 | 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]); 36 | } 37 | -------------------------------------------------------------------------------- /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-2018 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 | #define f float 27 | void f20( 28 | f,f,f,f, 29 | f,f,f,f, 30 | f,f,f,f, 31 | f,f,f,f, 32 | f,f,f,f 33 | ); 34 | void t() 35 | { 36 | f20(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); 37 | } 38 | -------------------------------------------------------------------------------- /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-2018 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 | #define d float 27 | void f40( 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 | d,d,d,d 38 | ); 39 | void t() 40 | { 41 | f40( 42 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 43 | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /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-2018 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 | #define i int 27 | void i3(i,i,i); 28 | 29 | void t(i*x) 30 | { 31 | i3(x[1],x[2],x[3]); 32 | } 33 | -------------------------------------------------------------------------------- /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-2018 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 | #define i int 27 | void i7(i,i,i,i,i,i,i); 28 | void t() 29 | { 30 | i7(0,1,2,3,4,5,6); 31 | } 32 | -------------------------------------------------------------------------------- /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-2018 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 | #define X long long 27 | void f16( 28 | X,X,X,X, 29 | X,X,X,X, 30 | X,X,X,X, 31 | X,X,X,X 32 | ); 33 | void t(X* x) 34 | { 35 | 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]); 36 | } 37 | -------------------------------------------------------------------------------- /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-2018 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 "dynload.h" 27 | 28 | DLLib* mylib_load(char const *name) 29 | { 30 | return dlLoadLibrary(name); 31 | } 32 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NARGS 8 28 | #define NTYPES 2 29 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NCASES 16 28 | #define MAXARGS 14 29 | -------------------------------------------------------------------------------- /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/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-2018 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 DC_TEST_FUNCINFO_H 29 | #define DC_TEST_FUNCINFO_H 30 | 31 | #include "../../dyncall/dyncall_signature.h" 32 | 33 | struct funcinfo 34 | { 35 | DCpointer funcptr; 36 | const DCsigchar* sig; 37 | }; 38 | 39 | extern funcinfo gFuncInfos[]; 40 | 41 | #endif /* DC_TEST_FUNCINFO_H */ 42 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NCASES 97 28 | #define MAXARGS 19 29 | -------------------------------------------------------------------------------- /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-2018 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 DC_TEST_FUNCINFO_H 29 | #define DC_TEST_FUNCINFO_H 30 | 31 | #include "../../dyncall/dyncall_signature.h" 32 | 33 | struct funcinfo 34 | { 35 | DCpointer funcptr; 36 | const DCsigchar* sig; 37 | }; 38 | 39 | extern funcinfo gFuncInfos[]; 40 | 41 | #endif /* DC_TEST_FUNCINFO_H */ 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NCASES 94 28 | #define MAXARGS 19 29 | -------------------------------------------------------------------------------- /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-2018 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 DC_TEST_FUNCINFO_H 29 | #define DC_TEST_FUNCINFO_H 30 | 31 | #include "../../dyncall/dyncall_signature.h" 32 | 33 | struct funcinfo 34 | { 35 | DCpointer funcptr; 36 | const DCsigchar* sig; 37 | }; 38 | 39 | extern funcinfo gFuncInfos[]; 40 | 41 | #endif /* DC_TEST_FUNCINFO_H */ 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /test/suite3/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(suite3 case.cc main.cc) 2 | target_link_libraries(suite3 dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NARGS 4 28 | #define NTYPES 4 29 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NARGS 10 28 | #define NTYPES 2 29 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NARGS 3 28 | #define NTYPES 6 29 | -------------------------------------------------------------------------------- /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.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-2018 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 | /* auto generated by mkcase (on stderr) */ 27 | #define NARGS 3 28 | #define NTYPES 6 29 | -------------------------------------------------------------------------------- /test/syscall/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(syscall syscall.c) 2 | target_link_libraries(syscall dyncall_s) 3 | 4 | -------------------------------------------------------------------------------- /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/thunk/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(test_thunk test_thunk.c) 2 | target_link_libraries(test_thunk dyncallback_s) 3 | 4 | -------------------------------------------------------------------------------- /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/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 | --------------------------------------------------------------------------------