rbdc 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
-