rbdc 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/dyncall/CMakeLists.txt +3 -3
  3. data/dyncall/ChangeLog +33 -0
  4. data/dyncall/ChangeLog.orig +274 -0
  5. data/dyncall/LICENSE +1 -1
  6. data/dyncall/README +3 -5
  7. data/dyncall/ToDo +27 -18
  8. data/dyncall/ToDo.orig +201 -0
  9. data/dyncall/autovar/autovar_ARCH.h +1 -1
  10. data/dyncall/buildsys/vs2005/vs2005.sln +0 -9
  11. data/dyncall/cconv.lang +36 -0
  12. data/dyncall/configure +17 -9
  13. data/dyncall/configure.bat +1 -1
  14. data/dyncall/dyncall/dyncall.h +2 -1
  15. data/dyncall/dyncall/dyncall_call.S +9 -1
  16. data/dyncall/dyncall/dyncall_call_mips_n32.S +192 -0
  17. data/dyncall/dyncall/dyncall_call_mips_n64.S +197 -0
  18. data/dyncall/dyncall/dyncall_call_mips_n64.h +2 -0
  19. data/dyncall/dyncall/{dyncall_call_mips_o32_gas.s → dyncall_call_mips_o32.S} +44 -42
  20. data/dyncall/dyncall/dyncall_call_mips_o32.h +8 -3
  21. data/dyncall/dyncall/dyncall_call_ppc32.S +3 -1
  22. data/dyncall/dyncall/dyncall_call_ppc32.h +4 -3
  23. data/dyncall/dyncall/dyncall_call_ppc64.S +1 -1
  24. data/dyncall/dyncall/dyncall_call_ppc64.h +3 -0
  25. data/dyncall/dyncall/dyncall_call_x64.S +27 -2
  26. data/dyncall/dyncall/dyncall_call_x64.h +2 -1
  27. data/dyncall/dyncall/dyncall_call_x64_generic_masm.asm +13 -2
  28. data/dyncall/dyncall/dyncall_call_x86.S +6 -6
  29. data/dyncall/dyncall/dyncall_call_x86.h +7 -7
  30. data/dyncall/dyncall/dyncall_call_x86_generic_masm.asm +6 -7
  31. data/dyncall/dyncall/dyncall_callvm_mips_n64.c +27 -9
  32. data/dyncall/dyncall/dyncall_callvm_mips_o32.c +38 -31
  33. data/dyncall/dyncall/dyncall_callvm_mips_o32.c.orig +247 -0
  34. data/dyncall/dyncall/dyncall_callvm_x64.c +57 -3
  35. data/dyncall/dyncall/dyncall_callvm_x86.c +32 -32
  36. data/dyncall/dyncall/dyncall_macros.h +11 -8
  37. data/dyncall/dyncall/dyncall_struct.c +12 -6
  38. data/dyncall/dyncall/dyncall_struct.h +1 -1
  39. data/dyncall/dyncall/dyncall_vector.c +13 -12
  40. data/dyncall/dyncall/dyncall_vector.c.orig +53 -0
  41. data/dyncall/dyncall/gen-masm.sh +4 -5
  42. data/dyncall/dyncallback/dyncall_args_mips.h +24 -6
  43. data/dyncall/dyncallback/dyncall_args_mips64.c +3 -3
  44. data/dyncall/dyncallback/dyncall_args_mips_o32.c +19 -6
  45. data/dyncall/dyncallback/dyncall_callback_arch.S +11 -1
  46. data/dyncall/dyncallback/{dyncall_callback_mips_n32_gas.s → dyncall_callback_mips_n32.S} +1 -1
  47. data/dyncall/dyncallback/{dyncall_callback_mips_n64_gas.s → dyncall_callback_mips_n64.S} +39 -25
  48. data/dyncall/dyncallback/{dyncall_callback_mips_o32_gas.s → dyncall_callback_mips_o32.S} +29 -13
  49. data/dyncall/dyncallback/dyncall_callback_x86_masm.asm +0 -1
  50. data/dyncall/dyncallback/dyncall_thunk.h +1 -1
  51. data/dyncall/dyncallback/gen-masm.sh +3 -5
  52. data/dyncall/dynload/dynload.3 +16 -4
  53. data/dyncall/dynload/dynload_unix.c +101 -53
  54. data/dyncall/dynload/dynload_windows.c +76 -3
  55. data/dyncall/portasm/README.txt +1 -1
  56. data/dyncall/portasm/gen-masm.sh +5 -1
  57. metadata +14 -13
  58. data/dyncall/buildsys/vs2005/test_plain/test_plain.vcproj +0 -202
  59. data/dyncall/dyncall/dyncall_call_mips_gas.S +0 -37
  60. data/dyncall/dyncall/dyncall_call_mips_n32_gas.s +0 -192
  61. data/dyncall/dyncall/dyncall_call_mips_n64_gas.s +0 -192
  62. data/dyncall/dyncallback/dyncall_callback_mips_gas.S +0 -38
@@ -6,7 +6,7 @@
6
6
  Description:
7
7
  License:
8
8
 
9
- Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
9
+ Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>,
10
10
  Tassilo Philipp <tphilipp@potion-studios.com>
11
11
 
12
12
  Permission to use, copy, modify, and distribute this software for any
@@ -35,13 +35,44 @@
35
35
 
36
36
 
37
37
  #include "dynload.h"
38
+ #include "dynload_alloc.h"
38
39
 
39
40
  #include <windows.h>
40
41
 
41
42
 
42
43
  DLLib* dlLoadLibrary(const char* libPath)
43
44
  {
44
- return (DLLib*)(libPath != NULL ? LoadLibraryA(libPath) : GetModuleHandle(NULL));
45
+ if(libPath == NULL)
46
+ return (DLLib*)GetModuleHandle(NULL);
47
+ else {
48
+ /* convert from UTF-8 to wide chars, so count required size */
49
+ DLLib* pLib;
50
+ wchar_t* ws;
51
+ int r = MultiByteToWideChar(CP_UTF8, 0, libPath, -1, NULL, 0);
52
+ if(!r) {
53
+ return NULL;
54
+ }
55
+
56
+ /* Reserve temp space with room for extra '.' suffix (see below) */
57
+ ws = (wchar_t*)dlAllocMem((r+1) * sizeof(wchar_t));
58
+ if(!ws)
59
+ return NULL;
60
+
61
+ /* Convert path and add a '.' suffix, needed to tell windows not to add
62
+ .dll to any path that doesn't have it (see MS doc for LoadLibraryW).
63
+ This is to get same behaviour as on other platforms which don't do any
64
+ magic like this. Library search path behaviour stays unaffected, though */
65
+ pLib = NULL;
66
+ if(MultiByteToWideChar(CP_UTF8, 0, libPath, -1, ws, r) == r) {
67
+ ws[r-1] = '.';
68
+ ws[r] = 0;
69
+ pLib = (DLLib*)LoadLibraryW(ws);
70
+ }
71
+
72
+ /* ... free temp space and return handle */
73
+ dlFreeMem(ws);
74
+ return pLib;
75
+ }
45
76
  }
46
77
 
47
78
 
@@ -59,6 +90,48 @@ void dlFreeLibrary(DLLib* pLib)
59
90
 
60
91
  int dlGetLibraryPath(DLLib* pLib, char* sOut, int bufSize)
61
92
  {
62
- return GetModuleFileNameA((HMODULE)pLib, sOut, bufSize)+1; /* strlen + '\0' */
93
+ /* get the path name as wide chars, then convert to UTF-8; we need */
94
+ /* some trial and error to figure out needed wide char string length */
95
+
96
+ wchar_t* ws;
97
+ int r;
98
+
99
+ /* num chars to alloc temp space for, and upper limit, must be both power */
100
+ /* of 2s for loop to be precise and to test allow testing up to 32768 chars */
101
+ /* (including \0), which is the extended path ("\\?\...") maximum */
102
+ static const int MAX_EXT_PATH = 1<<15; /* max extended path length (32768) */
103
+ int nc = 1<<6; /* guess start buffer size, */
104
+
105
+ while(nc <= MAX_EXT_PATH)/*@@@ add testcode for super long paths*/
106
+ {
107
+ ws = (wchar_t*)dlAllocMem(nc * sizeof(wchar_t));
108
+ if(!ws)
109
+ break;
110
+
111
+ r = GetModuleFileNameW((HMODULE)pLib, ws, nc);
112
+
113
+ /* r == nc if string was truncated, double temp buffer size */
114
+ if(r == nc) {
115
+ nc <<= 1;
116
+ dlFreeMem(ws);
117
+ continue;
118
+ }
119
+ /* error if r is 0 */
120
+ else if(!r) {
121
+ dlFreeMem(ws);
122
+ break;
123
+ }
124
+
125
+ /* check if output buffer is big enough */
126
+ r = WideCharToMultiByte(CP_UTF8, 0, ws, -1, NULL, 0, NULL, NULL);
127
+ if(r <= bufSize)
128
+ r = WideCharToMultiByte(CP_UTF8, 0, ws, -1, sOut, bufSize, NULL, NULL);
129
+
130
+ /* cleanup and return either size of copied bytes or needed buffer size */
131
+ dlFreeMem(ws);
132
+ return r;
133
+ }
134
+
135
+ return 0;
63
136
  }
64
137
 
@@ -26,7 +26,7 @@ Implement assembler sources in *.S files which use C preprocessor.
26
26
  #include portasm-<ARCH>.S at front
27
27
 
28
28
  In order to generate MASM files for X86 and X64, run
29
- 'gen-masm.sh <name>' script which reads <name>.S and outputs <name>.masm file.
29
+ 'gen-masm.sh <name> [<outsuffix>]' script which reads <name>.S and outputs <name><outsuffix>.masm file.
30
30
 
31
31
 
32
32
  Common Macros:
@@ -1,3 +1,7 @@
1
1
  #!/bin/sh
2
- gcc -E -P -DGEN_MASM $1.S >$1.asm
2
+ `which gcc || which clang` -E -P -DGEN_MASM ${1:?Usage: $0 <name> [<outsuffix>]}.S \
3
+ | sed "/^$/d;1i\\
4
+ ; auto-generated by `basename $0`
5
+ ;s/$/
6
+ > $1$2.asm
3
7
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbdc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tassilo Philipp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-24 00:00:00.000000000 Z
11
+ date: 2020-01-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby interface to dyncall, allowing programmers to call C functions in
14
14
  shared libraries from ruby without writing any glue code at all (e.g. "l.load('/usr/lib/libm.so');
@@ -23,12 +23,14 @@ files:
23
23
  - dyncall/BUGS
24
24
  - dyncall/CMakeLists.txt
25
25
  - dyncall/ChangeLog
26
+ - dyncall/ChangeLog.orig
26
27
  - dyncall/LICENSE
27
28
  - dyncall/Makefile.embedded
28
29
  - dyncall/Makefile.generic
29
30
  - dyncall/Nmakefile
30
31
  - dyncall/README
31
32
  - dyncall/ToDo
33
+ - dyncall/ToDo.orig
32
34
  - dyncall/autovar/LICENSE.txt
33
35
  - dyncall/autovar/README.txt
34
36
  - dyncall/autovar/autovar_ABI.h
@@ -65,8 +67,8 @@ files:
65
67
  - dyncall/buildsys/scripts/setenv-cross-ios.sh
66
68
  - dyncall/buildsys/scripts/setenv-sdk-ios.sh
67
69
  - dyncall/buildsys/vs2005/dyncall/dyncall.vcproj
68
- - dyncall/buildsys/vs2005/test_plain/test_plain.vcproj
69
70
  - dyncall/buildsys/vs2005/vs2005.sln
71
+ - dyncall/cconv.lang
70
72
  - dyncall/configure
71
73
  - dyncall/configure.bat
72
74
  - dyncall/configure.rc
@@ -95,13 +97,12 @@ files:
95
97
  - dyncall/dyncall/dyncall_call_mips.h
96
98
  - dyncall/dyncall/dyncall_call_mips_eabi.h
97
99
  - dyncall/dyncall/dyncall_call_mips_eabi_gas.s
98
- - dyncall/dyncall/dyncall_call_mips_gas.S
100
+ - dyncall/dyncall/dyncall_call_mips_n32.S
99
101
  - dyncall/dyncall/dyncall_call_mips_n32.h
100
- - dyncall/dyncall/dyncall_call_mips_n32_gas.s
102
+ - dyncall/dyncall/dyncall_call_mips_n64.S
101
103
  - dyncall/dyncall/dyncall_call_mips_n64.h
102
- - dyncall/dyncall/dyncall_call_mips_n64_gas.s
104
+ - dyncall/dyncall/dyncall_call_mips_o32.S
103
105
  - dyncall/dyncall/dyncall_call_mips_o32.h
104
- - dyncall/dyncall/dyncall_call_mips_o32_gas.s
105
106
  - dyncall/dyncall/dyncall_call_ppc32.S
106
107
  - dyncall/dyncall/dyncall_call_ppc32.h
107
108
  - dyncall/dyncall/dyncall_call_ppc64.S
@@ -141,6 +142,7 @@ files:
141
142
  - dyncall/dyncall/dyncall_callvm_mips_n64.c
142
143
  - dyncall/dyncall/dyncall_callvm_mips_n64.h
143
144
  - dyncall/dyncall/dyncall_callvm_mips_o32.c
145
+ - dyncall/dyncall/dyncall_callvm_mips_o32.c.orig
144
146
  - dyncall/dyncall/dyncall_callvm_mips_o32.h
145
147
  - dyncall/dyncall/dyncall_callvm_ppc32.c
146
148
  - dyncall/dyncall/dyncall_callvm_ppc32.h
@@ -163,6 +165,7 @@ files:
163
165
  - dyncall/dyncall/dyncall_utils.h
164
166
  - dyncall/dyncall/dyncall_value.h
165
167
  - dyncall/dyncall/dyncall_vector.c
168
+ - dyncall/dyncall/dyncall_vector.c.orig
166
169
  - dyncall/dyncall/dyncall_vector.h
167
170
  - dyncall/dyncall/gen-masm.sh
168
171
  - dyncall/dyncall/mkfile
@@ -211,10 +214,9 @@ files:
211
214
  - dyncall/dyncallback/dyncall_callback_arm64.c
212
215
  - dyncall/dyncallback/dyncall_callback_mips.c
213
216
  - dyncall/dyncallback/dyncall_callback_mips_eabi_gas.s
214
- - dyncall/dyncallback/dyncall_callback_mips_gas.S
215
- - dyncall/dyncallback/dyncall_callback_mips_n32_gas.s
216
- - dyncall/dyncallback/dyncall_callback_mips_n64_gas.s
217
- - dyncall/dyncallback/dyncall_callback_mips_o32_gas.s
217
+ - dyncall/dyncallback/dyncall_callback_mips_n32.S
218
+ - dyncall/dyncallback/dyncall_callback_mips_n64.S
219
+ - dyncall/dyncallback/dyncall_callback_mips_o32.S
218
220
  - dyncall/dyncallback/dyncall_callback_ppc32.S
219
221
  - dyncall/dyncallback/dyncall_callback_ppc32.c
220
222
  - dyncall/dyncallback/dyncall_callback_ppc32_apple.s
@@ -302,8 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
302
304
  - !ruby/object:Gem::Version
303
305
  version: '0'
304
306
  requirements: []
305
- rubyforge_project:
306
- rubygems_version: 2.6.12
307
+ rubygems_version: 3.0.3
307
308
  signing_key:
308
309
  specification_version: 4
309
310
  summary: foreign function interface for C calls
@@ -1,202 +0,0 @@
1
- <?xml version="1.0" encoding="Windows-1252"?>
2
- <VisualStudioProject
3
- ProjectType="Visual C++"
4
- Version="8.00"
5
- Name="test_plain"
6
- ProjectGUID="{65E1A63C-079D-4F72-8307-E070A499D2EA}"
7
- RootNamespace="test_plain"
8
- Keyword="Win32Proj"
9
- >
10
- <Platforms>
11
- <Platform
12
- Name="Win32"
13
- />
14
- </Platforms>
15
- <ToolFiles>
16
- </ToolFiles>
17
- <Configurations>
18
- <Configuration
19
- Name="Debug|Win32"
20
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
21
- IntermediateDirectory="$(ConfigurationName)"
22
- ConfigurationType="1"
23
- CharacterSet="1"
24
- >
25
- <Tool
26
- Name="VCPreBuildEventTool"
27
- />
28
- <Tool
29
- Name="VCCustomBuildTool"
30
- />
31
- <Tool
32
- Name="VCXMLDataGeneratorTool"
33
- />
34
- <Tool
35
- Name="VCWebServiceProxyGeneratorTool"
36
- />
37
- <Tool
38
- Name="VCMIDLTool"
39
- />
40
- <Tool
41
- Name="VCCLCompilerTool"
42
- Optimization="0"
43
- AdditionalIncludeDirectories="../../../dyncall"
44
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
45
- MinimalRebuild="true"
46
- BasicRuntimeChecks="3"
47
- RuntimeLibrary="3"
48
- UsePrecompiledHeader="0"
49
- WarningLevel="3"
50
- Detect64BitPortabilityProblems="true"
51
- DebugInformationFormat="4"
52
- />
53
- <Tool
54
- Name="VCManagedResourceCompilerTool"
55
- />
56
- <Tool
57
- Name="VCResourceCompilerTool"
58
- />
59
- <Tool
60
- Name="VCPreLinkEventTool"
61
- />
62
- <Tool
63
- Name="VCLinkerTool"
64
- LinkIncremental="2"
65
- GenerateDebugInformation="true"
66
- SubSystem="1"
67
- TargetMachine="1"
68
- />
69
- <Tool
70
- Name="VCALinkTool"
71
- />
72
- <Tool
73
- Name="VCManifestTool"
74
- />
75
- <Tool
76
- Name="VCXDCMakeTool"
77
- />
78
- <Tool
79
- Name="VCBscMakeTool"
80
- />
81
- <Tool
82
- Name="VCFxCopTool"
83
- />
84
- <Tool
85
- Name="VCAppVerifierTool"
86
- />
87
- <Tool
88
- Name="VCWebDeploymentTool"
89
- />
90
- <Tool
91
- Name="VCPostBuildEventTool"
92
- />
93
- </Configuration>
94
- <Configuration
95
- Name="Release|Win32"
96
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
97
- IntermediateDirectory="$(ConfigurationName)"
98
- ConfigurationType="1"
99
- CharacterSet="1"
100
- WholeProgramOptimization="1"
101
- >
102
- <Tool
103
- Name="VCPreBuildEventTool"
104
- />
105
- <Tool
106
- Name="VCCustomBuildTool"
107
- />
108
- <Tool
109
- Name="VCXMLDataGeneratorTool"
110
- />
111
- <Tool
112
- Name="VCWebServiceProxyGeneratorTool"
113
- />
114
- <Tool
115
- Name="VCMIDLTool"
116
- />
117
- <Tool
118
- Name="VCCLCompilerTool"
119
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
120
- RuntimeLibrary="2"
121
- UsePrecompiledHeader="0"
122
- WarningLevel="3"
123
- Detect64BitPortabilityProblems="true"
124
- DebugInformationFormat="3"
125
- />
126
- <Tool
127
- Name="VCManagedResourceCompilerTool"
128
- />
129
- <Tool
130
- Name="VCResourceCompilerTool"
131
- />
132
- <Tool
133
- Name="VCPreLinkEventTool"
134
- />
135
- <Tool
136
- Name="VCLinkerTool"
137
- LinkIncremental="1"
138
- GenerateDebugInformation="true"
139
- SubSystem="1"
140
- OptimizeReferences="2"
141
- EnableCOMDATFolding="2"
142
- TargetMachine="1"
143
- />
144
- <Tool
145
- Name="VCALinkTool"
146
- />
147
- <Tool
148
- Name="VCManifestTool"
149
- />
150
- <Tool
151
- Name="VCXDCMakeTool"
152
- />
153
- <Tool
154
- Name="VCBscMakeTool"
155
- />
156
- <Tool
157
- Name="VCFxCopTool"
158
- />
159
- <Tool
160
- Name="VCAppVerifierTool"
161
- />
162
- <Tool
163
- Name="VCWebDeploymentTool"
164
- />
165
- <Tool
166
- Name="VCPostBuildEventTool"
167
- />
168
- </Configuration>
169
- </Configurations>
170
- <References>
171
- </References>
172
- <Files>
173
- <Filter
174
- Name="Source Files"
175
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
176
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
177
- >
178
- <File
179
- RelativePath="..\..\..\test\plain\test_main.cc"
180
- >
181
- </File>
182
- </Filter>
183
- <Filter
184
- Name="Header Files"
185
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
186
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
187
- >
188
- <File
189
- RelativePath="..\..\..\test\plain\test_framework.h"
190
- >
191
- </File>
192
- </Filter>
193
- <Filter
194
- Name="Resource Files"
195
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
196
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
197
- >
198
- </Filter>
199
- </Files>
200
- <Globals>
201
- </Globals>
202
- </VisualStudioProject>
@@ -1,37 +0,0 @@
1
- /*
2
-
3
- Package: dyncall
4
- Library: dyncall
5
- File: dyncall/dyncall_call_mips_gas.S
6
- Description: auto-select (via C preprocessor) mips abi call kernel
7
- License:
8
-
9
- Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
10
- Tassilo Philipp <tphilipp@potion-studios.com>
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(DC__ABI_MIPS_O32)
29
- #include "dyncall_call_mips_o32_gas.s"
30
- #elif defined(DC__ABI_MIPS_N64)
31
- #include "dyncall_call_mips_n64_gas.s"
32
- #elif defined(DC__ABI_MIPS_N32)
33
- #include "dyncall_call_mips_n32_gas.s"
34
- #else
35
- #include "dyncall_call_mips_eabi_gas.s"
36
- #endif
37
-