ffi 1.9.23 → 1.9.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -0
  3. data/Rakefile +1 -1
  4. data/ext/ffi_c/Call.c +5 -2
  5. data/ext/ffi_c/Function.c +8 -5
  6. data/ext/ffi_c/Thread.c +1 -0
  7. data/ext/ffi_c/extconf.rb +1 -0
  8. data/ext/ffi_c/libffi/.appveyor.yml +6 -4
  9. data/ext/ffi_c/libffi/.github/issue_template.md +10 -0
  10. data/ext/ffi_c/libffi/.gitignore +2 -0
  11. data/ext/ffi_c/libffi/.travis.yml +20 -16
  12. data/ext/ffi_c/libffi/.travis/ar-lib +270 -0
  13. data/ext/ffi_c/libffi/.travis/build.sh +34 -0
  14. data/ext/ffi_c/libffi/.travis/compile +351 -0
  15. data/ext/ffi_c/libffi/.travis/install.sh +11 -3
  16. data/ext/ffi_c/libffi/.travis/moxie-sim.exp +60 -0
  17. data/ext/ffi_c/libffi/.travis/site.exp +18 -0
  18. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +352 -0
  19. data/ext/ffi_c/libffi/Makefile.am +4 -45
  20. data/ext/ffi_c/libffi/{README → README.md} +237 -230
  21. data/ext/ffi_c/libffi/configure.ac +10 -8
  22. data/ext/ffi_c/libffi/configure.host +5 -0
  23. data/ext/ffi_c/libffi/include/ffi.h.in +48 -26
  24. data/ext/ffi_c/libffi/include/ffi_common.h +2 -0
  25. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +18 -16
  26. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +21 -8
  27. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +4 -4
  28. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +9 -7
  29. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +8 -5
  30. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +5 -5
  31. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +7 -6
  32. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +99 -61
  33. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +18 -8
  34. data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +37 -0
  35. data/ext/ffi_c/libffi/msvcc.sh +82 -14
  36. data/ext/ffi_c/libffi/src/aarch64/ffi.c +8 -31
  37. data/ext/ffi_c/libffi/src/closures.c +31 -1
  38. data/ext/ffi_c/libffi/src/ia64/ffi.c +24 -6
  39. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +2 -1
  40. data/ext/ffi_c/libffi/src/ia64/unix.S +6 -1
  41. data/ext/ffi_c/libffi/src/mips/ffi.c +29 -12
  42. data/ext/ffi_c/libffi/src/mips/ffitarget.h +7 -12
  43. data/ext/ffi_c/libffi/src/moxie/eabi.S +1 -1
  44. data/ext/ffi_c/libffi/src/moxie/ffi.c +18 -5
  45. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +45 -16
  46. data/ext/ffi_c/libffi/src/riscv/ffi.c +445 -0
  47. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +68 -0
  48. data/ext/ffi_c/libffi/src/riscv/sysv.S +214 -0
  49. data/ext/ffi_c/libffi/src/types.c +3 -1
  50. data/ext/ffi_c/libffi/src/x86/ffi.c +18 -0
  51. data/ext/ffi_c/libffi/src/x86/ffi64.c +15 -9
  52. data/ext/ffi_c/libffi/src/x86/ffitarget.h +8 -2
  53. data/ext/ffi_c/libffi/src/x86/ffiw64.c +30 -9
  54. data/ext/ffi_c/libffi/src/xtensa/sysv.S +6 -1
  55. data/ext/ffi_c/libffi/testsuite/Makefile.am +108 -77
  56. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +195 -5
  57. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  58. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
  59. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
  60. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +58 -0
  61. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1745 -0
  62. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
  63. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +743 -0
  64. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
  65. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +14 -1
  66. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +3 -1
  67. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +1 -0
  68. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
  69. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc +1 -1
  70. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc +1 -1
  71. data/lib/ffi/library.rb +2 -4
  72. data/lib/ffi/platform/mips64-linux/types.conf +104 -0
  73. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  74. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  75. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  76. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  77. data/lib/ffi/version.rb +1 -1
  78. metadata +29 -3
@@ -0,0 +1,34 @@
1
+ #!/bin/bash
2
+
3
+ # exit this script if any commmand fails
4
+ # set -e
5
+
6
+ function build_linux()
7
+ {
8
+ ./autogen.sh
9
+ ./configure ${HOST+--host=$HOST} ${CONFIGURE_OPTIONS}
10
+ make
11
+ make dist
12
+ make check RUNTESTFLAGS="-a $RUNTESTFLAGS"
13
+ cat */testsuite/libffi.log
14
+ }
15
+
16
+ function build_ios()
17
+ {
18
+ which python
19
+ # export PYTHON_BIN=/usr/local/bin/python
20
+ ./generate-darwin-source-and-headers.py
21
+ xcodebuild -showsdks
22
+ xcodebuild -project libffi.xcodeproj -target "libffi-iOS" -configuration Release -sdk iphoneos10.3
23
+ find ./
24
+ }
25
+
26
+ ./autogen.sh
27
+ case "$HOST" in
28
+ arm-apple-darwin*)
29
+ build_ios
30
+ ;;
31
+ *)
32
+ build_linux
33
+ ;;
34
+ esac
@@ -0,0 +1,351 @@
1
+ #! /bin/sh
2
+ # Wrapper for compilers which do not understand '-c -o'.
3
+
4
+ scriptversion=2018-03-27.18; # UTC
5
+
6
+ # Copyright (C) 1999-2018 Free Software Foundation, Inc.
7
+ # Written by Tom Tromey <tromey@cygnus.com>.
8
+ #
9
+ # This program is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation; either version 2, or (at your option)
12
+ # any later version.
13
+ #
14
+ # This program is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
21
+
22
+ # As a special exception to the GNU General Public License, if you
23
+ # distribute this file as part of a program that contains a
24
+ # configuration script generated by Autoconf, you may include it under
25
+ # the same distribution terms that you use for the rest of that program.
26
+
27
+ # This file is maintained in Automake, please report
28
+ # bugs to <bug-automake@gnu.org> or send patches to
29
+ # <automake-patches@gnu.org>.
30
+
31
+ nl='
32
+ '
33
+
34
+ # We need space, tab and new line, in precisely that order. Quoting is
35
+ # there to prevent tools from complaining about whitespace usage.
36
+ IFS=" "" $nl"
37
+
38
+ file_conv=
39
+
40
+ # func_file_conv build_file lazy
41
+ # Convert a $build file to $host form and store it in $file
42
+ # Currently only supports Windows hosts. If the determined conversion
43
+ # type is listed in (the comma separated) LAZY, no conversion will
44
+ # take place.
45
+ func_file_conv ()
46
+ {
47
+ file=$1
48
+ case $file in
49
+ / | /[!/]*) # absolute file, and not a UNC file
50
+ if test -z "$file_conv"; then
51
+ # lazily determine how to convert abs files
52
+ case `uname -s` in
53
+ MINGW*)
54
+ file_conv=mingw
55
+ ;;
56
+ CYGWIN*)
57
+ file_conv=cygwin
58
+ ;;
59
+ *)
60
+ file_conv=wine
61
+ ;;
62
+ esac
63
+ fi
64
+ case $file_conv/,$2, in
65
+ *,$file_conv,*)
66
+ ;;
67
+ mingw/*)
68
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
69
+ ;;
70
+ cygwin/*)
71
+ file=`cygpath -m "$file" || echo "$file"`
72
+ ;;
73
+ wine/*)
74
+ file=`winepath -w "$file" || echo "$file"`
75
+ ;;
76
+ esac
77
+ ;;
78
+ esac
79
+ }
80
+
81
+ # func_cl_dashL linkdir
82
+ # Make cl look for libraries in LINKDIR
83
+ func_cl_dashL ()
84
+ {
85
+ func_file_conv "$1"
86
+ if test -z "$lib_path"; then
87
+ lib_path=$file
88
+ else
89
+ lib_path="$lib_path;$file"
90
+ fi
91
+ linker_opts="$linker_opts -LIBPATH:$file"
92
+ }
93
+
94
+ # func_cl_dashl library
95
+ # Do a library search-path lookup for cl
96
+ func_cl_dashl ()
97
+ {
98
+ lib=$1
99
+ found=no
100
+ save_IFS=$IFS
101
+ IFS=';'
102
+ for dir in $lib_path $LIB
103
+ do
104
+ IFS=$save_IFS
105
+ if $shared && test -f "$dir/$lib.dll.lib"; then
106
+ found=yes
107
+ lib=$dir/$lib.dll.lib
108
+ break
109
+ fi
110
+ if test -f "$dir/$lib.lib"; then
111
+ found=yes
112
+ lib=$dir/$lib.lib
113
+ break
114
+ fi
115
+ if test -f "$dir/lib$lib.a"; then
116
+ found=yes
117
+ lib=$dir/lib$lib.a
118
+ break
119
+ fi
120
+ done
121
+ IFS=$save_IFS
122
+
123
+ if test "$found" != yes; then
124
+ lib=$lib.lib
125
+ fi
126
+ }
127
+
128
+ # func_cl_wrapper cl arg...
129
+ # Adjust compile command to suit cl
130
+ func_cl_wrapper ()
131
+ {
132
+ # Assume a capable shell
133
+ lib_path=
134
+ shared=:
135
+ linker_opts=
136
+ for arg
137
+ do
138
+ if test -n "$eat"; then
139
+ eat=
140
+ else
141
+ case $1 in
142
+ -o)
143
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
144
+ eat=1
145
+ case $2 in
146
+ *.o | *.[oO][bB][jJ])
147
+ func_file_conv "$2"
148
+ set x "$@" -Fo"$file"
149
+ shift
150
+ ;;
151
+ *)
152
+ func_file_conv "$2"
153
+ set x "$@" -Fe"$file"
154
+ shift
155
+ ;;
156
+ esac
157
+ ;;
158
+ -I)
159
+ eat=1
160
+ func_file_conv "$2" mingw
161
+ set x "$@" -I"$file"
162
+ shift
163
+ ;;
164
+ -I*)
165
+ func_file_conv "${1#-I}" mingw
166
+ set x "$@" -I"$file"
167
+ shift
168
+ ;;
169
+ -l)
170
+ eat=1
171
+ func_cl_dashl "$2"
172
+ set x "$@" "$lib"
173
+ shift
174
+ ;;
175
+ -l*)
176
+ func_cl_dashl "${1#-l}"
177
+ set x "$@" "$lib"
178
+ shift
179
+ ;;
180
+ -L)
181
+ eat=1
182
+ func_cl_dashL "$2"
183
+ ;;
184
+ -L*)
185
+ func_cl_dashL "${1#-L}"
186
+ ;;
187
+ -static)
188
+ shared=false
189
+ ;;
190
+ -warn)
191
+ eat=1
192
+ ;;
193
+ -Wl,*)
194
+ arg=${1#-Wl,}
195
+ save_ifs="$IFS"; IFS=','
196
+ for flag in $arg; do
197
+ IFS="$save_ifs"
198
+ linker_opts="$linker_opts $flag"
199
+ done
200
+ IFS="$save_ifs"
201
+ ;;
202
+ -Xlinker)
203
+ eat=1
204
+ linker_opts="$linker_opts $2"
205
+ ;;
206
+ -*)
207
+ set x "$@" "$1"
208
+ shift
209
+ ;;
210
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
211
+ func_file_conv "$1"
212
+ set x "$@" -Tp"$file"
213
+ shift
214
+ ;;
215
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
216
+ func_file_conv "$1" mingw
217
+ set x "$@" "$file"
218
+ shift
219
+ ;;
220
+ *)
221
+ set x "$@" "$1"
222
+ shift
223
+ ;;
224
+ esac
225
+ fi
226
+ shift
227
+ done
228
+ if test -n "$linker_opts"; then
229
+ linker_opts="-link$linker_opts"
230
+ fi
231
+ exec "$@" $linker_opts
232
+ exit 1
233
+ }
234
+
235
+ eat=
236
+
237
+ case $1 in
238
+ '')
239
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
240
+ exit 1;
241
+ ;;
242
+ -h | --h*)
243
+ cat <<\EOF
244
+ Usage: compile [--help] [--version] PROGRAM [ARGS]
245
+
246
+ Wrapper for compilers which do not understand '-c -o'.
247
+ Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
248
+ arguments, and rename the output as expected.
249
+
250
+ If you are trying to build a whole package this is not the
251
+ right script to run: please start by reading the file 'INSTALL'.
252
+
253
+ Report bugs to <bug-automake@gnu.org>.
254
+ EOF
255
+ exit $?
256
+ ;;
257
+ -v | --v*)
258
+ echo "compile $scriptversion"
259
+ exit $?
260
+ ;;
261
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
262
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
263
+ func_cl_wrapper "$@" # Doesn't return...
264
+ ;;
265
+ esac
266
+
267
+ ofile=
268
+ cfile=
269
+
270
+ for arg
271
+ do
272
+ if test -n "$eat"; then
273
+ eat=
274
+ else
275
+ case $1 in
276
+ -o)
277
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
278
+ # So we strip '-o arg' only if arg is an object.
279
+ eat=1
280
+ case $2 in
281
+ *.o | *.obj)
282
+ ofile=$2
283
+ ;;
284
+ *)
285
+ set x "$@" -o "$2"
286
+ shift
287
+ ;;
288
+ esac
289
+ ;;
290
+ *.c)
291
+ cfile=$1
292
+ set x "$@" "$1"
293
+ shift
294
+ ;;
295
+ *)
296
+ set x "$@" "$1"
297
+ shift
298
+ ;;
299
+ esac
300
+ fi
301
+ shift
302
+ done
303
+
304
+ if test -z "$ofile" || test -z "$cfile"; then
305
+ # If no '-o' option was seen then we might have been invoked from a
306
+ # pattern rule where we don't need one. That is ok -- this is a
307
+ # normal compilation that the losing compiler can handle. If no
308
+ # '.c' file was seen then we are probably linking. That is also
309
+ # ok.
310
+ exec "$@"
311
+ fi
312
+
313
+ # Name of file we expect compiler to create.
314
+ cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
315
+
316
+ # Create the lock directory.
317
+ # Note: use '[/\\:.-]' here to ensure that we don't use the same name
318
+ # that we are using for the .o file. Also, base the name on the expected
319
+ # object file name, since that is what matters with a parallel build.
320
+ lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
321
+ while true; do
322
+ if mkdir "$lockdir" >/dev/null 2>&1; then
323
+ break
324
+ fi
325
+ sleep 1
326
+ done
327
+ # FIXME: race condition here if user kills between mkdir and trap.
328
+ trap "rmdir '$lockdir'; exit 1" 1 2 15
329
+
330
+ # Run the compile.
331
+ "$@"
332
+ ret=$?
333
+
334
+ if test -f "$cofile"; then
335
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
336
+ elif test -f "${cofile}bj"; then
337
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
338
+ fi
339
+
340
+ rmdir "$lockdir"
341
+ exit $ret
342
+
343
+ # Local Variables:
344
+ # mode: shell-script
345
+ # sh-indentation: 2
346
+ # eval: (add-hook 'before-save-hook 'time-stamp)
347
+ # time-stamp-start: "scriptversion="
348
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
349
+ # time-stamp-time-zone: "UTC0"
350
+ # time-stamp-end: "; # UTC"
351
+ # End:
@@ -1,4 +1,5 @@
1
1
  #!/bin/bash
2
+ set -x
2
3
 
3
4
  if [[ $TRAVIS_OS_NAME != 'linux' ]]; then
4
5
  brew update
@@ -8,7 +9,14 @@ if [[ $TRAVIS_OS_NAME != 'linux' ]]; then
8
9
  else
9
10
  sudo apt-get update
10
11
  sudo apt-get install dejagnu texinfo
11
- if [ "$HOST" = i386-pc-linux-gnu ] ; then
12
- sudo apt-get install gcc-multilib g++-multilib;
13
- fi
12
+ case "$HOST" in
13
+ i386-pc-linux-gnu)
14
+ sudo apt-get install gcc-multilib g++-multilib
15
+ ;;
16
+ moxie-elf)
17
+ echo 'deb http://repos.moxielogic.org:7114/MoxieLogic moxiedev main' | sudo tee -a /etc/apt/sources.list
18
+ sudo apt-get update -qq
19
+ sudo apt-get install -y --allow-unauthenticated moxielogic-moxie-elf-gcc moxielogic-moxie-elf-gcc-c++ moxielogic-moxie-elf-gcc-libstdc++ moxielogic-moxie-elf-gdb-sim
20
+ ;;
21
+ esac
14
22
  fi
@@ -0,0 +1,60 @@
1
+ # Copyright (C) 2010 Free Software Foundation, Inc.
2
+ #
3
+ # This file is part of DejaGnu.
4
+ #
5
+ # DejaGnu is free software; you can redistribute it and/or modify it
6
+ # under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # DejaGnu is distributed in the hope that it will be useful, but
11
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with DejaGnu; if not, write to the Free Software Foundation,
17
+ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
+
19
+ # This is a list of toolchains that are supported on this board.
20
+ set_board_info target_install {moxie-elf}
21
+
22
+ # Load the generic configuration for this board. This will define a basic set
23
+ # of routines needed by the tool to communicate with the board.
24
+ load_generic_config "sim"
25
+
26
+ # basic-sim.exp is a basic description for the standard Cygnus simulator.
27
+ load_base_board_description "basic-sim"
28
+
29
+ # "moxie" is the name of the sim subdir in devo/sim.
30
+ setup_sim moxie
31
+
32
+ # No multilib options needed by default.
33
+ process_multilib_options ""
34
+
35
+ # We only support newlib on this target. We assume that all multilib
36
+ # options have been specified before we get here.
37
+
38
+ set_board_info compiler "[find_gcc]"
39
+ set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]"
40
+ set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"
41
+ # No linker script needed.
42
+ set_board_info ldscript "-Tsim.ld"
43
+
44
+ # Configuration settings for testsuites
45
+ set_board_info noargs 1
46
+ set_board_info gdb,nosignals 1
47
+ set_board_info gdb,noresults 1
48
+ set_board_info gdb,cannot_call_functions 1
49
+ set_board_info gdb,skip_float_tests 1
50
+ set_board_info gdb,can_reverse 1
51
+ set_board_info gdb,use_precord 1
52
+
53
+ # More time is needed
54
+ set_board_info gcc,timeout 800
55
+ set_board_info gdb,timeout 60
56
+
57
+ # Used by a few gcc.c-torture testcases to delimit how large the stack can
58
+ # be.
59
+ set_board_info gcc,stack_size 5000
60
+