rbdc 0.9.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dyncall/BUGS +1 -1
- data/dyncall/CMakeLists.txt +19 -7
- data/dyncall/ChangeLog +61 -20
- data/dyncall/LICENSE +1 -1
- data/dyncall/Makefile.generic +2 -0
- data/dyncall/ToDo +97 -29
- data/dyncall/autovar/README.txt +1 -0
- data/dyncall/autovar/autovar_ABI.h +4 -2
- data/dyncall/autovar/autovar_ARCH.h +9 -5
- data/dyncall/autovar/autovar_CC.h +3 -1
- data/dyncall/autovar/autovar_OS.h +2 -2
- data/dyncall/autovar/autovar_OSFAMILY.h +1 -1
- data/dyncall/configure +94 -38
- data/dyncall/dyncall/dyncall.3 +8 -4
- data/dyncall/dyncall/dyncall.h +1 -1
- data/dyncall/dyncall/dyncall_alloc.h +1 -1
- data/dyncall/dyncall/dyncall_api.c +3 -1
- data/dyncall/dyncall/dyncall_call.S +13 -5
- data/dyncall/dyncall/dyncall_call_arm32_arm.S +1 -2
- data/dyncall/dyncall/dyncall_call_arm32_arm.h +1 -1
- data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.S +24 -26
- data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.h +1 -1
- data/dyncall/dyncall/dyncall_call_arm32_thumb.h +1 -1
- data/dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S +1 -1
- data/dyncall/dyncall/dyncall_call_arm32_thumb_gas.s +3 -7
- data/dyncall/dyncall/dyncall_call_arm64.S +2 -2
- data/dyncall/dyncall/dyncall_call_arm64.h +2 -2
- data/dyncall/dyncall/dyncall_call_mips.h +1 -1
- data/dyncall/dyncall/dyncall_call_mips_eabi.h +1 -1
- data/dyncall/dyncall/dyncall_call_mips_eabi_gas.s +16 -16
- data/dyncall/dyncall/dyncall_call_mips_gas.S +2 -2
- data/dyncall/dyncall/dyncall_call_mips_n32.h +5 -4
- data/dyncall/dyncall/dyncall_call_mips_n32_gas.s +4 -4
- data/dyncall/dyncall/dyncall_call_mips_n64.h +3 -3
- data/dyncall/dyncall/dyncall_call_mips_n64_gas.s +2 -2
- data/dyncall/dyncall/dyncall_call_mips_o32.h +4 -3
- data/dyncall/dyncall/dyncall_call_mips_o32_gas.s +1 -3
- data/dyncall/dyncall/dyncall_call_ppc32.S +1 -1
- data/dyncall/dyncall/dyncall_call_ppc32.h +1 -1
- data/dyncall/dyncall/dyncall_call_sparc.h +1 -1
- data/dyncall/dyncall/{dyncall_call_sparc.S → dyncall_call_sparc.s} +39 -44
- data/dyncall/dyncall/dyncall_call_sparc64.h +5 -5
- data/dyncall/dyncall/dyncall_call_sparc64.s +177 -0
- data/dyncall/dyncall/dyncall_call_x64.S +83 -86
- data/dyncall/dyncall/dyncall_call_x64.h +1 -1
- data/dyncall/dyncall/dyncall_call_x86.S +9 -9
- data/dyncall/dyncall/dyncall_call_x86.h +1 -1
- data/dyncall/dyncall/dyncall_call_x86_nasm.asm +5 -5
- data/dyncall/dyncall/dyncall_callf.c +18 -18
- data/dyncall/dyncall/dyncall_callf.h +1 -1
- data/dyncall/dyncall/dyncall_callvm.c +3 -3
- data/dyncall/dyncall/dyncall_callvm.h +1 -1
- data/dyncall/dyncall/dyncall_callvm_arm32_arm.c +25 -40
- data/dyncall/dyncall/dyncall_callvm_arm32_arm.h +1 -5
- data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c +25 -33
- data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.h +1 -5
- data/dyncall/dyncall/dyncall_callvm_arm32_thumb.c +24 -36
- data/dyncall/dyncall/dyncall_callvm_arm32_thumb.h +1 -5
- data/dyncall/dyncall/dyncall_callvm_arm64.c +23 -27
- data/dyncall/dyncall/dyncall_callvm_arm64.h +2 -6
- data/dyncall/dyncall/dyncall_callvm_arm64_apple.c +23 -30
- data/dyncall/dyncall/dyncall_callvm_base.c +1 -1
- data/dyncall/dyncall/dyncall_callvm_mips.c +1 -1
- data/dyncall/dyncall/dyncall_callvm_mips.h +1 -1
- data/dyncall/dyncall/dyncall_callvm_mips_eabi.c +30 -27
- data/dyncall/dyncall/dyncall_callvm_mips_eabi.h +1 -5
- data/dyncall/dyncall/dyncall_callvm_mips_n32.c +24 -30
- data/dyncall/dyncall/{dyncall_call_sparc_v9.h → dyncall_callvm_mips_n32.h} +18 -8
- data/dyncall/dyncall/dyncall_callvm_mips_n64.c +23 -30
- data/dyncall/dyncall/dyncall_callvm_mips_n64.h +4 -6
- data/dyncall/dyncall/dyncall_callvm_mips_o32.c +31 -29
- data/dyncall/dyncall/dyncall_callvm_mips_o32.h +1 -3
- data/dyncall/dyncall/dyncall_callvm_ppc32.c +22 -20
- data/dyncall/dyncall/dyncall_callvm_ppc32.h +1 -3
- data/dyncall/dyncall/dyncall_callvm_ppc64.c +54 -15
- data/dyncall/dyncall/dyncall_callvm_ppc64.h +0 -2
- data/dyncall/dyncall/dyncall_callvm_sparc.c +34 -26
- data/dyncall/dyncall/dyncall_callvm_sparc.h +1 -3
- data/dyncall/dyncall/dyncall_callvm_sparc64.c +94 -150
- data/dyncall/dyncall/dyncall_callvm_sparc64.h +11 -17
- data/dyncall/dyncall/dyncall_callvm_x64.c +37 -36
- data/dyncall/dyncall/dyncall_callvm_x64.h +1 -4
- data/dyncall/dyncall/dyncall_callvm_x86.c +22 -63
- data/dyncall/dyncall/dyncall_callvm_x86.h +1 -17
- data/dyncall/dyncall/dyncall_config.h +1 -1
- data/dyncall/dyncall/dyncall_macros.h +28 -19
- data/dyncall/dyncall/dyncall_signature.h +1 -1
- data/dyncall/dyncall/dyncall_types.h +17 -18
- data/dyncall/dyncall/dyncall_utils.h +1 -1
- data/dyncall/dyncall/dyncall_value.h +28 -21
- data/dyncall/dyncall/dyncall_vector.c +1 -1
- data/dyncall/dyncall/dyncall_vector.h +1 -1
- data/dyncall/dyncall/gen-masm.sh +2 -2
- data/dyncall/dyncallback/CMakeLists.txt +1 -2
- data/dyncall/dyncallback/Makefile.generic +1 -1
- data/dyncall/dyncallback/dyncall_alloc_wx.c +1 -1
- data/dyncall/dyncallback/dyncall_alloc_wx.h +4 -3
- data/dyncall/dyncallback/dyncall_alloc_wx_malloc.c +8 -2
- data/dyncall/dyncallback/dyncall_alloc_wx_mmap.c +67 -4
- data/dyncall/dyncallback/dyncall_alloc_wx_win32.c +7 -2
- data/dyncall/dyncallback/dyncall_args.c +19 -15
- data/dyncall/dyncallback/dyncall_args.h +1 -1
- data/dyncall/dyncallback/{dyncall_args_arm32_arm.c → dyncall_args_arm32.c} +4 -4
- data/dyncall/dyncallback/{dyncall_args_arm32_arm.h → dyncall_args_arm32.h} +6 -6
- data/dyncall/dyncallback/dyncall_args_arm64.c +2 -2
- data/dyncall/dyncallback/dyncall_args_arm64_apple.c +2 -2
- data/dyncall/dyncallback/dyncall_args_mips.c +26 -21
- data/dyncall/dyncallback/dyncall_args_mips.h +18 -6
- data/dyncall/dyncallback/dyncall_args_mips64.c +81 -0
- data/dyncall/dyncallback/dyncall_args_mips_o32.c +104 -0
- data/dyncall/dyncallback/dyncall_args_ppc32.c +2 -2
- data/dyncall/dyncallback/dyncall_args_ppc32.h +1 -1
- data/dyncall/dyncallback/dyncall_args_ppc32_sysv.c +1 -1
- data/dyncall/dyncallback/dyncall_args_ppc64.c +24 -3
- data/dyncall/dyncallback/dyncall_args_sparc32.c +41 -15
- data/dyncall/dyncallback/dyncall_args_sparc32.h +2 -2
- data/dyncall/dyncallback/dyncall_args_sparc64.c +28 -15
- data/dyncall/dyncallback/dyncall_args_sparc64.h +7 -3
- data/dyncall/dyncallback/dyncall_args_x64.c +1 -1
- data/dyncall/dyncallback/dyncall_args_x64.h +1 -1
- data/dyncall/dyncallback/dyncall_args_x86.c +1 -1
- data/dyncall/dyncallback/dyncall_args_x86.h +1 -1
- data/dyncall/dyncallback/dyncall_callback.c +10 -12
- data/dyncall/dyncallback/dyncall_callback.h +2 -4
- data/dyncall/dyncallback/dyncall_callback_arch.S +12 -2
- data/dyncall/dyncallback/{dyncall_callback_arm32_arm.c → dyncall_callback_arm32.c} +25 -10
- data/dyncall/dyncallback/dyncall_callback_arm32_arm_apple.s +7 -7
- data/dyncall/dyncallback/dyncall_callback_arm32_arm_gas.S +9 -9
- data/dyncall/dyncallback/dyncall_callback_arm32_thumb_apple.S +1 -1
- data/dyncall/dyncallback/dyncall_callback_arm32_thumb_gas.S +1 -1
- data/dyncall/dyncallback/dyncall_callback_arm64.S +2 -2
- data/dyncall/dyncallback/dyncall_callback_arm64.c +20 -14
- data/dyncall/dyncallback/dyncall_callback_mips.c +26 -9
- data/dyncall/dyncallback/dyncall_callback_mips_eabi_gas.s +99 -0
- data/dyncall/dyncallback/{dyncall_args_arm32_thumb.h → dyncall_callback_mips_gas.S} +14 -9
- data/dyncall/dyncallback/{dyncall_callback_arm32_thumb.c → dyncall_callback_mips_n32_gas.s} +12 -7
- data/dyncall/dyncallback/dyncall_callback_mips_n64_gas.s +98 -0
- data/dyncall/dyncallback/dyncall_callback_mips_o32_gas.s +100 -0
- data/dyncall/dyncallback/dyncall_callback_ppc32.S +54 -54
- data/dyncall/dyncallback/dyncall_callback_ppc32.c +23 -5
- data/dyncall/dyncallback/dyncall_callback_ppc32_apple.s +92 -117
- data/dyncall/dyncallback/dyncall_callback_ppc64.S +2 -2
- data/dyncall/dyncallback/dyncall_callback_ppc64.c +23 -5
- data/dyncall/dyncallback/dyncall_callback_sparc32.c +25 -7
- data/dyncall/dyncallback/dyncall_callback_sparc32.s +55 -4
- data/dyncall/dyncallback/dyncall_callback_sparc64.c +25 -7
- data/dyncall/dyncallback/dyncall_callback_sparc64.s +89 -5
- data/dyncall/dyncallback/dyncall_callback_x64.S +8 -8
- data/dyncall/dyncallback/dyncall_callback_x64.c +19 -6
- data/dyncall/dyncallback/dyncall_callback_x86.S +29 -25
- data/dyncall/dyncallback/dyncall_callback_x86.c +24 -11
- data/dyncall/dyncallback/dyncall_thunk.c +6 -6
- data/dyncall/dyncallback/dyncall_thunk.h +9 -7
- data/dyncall/dyncallback/{dyncall_thunk_arm32_arm.c → dyncall_thunk_arm32.c} +5 -3
- data/dyncall/dyncallback/{dyncall_thunk_arm32_arm.h → dyncall_thunk_arm32.h} +7 -7
- data/dyncall/dyncallback/dyncall_thunk_arm64.c +2 -2
- data/dyncall/dyncallback/dyncall_thunk_arm64.h +8 -13
- data/dyncall/dyncallback/dyncall_thunk_mips.c +16 -20
- data/dyncall/dyncallback/dyncall_thunk_mips.h +4 -2
- data/dyncall/dyncallback/dyncall_thunk_mips64.c +103 -0
- data/dyncall/dyncallback/{dyncall_callback_arm32_thumb.h → dyncall_thunk_mips64.h} +15 -8
- data/dyncall/dyncallback/dyncall_thunk_ppc32.c +4 -4
- data/dyncall/dyncallback/dyncall_thunk_ppc32.h +1 -1
- data/dyncall/dyncallback/dyncall_thunk_ppc32_sysv.c +9 -9
- data/dyncall/dyncallback/dyncall_thunk_ppc64.c +2 -2
- data/dyncall/dyncallback/dyncall_thunk_sparc32.c +19 -2
- data/dyncall/dyncallback/dyncall_thunk_sparc32.h +5 -4
- data/dyncall/dyncallback/dyncall_thunk_sparc64.c +42 -2
- data/dyncall/dyncallback/dyncall_thunk_sparc64.h +5 -5
- data/dyncall/dyncallback/dyncall_thunk_x64.c +1 -1
- data/dyncall/dyncallback/dyncall_thunk_x64.h +2 -2
- data/dyncall/dyncallback/dyncall_thunk_x86.c +1 -1
- data/dyncall/dyncallback/dyncall_thunk_x86.h +2 -2
- data/dyncall/dyncallback/dyncallback.3 +16 -11
- data/dyncall/dynload/dynload.3 +63 -8
- data/dyncall/dynload/dynload.c +2 -8
- data/dyncall/dynload/dynload.h +9 -5
- data/dyncall/dynload/dynload_alloc.h +1 -1
- data/dyncall/dynload/dynload_syms.c +1 -3
- data/dyncall/dynload/dynload_syms_elf.c +19 -11
- data/dyncall/dynload/dynload_syms_mach-o.c +151 -75
- data/dyncall/dynload/dynload_syms_pe.c +24 -24
- data/dyncall/dynload/dynload_unix.c +156 -13
- data/dyncall/dynload/dynload_windows.c +15 -11
- data/dyncall/portasm/portasm-arm.S +1 -1
- data/dyncall/portasm/portasm-ppc.S +1 -1
- data/dyncall/portasm/{portasm-x64-att.S → portasm-x64.S} +7 -4
- data/dyncall/portasm/portasm-x86.S +4 -2
- data/{dyncall-bindings/ruby/rbdc/extconf.rb → extconf.rb} +4 -4
- data/{dyncall-bindings/ruby/rbdc/rbdc.c → rbdc.c} +5 -5
- metadata +24 -48
- data/dyncall/Makefile.M +0 -15
- data/dyncall/buildsys/dynmake/Makefile.base.M +0 -82
- data/dyncall/buildsys/dynmake/dynmake.bat +0 -2
- data/dyncall/buildsys/dynmake/dynmake.sh +0 -4
- data/dyncall/dynMakefile +0 -4
- data/dyncall/dyncall/Makefile.M +0 -10
- data/dyncall/dyncall/TODO +0 -9
- data/dyncall/dyncall/dynMakefile +0 -4
- data/dyncall/dyncall/dyncall_call_sparc64.S +0 -362
- data/dyncall/dyncall/dyncall_call_sparc_v9.S +0 -222
- data/dyncall/dyncall/dyncall_call_x64-att.S +0 -147
- data/dyncall/dyncall/dyncall_callvm_sparc_v9.c +0 -182
- data/dyncall/dyncall/dyncall_callvm_sparc_v9.h +0 -46
- data/dyncall/dyncallback/Makefile.M +0 -10
- data/dyncall/dyncallback/README.txt +0 -9
- data/dyncall/dyncallback/TODO +0 -4
- data/dyncall/dyncallback/dynMakefile +0 -4
- data/dyncall/dyncallback/dyncall_args_arm32_thumb.c +0 -30
- data/dyncall/dyncallback/dyncall_callback_arm32_arm.h +0 -46
- data/dyncall/dyncallback/dyncall_callback_mips.h +0 -43
- data/dyncall/dyncallback/dyncall_callback_ppc32.h +0 -43
- data/dyncall/dyncallback/dyncall_callback_ppc64.h +0 -56
- data/dyncall/dyncallback/dyncall_callback_sparc32.h +0 -44
- data/dyncall/dyncallback/dyncall_callback_x64.h +0 -45
- data/dyncall/dyncallback/dyncall_callback_x86.h +0 -50
- data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.c +0 -30
- data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.h +0 -36
- data/dyncall/dynload/Makefile.M +0 -10
- data/dyncall/dynload/TODO +0 -20
- data/dyncall/dynload/dynMakefile +0 -4
- data/dyncall/dynload/dynload_darwin.c +0 -90
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c23d651ae6024799dc93d27784b76932a2442a
|
4
|
+
data.tar.gz: 77aea3d5b61b0b1957a8e6c4fee0c0e3815afe77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc287843aed36b3750e69451c4612ac4fb6460d9c200592960b04ac4ec23240e162bd28d155b94aa3c17b3ebda874ac6689ab0f7f136a5fd239519fbfeb37007
|
7
|
+
data.tar.gz: 73b0f5ddbaf53b12882499d67ec86c7f3a28ec5987978d5e49c5afd8b3229307994c1883ec3c56b25b46b77fc2e3c2dbb9d43239ee76773e460a9a59de82c416
|
data/dyncall/BUGS
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
- add support for SELinux
|
1
|
+
- add support for SELinux
|
2
2
|
- dyncall sparc v7/v8: -xO3 on SunPro segfaults in tests.
|
3
3
|
- dyncall sparc64 port: works fine on Debian 6, but has issues on OpenBSD and Solaris regarding passing of float and double values.
|
4
4
|
- this BUGS file should be merged with ToDo or vice-versa
|
data/dyncall/CMakeLists.txt
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
cmake_minimum_required (VERSION 2.6)
|
22
|
-
project(DynCall)
|
22
|
+
project(DynCall C)
|
23
23
|
|
24
24
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "dyncall enables dynamic invocation of machine-level function calls")
|
25
25
|
set(CPACK_PACKAGE_VENDOR "dyncall project")
|
@@ -35,6 +35,14 @@ include(CPack)
|
|
35
35
|
# currently we have no use for this, but maybe later..
|
36
36
|
#set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/buildsys/cmake/Modules" "${CMAKE_MODULE_PATH}")
|
37
37
|
|
38
|
+
option(LANG_CXX "Enable and build C++ tests" ON)
|
39
|
+
|
40
|
+
if(LANG_CXX)
|
41
|
+
enable_language(CXX)
|
42
|
+
endif()
|
43
|
+
|
44
|
+
include(CheckCCompilerFlag)
|
45
|
+
check_c_compiler_flag("-fPIC -Werror" COMPILER_HAS_FPIC)
|
38
46
|
|
39
47
|
if(MSVC)
|
40
48
|
enable_language(ASM_MASM)
|
@@ -47,10 +55,12 @@ if(MSVC)
|
|
47
55
|
#set(CMAKE_ASM_MASM_SOURCE_FILE_EXTENSIONS asm)
|
48
56
|
#set(CMAKE_ASM_MASM_COMPILE_OBJECT "<CMAKE_ASM_MASM_COMPILER> <FLAGS> /c /Fo <OBJECT> <SOURCE>")
|
49
57
|
elseif(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Intel")
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
58
|
+
if(COMPILER_HAS_FPIC)
|
59
|
+
# when used in shared libraries, -fPIC is required by several architectures
|
60
|
+
# and platforms (observed on AMD64, Solaris/Sparc).
|
61
|
+
# we enable it per default here.
|
62
|
+
add_definitions("-fPIC")
|
63
|
+
endif()
|
54
64
|
# enable gcc as front-end to assembler for .S files
|
55
65
|
set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
|
56
66
|
set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
|
@@ -61,8 +71,10 @@ elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "SunPro")
|
|
61
71
|
set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
|
62
72
|
enable_language(ASM)
|
63
73
|
else()
|
64
|
-
if (
|
65
|
-
|
74
|
+
if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
75
|
+
if(COMPILER_HAS_FPIC)
|
76
|
+
add_definitions("-fPIC")
|
77
|
+
endif()
|
66
78
|
# enable gcc as front-end to assembler for .S files
|
67
79
|
set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
|
68
80
|
set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
|
data/dyncall/ChangeLog
CHANGED
@@ -1,21 +1,62 @@
|
|
1
1
|
This file lists bigger/noteworthy changes, only...
|
2
2
|
|
3
|
-
Version 1.0 (
|
4
|
-
|
3
|
+
Version 1.0 (2018/04/23)
|
4
|
+
dyncall:
|
5
|
+
o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
|
6
|
+
o fixed potential buffer overrun on ARM64
|
7
|
+
o error code handling (dcGetError) changes, flag is now cleared (work still underway)
|
8
|
+
o MIPS n64 ellipsis call fixes
|
9
|
+
o ARM32 armhf ellipsis call fixes
|
10
|
+
o fixed ARM32-THUMB stack alignment issues (found on Cortex-m0, thanks Darren Whobrey!)
|
11
|
+
o better C++ compiler support (for pointer conversions)
|
12
|
+
dyncallback:
|
13
|
+
o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
|
14
|
+
o MIPS o32 (big- and little-endian), EABI (32 bit, little-endian) and n64 (big-endian) support
|
15
|
+
o SPARC32 (v7/v8) support
|
16
|
+
o SPARC64 (v9) support
|
17
|
+
o PPC32 fixes for (old) Darwin/OS X systems
|
18
|
+
o POSIX compliance: fallback for wx alloc on systems that don't have mmap()'s MAP_ANON
|
19
|
+
o allocated space used for thunk now always W^X (req. for e.g. OpenBSD >= 6.0)
|
20
|
+
dynload:
|
21
|
+
o major reliability/stability fixes for Mach-O dlSyms* functions to (thanks Stéphane Mons for help):
|
22
|
+
better handle loading dylibs by symlink, relative path, random casing, etc.
|
23
|
+
fixes to symbol name lookups that used wrong offsets before
|
24
|
+
64-bit platform fixes (was broken on x64 and never supported on others)
|
25
|
+
o allowing Mach-O dlSyms* lib to be used standalone (consistent with ELF and PE impls now)
|
26
|
+
o simplifications of implemention on Darwin, sharing parts with *nix implementation
|
27
|
+
o potentially breaking change on macos/Darwin platforms: all functions now consistently accept or
|
28
|
+
return symbol names as they would appear in C code, instead of the raw ones in object files
|
29
|
+
o added new function dlGetLibraryPath, allowing lookups of path to library via handle
|
30
|
+
general:
|
31
|
+
o assembly code now built by explicitily asking for non-execstack, for safer/easier integration
|
32
|
+
into other projects/builds, where needed; needed b/c of questionable default behaviours of some
|
33
|
+
toolchains (thanks Thorsten Behrens for report and analysis)
|
34
|
+
doc:
|
35
|
+
o working html doc generation from TEX sources
|
36
|
+
o SPARC32 (v7/v8) calling convention description
|
37
|
+
o SPARC64 (v9) calling convention description
|
38
|
+
bindings:
|
39
|
+
o better documentation, removed relative path dependencies, general cleanup
|
40
|
+
o python: updated to latest signature format (was still on 0.1)
|
41
|
+
o java: rewritten (old version was never complete, anyways)
|
42
|
+
tests:
|
43
|
+
o added new dynload_plain test covering basic use of all dynload functions
|
44
|
+
buildsys:
|
45
|
+
o cmake: made to work on systems without C++ compiler (thanks Franklin Mathieu)
|
5
46
|
|
6
47
|
Version 0.9 (2015/12/31)
|
7
48
|
dyncall:
|
8
49
|
o ARM64 support (AAPCS64 on Linux & Apple's derived version on iOS)
|
9
50
|
o armhf calling convention support for ARM32
|
10
|
-
o PPC64 support, including syscalls (thanks Masanori!)
|
51
|
+
o PPC64 support, including syscalls (thanks Masanori Mitsugi!)
|
11
52
|
o introduced dcArgF and dcVArgF for flexible/convenient argument binding (works like dcCallF/dcVCallF but without the function call)
|
12
53
|
o using -fPIC by default for FreeBSD
|
13
54
|
o PPC32 linux syscall support
|
14
|
-
o fixed return value errors for
|
55
|
+
o fixed return value errors for ARM32 on some platforms (e.g. freebsd/arm32, nintendo ds); arm & thumb mode
|
15
56
|
dyncallback:
|
16
57
|
o ARM64 support (AAPCS64 on Linux, Apple's derived version on iOS)
|
17
58
|
o armhf calling convention support for ARM32
|
18
|
-
o PPC64 support (thanks Masanori!)
|
59
|
+
o PPC64 support (thanks Masanori Mitsugi!)
|
19
60
|
o PPC32 System V support (Linux)
|
20
61
|
o fix for PPC32 Darwin/OS X
|
21
62
|
o more intuitive specification of callback return type
|
@@ -37,6 +78,7 @@ bindings:
|
|
37
78
|
o erldc: Erlang binding (thanks Erik!)
|
38
79
|
infrastructure:
|
39
80
|
o moved to hg
|
81
|
+
o moved bindings to own repository
|
40
82
|
|
41
83
|
Version 0.8 (2014/03/24)
|
42
84
|
buildsys:
|
@@ -47,9 +89,9 @@ buildsys:
|
|
47
89
|
o based more sources on portasm generation
|
48
90
|
dyncall:
|
49
91
|
o fix for ARMv7 Thumb-2 code (tested on iPhone 4 CDMA / iOS 6.0.1)
|
50
|
-
o bugfixes for -O2 builds for SPARC-v9 and SPARC-v7
|
92
|
+
o bugfixes for -O2 builds for SPARC-v9 and SPARC-v7
|
51
93
|
o new optimized call kernel for SPARC-v9 without conditionals
|
52
|
-
o bigger refactoring and optimization of
|
94
|
+
o bigger refactoring and optimization of MIPS o32
|
53
95
|
o x64 optimizations
|
54
96
|
dyncallback:
|
55
97
|
o added callback support for plan9
|
@@ -70,14 +112,14 @@ bindings:
|
|
70
112
|
|
71
113
|
Version 0.7 (2012/01/02)
|
72
114
|
architecture:
|
73
|
-
o added subproject: portasm - portable (GNU AS,+Apple and MASM) assembly framework
|
115
|
+
o added subproject: portasm - portable (GNU AS,+Apple and MASM) assembly framework
|
74
116
|
o added subproject: autovar - predefined macro framework (was dyncall_macros.h)
|
75
|
-
o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
|
76
|
-
o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
|
77
117
|
o added support for Solaris and SunPro compiler for i386, x86_64, sparc and sparc64
|
78
118
|
o improved auto-detection via preprocessor defines
|
79
119
|
dyncall updates:
|
80
120
|
o uses portasm (GNU,Apple,Microsoft) common sources for x86,x64,ppc32,arm32_arm
|
121
|
+
o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
|
122
|
+
o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
|
81
123
|
o bug fixes for x64/win64 calling convention
|
82
124
|
o added support for mingw32-w64 on x64
|
83
125
|
o improved cdecl x86 calling convention: stack always 16 byte aligned
|
@@ -104,8 +146,8 @@ dynload updates:
|
|
104
146
|
o no dependencies to libdyncall sources.
|
105
147
|
buildsys additions:
|
106
148
|
o added zero-config (BSD,GNU,SUN) make files (Makefile.embedded)
|
107
|
-
o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic
|
108
|
-
o added bootstrap lua script (download/build)
|
149
|
+
o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic)
|
150
|
+
o added bootstrap lua script (download/build)
|
109
151
|
o Nmakefile: more tests included (resolve_self)
|
110
152
|
o improved cross-compilation for iOS (upgrade to 4.3 sdk)
|
111
153
|
o darwin 8.0 support
|
@@ -127,13 +169,13 @@ buildsys/cmake updates:
|
|
127
169
|
o added experimental 'dynMake' portable make-based build-system (not stable, yet)
|
128
170
|
documentation updates:
|
129
171
|
o added dyncallback documentation
|
130
|
-
o updated dyncall documentation
|
172
|
+
o updated dyncall documentation
|
131
173
|
o minor updates
|
132
174
|
tests:
|
133
175
|
o added flexible test suite for calls (call_suite) based on Lua and C
|
134
176
|
o added syscall test
|
135
177
|
o updates to resolve-self test (adding additional link flags to export symbols)
|
136
|
-
o improved dir name portability (renamed plain_c++ -> plain_cxx)
|
178
|
+
o improved dir name portability (renamed plain_c++ -> plain_cxx)
|
137
179
|
o renamed *.cpp -> *.cc files (OpenBSD/Sun make has no implicit rules for cpp)
|
138
180
|
|
139
181
|
Version 0.6 (2010/09/25)
|
@@ -141,17 +183,17 @@ building:
|
|
141
183
|
o new build systems: CMake and Plan9's mk
|
142
184
|
o buildsys/gmake tool chain update: pcc and iphone sdk
|
143
185
|
o x64 bugfix: added "-fPIC" even for static libs
|
144
|
-
dynload updates:
|
186
|
+
dynload updates:
|
145
187
|
o enum symbols update: Mach-O and Win64 (thanks Olivier)
|
146
188
|
o numerous convenience changes to dynload interface (thanks Olivier)
|
147
189
|
o added support for resolving application images itself
|
148
190
|
dyncall updates:
|
149
191
|
o new platform support: arm/iphone (armv6), x86/Plan9
|
150
|
-
o new
|
192
|
+
o new MIPS calling conventions: o32, n64 (both endian models)
|
151
193
|
o cleanup: unexported functions in MASM files, b/c export not needed (thanks Olivier)
|
152
194
|
o interface update: added error reporting facility 'dcGetError'
|
153
195
|
o bugfix for ppc32/sysv: ellipsis calls were broken
|
154
|
-
o interface update: added new abstract mode for ellipsis calls (DC_CALL_C_ELLIPSIS)
|
196
|
+
o interface update: added new abstract mode for ellipsis calls (DC_CALL_C_ELLIPSIS)
|
155
197
|
docs:
|
156
198
|
o comprehensive update
|
157
199
|
tests:
|
@@ -174,14 +216,13 @@ Version 0.4 (2009/07/06)
|
|
174
216
|
o fixed nmake buildfiles and configure.bat (were out of date and wrong)
|
175
217
|
o test suite clean up (GNUmake, BSDmake):
|
176
218
|
target "config" modified, phony without dependencies to other builds
|
177
|
-
o bugfix: GNU fastcall calling convention for float and double arguments
|
178
|
-
was wrong. no skip of register.
|
219
|
+
o bugfix: GNU fastcall calling convention for float and double arguments was wrong (no skip of register)
|
179
220
|
o update: x86win32* suite tests are built on cygwin now, added total result output
|
180
221
|
o signature types change:
|
181
222
|
C Strings: 'S' -> 'Z'
|
182
223
|
long: 'l' -> 'j'
|
183
224
|
long long: 'L' -> 'l'
|
184
|
-
added unsigned integer type signature characters: upper case encoding
|
225
|
+
added unsigned integer type signature characters: upper case encoding
|
185
226
|
o added: callbacks component (support only for some platforms ATM)
|
186
227
|
o added: test cases for alloc_wx, thunk
|
187
228
|
o updated Documentation
|
data/dyncall/LICENSE
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
If not stated otherwise inside a file, all files here are distributed in
|
2
2
|
terms of:
|
3
3
|
|
4
|
-
Copyright (c) 2007-
|
4
|
+
Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
|
5
5
|
Tassilo Philipp <tphilipp@potion-studios.com>
|
6
6
|
|
7
7
|
Permission to use, copy, modify, and distribute this software for any
|
data/dyncall/Makefile.generic
CHANGED
data/dyncall/ToDo
CHANGED
@@ -1,24 +1,50 @@
|
|
1
|
-
1.
|
1
|
+
1.1:
|
2
2
|
----
|
3
|
+
- ./configure on macOS does not pass CFLAGS etc.. to Makefile.config
|
4
|
+
- support platforms without shared libraries so they can be built by just typing `./configure;make` (e.g. minix < 3.2.1)
|
5
|
+
* also make sure minix with shared library support builds and works in general (>= 3.2.1) as well as ELF on Minix (>= 3.2.0) to begin with (as that's the base, and we only test on 3.1.8 so far)
|
6
|
+
- dyncall supports calls to functions where prototype exists (with and without varargs); however not when no
|
7
|
+
prototype exist (e.g. just calling some pointer), without any declaration... even possible in C, as one has
|
8
|
+
to cast to the function type? need to support?
|
9
|
+
|
10
|
+
|
11
|
+
- dyncallback's "stack_cleanup" can be removed from non x86 impls... test if they still work
|
12
|
+
- target a minimum c version, for use with -pedantic, etc.? Right now we use e.g. extensions
|
13
|
+
for anon structs, etc.
|
14
|
+
- the CallVM-free functions are per VTable, however the latter can be changed out
|
15
|
+
at runtime... which basically changes potentially the deallocator...
|
16
|
+
same goes for functions setting the mode. think about how to make this safer - currently
|
17
|
+
we have a higher flexibility and we need to potentially clean up from the mode we are in,
|
18
|
+
however, this is open to misuse
|
19
|
+
- check all vararg calling conv implementations if they promote correctly
|
20
|
+
(e.g. float to double); we used to not care as it was the user's job to
|
21
|
+
think of that, but we allow users to use ArgFloat, etc. on "..." now,
|
22
|
+
taking care of the promotion; so it should be consistent all across the
|
23
|
+
implementations -> also write testcode specifically for that
|
3
24
|
- autovar was never really pushed all the way through and still plays second
|
4
25
|
fiddle to dyncall_macros.h, clean this all up, eventually (Tassilo: for now, I
|
5
26
|
removed out of sync files to avoid confusion; but still probably duped code)
|
6
|
-
-
|
7
|
-
|
27
|
+
- add portable "make install"
|
28
|
+
* make install should also install manpages
|
8
29
|
- mailing list announcements (html email?)
|
9
30
|
- fix for NDS:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
-
|
17
|
-
- armhf ellipsis: fix weirdness with long long as first ... arg
|
18
|
-
- add portable "make install"
|
31
|
+
* ARM:
|
32
|
+
- callback_plain retval wrong (not only platform), area on stack where
|
33
|
+
it's stored is probably not zeroed, so half-words, etc., come with garbage
|
34
|
+
* THUMB:
|
35
|
+
- ellipsis (might be test itself, not respecting fixed part of args)
|
36
|
+
- callback_plain retval, see above under ARM
|
37
|
+
- callf
|
19
38
|
- support Solaris11 CFLAGS with -D_FILE_OFFSET_BITS=64
|
20
|
-
- make sure selinux works (esp. regarding NX bits
|
39
|
+
- make sure selinux works (esp. regarding NX bits)
|
21
40
|
Daniel has a patch for it, if needed, implementing allocwx with two memory blocks, one for w^x, mmaped to one for r|x
|
41
|
+
- support /SAFESEH on cl/win32
|
42
|
+
- test code functions should be in .so files, optionally, so the suites can directly
|
43
|
+
be used to test dycnall bindings
|
44
|
+
- pkg-config support?
|
45
|
+
- quadmath support (long double)
|
46
|
+
- add tests using alloca(), as this might depend on the frame pointer being correctly
|
47
|
+
set; we don't check for this, currently, at all
|
22
48
|
|
23
49
|
portasm:
|
24
50
|
--------
|
@@ -26,19 +52,36 @@ portasm:
|
|
26
52
|
|
27
53
|
dyncall:
|
28
54
|
--------
|
55
|
+
- merge arm32_thumb_{gas/apple} and include thumb support for portasm
|
56
|
+
- x64 verification: return values are passed via RAX and RDX, and XMM0 and XMM1.
|
57
|
+
- find big endian arm box (also hardfloat), e.g. cubietruck: http://blog.netbsd.org/tnf/entry/working_arm_multiprocessor_support
|
58
|
+
- test if armhf/thumb is actually working... pulls in arm mode code in dyncall_callvm.c
|
59
|
+
- dyncall_call_mips_n32.h and dyncall_call_mips_n64.h are pretty much the same, share code
|
29
60
|
- support for return values: aggregate return values
|
30
61
|
- support for argument values: structures, half-precision, vector types, long double
|
31
|
-
|
62
|
+
* make sure that struct support for ellipsis calls are not forgotten (copy everything by value)
|
32
63
|
- consider automatic type-promotion for arguments passed through DC_CALL_C_ELLIPSIS_VARARGS;
|
33
64
|
this would make it easier to just pass arguments instead of having to know about the C
|
34
|
-
type promotions
|
65
|
+
type promotions (this is partly done, see todo-item above under 1.1)
|
35
66
|
- syscalls for x64
|
36
67
|
* bsd
|
37
68
|
* linux
|
38
69
|
- other syscalls
|
70
|
+
- MIPS32 softfloat support (-msoft-float)
|
71
|
+
- test MIPS32 eabi big endian (current port works on psp, which is little endian)
|
72
|
+
- implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and
|
73
|
+
EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter)
|
74
|
+
- implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian
|
75
|
+
- support for Minix/arm
|
76
|
+
- improve ellipsis test:
|
77
|
+
* test not just with one fixed arg, to also simulate alignment problems
|
78
|
+
* test return values
|
79
|
+
* convert from c++ to c, to have it also on plan9, and more portability
|
39
80
|
|
40
81
|
dynload:
|
41
82
|
--------
|
83
|
+
- RTLD_LAZY in darwin, why not in unix?
|
84
|
+
- dlGetLibraryPath: dl_iterate_phdr() used on OpenBSD, but not available on version < 3.7
|
42
85
|
- bug: test/nm crashes on qemu mips linux o32 debian etch
|
43
86
|
- test/resolve_self crashes/asserts on windows and bsds
|
44
87
|
- rename SymsInit to InitSyms and similar for cleanup function to reflect naming
|
@@ -46,24 +89,44 @@ dynload:
|
|
46
89
|
- get rid of Dl_info and friends (_GNU_SOURCE) in dynload/dynload_syms_elf.c
|
47
90
|
for implementation of dlSymsNameFromValue(..)
|
48
91
|
- check if PSP can support dynload (missing elf.h, dlfcn.h, etc.); fixup readme if successful
|
92
|
+
- some functionality like java's System.mapLibraryName('name') might be helpful?
|
93
|
+
- Failed On Open Solaris 11:
|
94
|
+
In file included from dynload_syms.c:28:
|
95
|
+
dynload_syms_elf.c:56: error: syntax error before "Elf_Dyn"
|
96
|
+
dynload_syms_elf.c:56: warning: data definition has no type or storage class
|
97
|
+
dynload_syms_elf.c: In function `dlSymsInit':
|
98
|
+
dynload_syms_elf.c:155: error: `pDyn' undeclared (first use in this function)
|
99
|
+
dynload_syms_elf.c:155: error: (Each undeclared identifier is reported only once
|
100
|
+
dynload_syms_elf.c:155: error: for each function it appears in.)
|
101
|
+
dynload_syms_elf.c:155: error: syntax error before ')' token
|
102
|
+
dynload_syms_elf.c:160: error: `DT_NULL' undeclared (first use in this function)
|
103
|
+
dynload_syms_elf.c:163: error: `DT_STRTAB' undeclared (first use in this function)
|
104
|
+
dynload_syms_elf.c:164: error: `DT_SYMTAB' undeclared (first use in this function)
|
105
|
+
dynload_syms_elf.c:165: error: `DT_HASH' undeclared (first use in this function)
|
106
|
+
make: *** [dynload_syms.o] Error 1
|
49
107
|
|
50
108
|
dyncallback:
|
51
109
|
------------
|
52
|
-
- callback_plain's return value not correct anymore on NDS (maybe just broken testcode?)
|
53
|
-
|
110
|
+
- callback_plain's return value not correct anymore on NDS (maybe just broken testcode?),
|
111
|
+
see above under 1.1 items
|
112
|
+
* check other platforms also, if asm stub initializes retval space, correctly
|
54
113
|
- finish PPC32 callbacks (see bugs section, below, BSD not working)
|
114
|
+
- MIPS32 softfloat support (-msoft-float)
|
115
|
+
- test MIPS32 eabi big endian (current port works on psp, which is little endian)
|
116
|
+
- implement MIPS64 N32 (gcc -mabi=n32); both, little and big-endian (looks like NetNBSD on and
|
117
|
+
EdgeRouter lite uses this: https://blog.netbsd.org/tnf/entry/hands_on_experience_with_edgerouter)
|
118
|
+
- implement MIPS64 EABI (gcc -mabi=eabi); both, little and big-endian
|
119
|
+
- support for Minix/arm
|
55
120
|
|
56
121
|
bindings:
|
57
122
|
---------
|
58
123
|
- release bindings as standalone packages (already done for rbdc as a gem and rdyncall on cran)
|
59
124
|
* add note to documentation, where bindings are and that some bindings are svn-only ATM
|
60
125
|
- add rdoc documentation to ruby gem
|
61
|
-
- bring python up to latest
|
62
126
|
- add pydoc for python
|
63
127
|
- add manpage for shdc
|
64
128
|
- expose callf-convenience functions to go
|
65
129
|
- add godoc for godc
|
66
|
-
- bring java up to latest
|
67
130
|
- add javadoc to java
|
68
131
|
- add more bindings
|
69
132
|
- add callback support for erlang, go, java, lua, python and ruby (and shell? how?)
|
@@ -71,14 +134,20 @@ bindings:
|
|
71
134
|
|
72
135
|
manual:
|
73
136
|
-------
|
74
|
-
-
|
137
|
+
- introduce doc overview tables and common vocab for calling convention specifics, following example of table on page 13 of https://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf; also as inspiration, e.g. user 'preserved' instead of 'permanent', etc. https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html#//apple_ref/doc/uid/TP40009021-SW4
|
138
|
+
- make stack layout diagrams better, e.g. add grow direction (example: https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/art/arm_stack.jpg on https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html#//apple_ref/doc/uid/TP40009021-SW1)
|
139
|
+
- callconv diagrams:
|
140
|
+
* good idea to review it all, anyways, if the calling conventions are actually
|
141
|
+
represented correctly (and if they are in sync with the .pdf, we used to have
|
142
|
+
problems with multirow.4ht)
|
75
143
|
- provide more examples on how to use dyncall, dynload and dyncallback
|
76
144
|
* e.g. enhance manual with a couple of examples (e.g. calling MessageBoxA on windows, etc.)
|
77
145
|
- manuals for bindings (as stated in bindings-section, above)
|
146
|
+
- under "dyncall support", in each calling convention appendix, list crucial details of e.g. big/little endian support, etc.
|
147
|
+
- specify integer models in use, use common ILP32, LLP64, etc. terms
|
78
148
|
|
79
|
-
|
80
|
-
|
81
|
-
- finish SPARC/SPARC64 calling conventions in doc's callconv-appendix !!!
|
149
|
+
regressions:
|
150
|
+
------------
|
82
151
|
- Haiku/gmake build doesn't build dynload due to the fact, that elf.h is not found
|
83
152
|
on default installations (one has to install the system headers)
|
84
153
|
* add to doc
|
@@ -97,10 +166,9 @@ nice to have:
|
|
97
166
|
|
98
167
|
bugs:
|
99
168
|
-----
|
100
|
-
- callconv
|
169
|
+
- setting callconv, specifically for platforms that have only one (default)) excepts on some
|
101
170
|
platforms, eg. setting X64_sysv on amd64/Linux - keeping cdecl which is the same in
|
102
|
-
this case, works
|
103
|
-
- callbacks on ppc32 only work on linux and apple (osx abi), but not BSD
|
171
|
+
this case, works (this should work now...)
|
104
172
|
- vararg function calls don't work for ARM THUMB mode (Daniel's new interface for modesetting for varag
|
105
173
|
args should be used); adapt test/ellipsis and/or retest
|
106
174
|
|
@@ -108,11 +176,13 @@ missing implementations (descending priority):
|
|
108
176
|
----------------------------------------------
|
109
177
|
- riscv
|
110
178
|
- itanium
|
179
|
+
- superh/j-core
|
111
180
|
- 68k, 88k, 6502, etc.
|
181
|
+
- arc
|
112
182
|
- alpha
|
113
|
-
- superh
|
114
183
|
- cell
|
115
184
|
- blackfin
|
185
|
+
- seaforth
|
116
186
|
- s/390
|
117
187
|
- z80
|
118
188
|
- hppa
|
@@ -120,6 +190,4 @@ missing implementations (descending priority):
|
|
120
190
|
- atmel avr
|
121
191
|
- propeller
|
122
192
|
- amd29k
|
123
|
-
- arc
|
124
|
-
- seaforth
|
125
193
|
|