ffi 1.16.0 → 1.17.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 (98) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +64 -0
  4. data/Gemfile +9 -2
  5. data/README.md +2 -2
  6. data/Rakefile +17 -5
  7. data/ext/ffi_c/AbstractMemory.c +43 -40
  8. data/ext/ffi_c/ArrayType.c +2 -2
  9. data/ext/ffi_c/Buffer.c +4 -4
  10. data/ext/ffi_c/Call.c +18 -9
  11. data/ext/ffi_c/Call.h +3 -2
  12. data/ext/ffi_c/DynamicLibrary.c +2 -2
  13. data/ext/ffi_c/Function.c +10 -4
  14. data/ext/ffi_c/FunctionInfo.c +5 -3
  15. data/ext/ffi_c/LastError.c +4 -4
  16. data/ext/ffi_c/MemoryPointer.c +2 -2
  17. data/ext/ffi_c/Pointer.c +14 -11
  18. data/ext/ffi_c/Struct.c +18 -7
  19. data/ext/ffi_c/StructLayout.c +13 -13
  20. data/ext/ffi_c/Type.c +17 -16
  21. data/ext/ffi_c/Types.c +7 -1
  22. data/ext/ffi_c/Types.h +0 -1
  23. data/ext/ffi_c/Variadic.c +6 -3
  24. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  25. data/ext/ffi_c/libffi/.github/workflows/build.yml +34 -15
  26. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +2 -1
  27. data/ext/ffi_c/libffi/LICENSE +1 -1
  28. data/ext/ffi_c/libffi/README.md +10 -5
  29. data/ext/ffi_c/libffi/compile +348 -0
  30. data/ext/ffi_c/libffi/configure +15 -15
  31. data/ext/ffi_c/libffi/configure.ac +2 -2
  32. data/ext/ffi_c/libffi/configure.host +1 -1
  33. data/ext/ffi_c/libffi/doc/libffi.texi +1 -1
  34. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  35. data/ext/ffi_c/libffi/include/ffi.h.in +2 -11
  36. data/ext/ffi_c/libffi/include/ffi_common.h +4 -2
  37. data/ext/ffi_c/libffi/libffi.map.in +5 -0
  38. data/ext/ffi_c/libffi/libtool-version +1 -1
  39. data/ext/ffi_c/libffi/ltmain.sh +8 -20
  40. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +1 -1
  41. data/ext/ffi_c/libffi/src/aarch64/ffi.c +26 -13
  42. data/ext/ffi_c/libffi/src/aarch64/sysv.S +198 -46
  43. data/ext/ffi_c/libffi/src/closures.c +3 -3
  44. data/ext/ffi_c/libffi/src/debug.c +2 -2
  45. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -1
  46. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +3 -0
  47. data/ext/ffi_c/libffi/src/mips/ffi.c +12 -4
  48. data/ext/ffi_c/libffi/src/mips/n32.S +65 -14
  49. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +36 -24
  50. data/ext/ffi_c/libffi/src/sparc/ffi64.c +7 -1
  51. data/ext/ffi_c/libffi/src/tramp.c +1 -1
  52. data/ext/ffi_c/libffi/src/types.c +4 -6
  53. data/ext/ffi_c/libffi/src/wasm32/ffi.c +13 -0
  54. data/ext/ffi_c/libffi/src/x86/ffiw64.c +1 -1
  55. data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -127
  56. data/ext/ffi_c/libffi/testsuite/Makefile.in +79 -127
  57. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +6 -0
  58. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
  59. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
  60. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
  61. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
  62. data/ext/ffi_c/libffi.darwin.mk +2 -2
  63. data/ffi.gemspec +1 -1
  64. data/lib/ffi/autopointer.rb +1 -9
  65. data/lib/ffi/dynamic_library.rb +34 -5
  66. data/lib/ffi/enum.rb +0 -1
  67. data/lib/ffi/function.rb +1 -1
  68. data/lib/ffi/io.rb +2 -2
  69. data/lib/ffi/library.rb +23 -23
  70. data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
  71. data/lib/ffi/pointer.rb +6 -6
  72. data/lib/ffi/struct.rb +4 -4
  73. data/lib/ffi/struct_layout.rb +2 -2
  74. data/lib/ffi/struct_layout_builder.rb +8 -8
  75. data/lib/ffi/types.rb +51 -48
  76. data/lib/ffi/version.rb +1 -1
  77. data/samples/hello_ractor.rb +11 -0
  78. data/samples/qsort_ractor.rb +28 -0
  79. data/sig/ffi/abstract_memory.rbs +165 -0
  80. data/sig/ffi/auto_pointer.rbs +27 -0
  81. data/sig/ffi/buffer.rbs +18 -0
  82. data/sig/ffi/data_converter.rbs +10 -0
  83. data/sig/ffi/dynamic_library.rbs +9 -0
  84. data/sig/ffi/enum.rbs +38 -0
  85. data/sig/ffi/function.rbs +39 -0
  86. data/sig/ffi/library.rbs +42 -0
  87. data/sig/ffi/native_type.rbs +86 -0
  88. data/sig/ffi/pointer.rbs +42 -0
  89. data/sig/ffi/struct.rbs +76 -0
  90. data/sig/ffi/struct_by_reference.rbs +11 -0
  91. data/sig/ffi/struct_by_value.rbs +7 -0
  92. data/sig/ffi/struct_layout.rbs +9 -0
  93. data/sig/ffi/struct_layout_builder.rbs +5 -0
  94. data/sig/ffi/type.rbs +39 -0
  95. data/sig/ffi.rbs +26 -0
  96. data.tar.gz.sig +0 -0
  97. metadata +40 -18
  98. metadata.gz.sig +1 -1
@@ -0,0 +1,348 @@
1
+ #! /bin/sh
2
+ # Wrapper for compilers which do not understand '-c -o'.
3
+
4
+ scriptversion=2018-03-07.03; # UTC
5
+
6
+ # Copyright (C) 1999-2021 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* | MSYS*)
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/* | msys/*)
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
+ -Wl,*)
191
+ arg=${1#-Wl,}
192
+ save_ifs="$IFS"; IFS=','
193
+ for flag in $arg; do
194
+ IFS="$save_ifs"
195
+ linker_opts="$linker_opts $flag"
196
+ done
197
+ IFS="$save_ifs"
198
+ ;;
199
+ -Xlinker)
200
+ eat=1
201
+ linker_opts="$linker_opts $2"
202
+ ;;
203
+ -*)
204
+ set x "$@" "$1"
205
+ shift
206
+ ;;
207
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
208
+ func_file_conv "$1"
209
+ set x "$@" -Tp"$file"
210
+ shift
211
+ ;;
212
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
213
+ func_file_conv "$1" mingw
214
+ set x "$@" "$file"
215
+ shift
216
+ ;;
217
+ *)
218
+ set x "$@" "$1"
219
+ shift
220
+ ;;
221
+ esac
222
+ fi
223
+ shift
224
+ done
225
+ if test -n "$linker_opts"; then
226
+ linker_opts="-link$linker_opts"
227
+ fi
228
+ exec "$@" $linker_opts
229
+ exit 1
230
+ }
231
+
232
+ eat=
233
+
234
+ case $1 in
235
+ '')
236
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
237
+ exit 1;
238
+ ;;
239
+ -h | --h*)
240
+ cat <<\EOF
241
+ Usage: compile [--help] [--version] PROGRAM [ARGS]
242
+
243
+ Wrapper for compilers which do not understand '-c -o'.
244
+ Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
245
+ arguments, and rename the output as expected.
246
+
247
+ If you are trying to build a whole package this is not the
248
+ right script to run: please start by reading the file 'INSTALL'.
249
+
250
+ Report bugs to <bug-automake@gnu.org>.
251
+ EOF
252
+ exit $?
253
+ ;;
254
+ -v | --v*)
255
+ echo "compile $scriptversion"
256
+ exit $?
257
+ ;;
258
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
259
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
260
+ func_cl_wrapper "$@" # Doesn't return...
261
+ ;;
262
+ esac
263
+
264
+ ofile=
265
+ cfile=
266
+
267
+ for arg
268
+ do
269
+ if test -n "$eat"; then
270
+ eat=
271
+ else
272
+ case $1 in
273
+ -o)
274
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
275
+ # So we strip '-o arg' only if arg is an object.
276
+ eat=1
277
+ case $2 in
278
+ *.o | *.obj)
279
+ ofile=$2
280
+ ;;
281
+ *)
282
+ set x "$@" -o "$2"
283
+ shift
284
+ ;;
285
+ esac
286
+ ;;
287
+ *.c)
288
+ cfile=$1
289
+ set x "$@" "$1"
290
+ shift
291
+ ;;
292
+ *)
293
+ set x "$@" "$1"
294
+ shift
295
+ ;;
296
+ esac
297
+ fi
298
+ shift
299
+ done
300
+
301
+ if test -z "$ofile" || test -z "$cfile"; then
302
+ # If no '-o' option was seen then we might have been invoked from a
303
+ # pattern rule where we don't need one. That is ok -- this is a
304
+ # normal compilation that the losing compiler can handle. If no
305
+ # '.c' file was seen then we are probably linking. That is also
306
+ # ok.
307
+ exec "$@"
308
+ fi
309
+
310
+ # Name of file we expect compiler to create.
311
+ cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
312
+
313
+ # Create the lock directory.
314
+ # Note: use '[/\\:.-]' here to ensure that we don't use the same name
315
+ # that we are using for the .o file. Also, base the name on the expected
316
+ # object file name, since that is what matters with a parallel build.
317
+ lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
318
+ while true; do
319
+ if mkdir "$lockdir" >/dev/null 2>&1; then
320
+ break
321
+ fi
322
+ sleep 1
323
+ done
324
+ # FIXME: race condition here if user kills between mkdir and trap.
325
+ trap "rmdir '$lockdir'; exit 1" 1 2 15
326
+
327
+ # Run the compile.
328
+ "$@"
329
+ ret=$?
330
+
331
+ if test -f "$cofile"; then
332
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
333
+ elif test -f "${cofile}bj"; then
334
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
335
+ fi
336
+
337
+ rmdir "$lockdir"
338
+ exit $ret
339
+
340
+ # Local Variables:
341
+ # mode: shell-script
342
+ # sh-indentation: 2
343
+ # eval: (add-hook 'before-save-hook 'time-stamp)
344
+ # time-stamp-start: "scriptversion="
345
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
346
+ # time-stamp-time-zone: "UTC0"
347
+ # time-stamp-end: "; # UTC"
348
+ # End:
@@ -1,6 +1,6 @@
1
1
  #! /bin/sh
2
2
  # Guess values for system-dependent variables and create Makefiles.
3
- # Generated by GNU Autoconf 2.71 for libffi 3.4.4.
3
+ # Generated by GNU Autoconf 2.71 for libffi 3.4.6.
4
4
  #
5
5
  # Report bugs to <http://github.com/libffi/libffi/issues>.
6
6
  #
@@ -621,8 +621,8 @@ MAKEFLAGS=
621
621
  # Identity of this package.
622
622
  PACKAGE_NAME='libffi'
623
623
  PACKAGE_TARNAME='libffi'
624
- PACKAGE_VERSION='3.4.4'
625
- PACKAGE_STRING='libffi 3.4.4'
624
+ PACKAGE_VERSION='3.4.6'
625
+ PACKAGE_STRING='libffi 3.4.6'
626
626
  PACKAGE_BUGREPORT='http://github.com/libffi/libffi/issues'
627
627
  PACKAGE_URL=''
628
628
 
@@ -1412,7 +1412,7 @@ if test "$ac_init_help" = "long"; then
1412
1412
  # Omit some internal or obsolete options to make the list less imposing.
1413
1413
  # This message is too long to be a string in the A/UX 3.1 sh.
1414
1414
  cat <<_ACEOF
1415
- \`configure' configures libffi 3.4.4 to adapt to many kinds of systems.
1415
+ \`configure' configures libffi 3.4.6 to adapt to many kinds of systems.
1416
1416
 
1417
1417
  Usage: $0 [OPTION]... [VAR=VALUE]...
1418
1418
 
@@ -1484,7 +1484,7 @@ fi
1484
1484
 
1485
1485
  if test -n "$ac_init_help"; then
1486
1486
  case $ac_init_help in
1487
- short | recursive ) echo "Configuration of libffi 3.4.4:";;
1487
+ short | recursive ) echo "Configuration of libffi 3.4.6:";;
1488
1488
  esac
1489
1489
  cat <<\_ACEOF
1490
1490
 
@@ -1620,7 +1620,7 @@ fi
1620
1620
  test -n "$ac_init_help" && exit $ac_status
1621
1621
  if $ac_init_version; then
1622
1622
  cat <<\_ACEOF
1623
- libffi configure 3.4.4
1623
+ libffi configure 3.4.6
1624
1624
  generated by GNU Autoconf 2.71
1625
1625
 
1626
1626
  Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2194,7 +2194,7 @@ cat >config.log <<_ACEOF
2194
2194
  This file contains any messages produced by compilers while
2195
2195
  running configure, to aid debugging if configure makes a mistake.
2196
2196
 
2197
- It was created by libffi $as_me 3.4.4, which was
2197
+ It was created by libffi $as_me 3.4.6, which was
2198
2198
  generated by GNU Autoconf 2.71. Invocation command line was
2199
2199
 
2200
2200
  $ $0$ac_configure_args_raw
@@ -3913,7 +3913,7 @@ fi
3913
3913
 
3914
3914
  # Define the identity of the package.
3915
3915
  PACKAGE='libffi'
3916
- VERSION='3.4.4'
3916
+ VERSION='3.4.6'
3917
3917
 
3918
3918
 
3919
3919
  printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5556,11 +5556,11 @@ if test x$ac_prog_cxx_stdcxx = xno
5556
5556
  then :
5557
5557
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
5558
5558
  printf %s "checking for $CXX option to enable C++11 features... " >&6; }
5559
- if test ${ac_cv_prog_cxx_11+y}
5559
+ if test ${ac_cv_prog_cxx_cxx11+y}
5560
5560
  then :
5561
5561
  printf %s "(cached) " >&6
5562
5562
  else $as_nop
5563
- ac_cv_prog_cxx_11=no
5563
+ ac_cv_prog_cxx_cxx11=no
5564
5564
  ac_save_CXX=$CXX
5565
5565
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5566
5566
  /* end confdefs.h. */
@@ -5602,11 +5602,11 @@ if test x$ac_prog_cxx_stdcxx = xno
5602
5602
  then :
5603
5603
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
5604
5604
  printf %s "checking for $CXX option to enable C++98 features... " >&6; }
5605
- if test ${ac_cv_prog_cxx_98+y}
5605
+ if test ${ac_cv_prog_cxx_cxx98+y}
5606
5606
  then :
5607
5607
  printf %s "(cached) " >&6
5608
5608
  else $as_nop
5609
- ac_cv_prog_cxx_98=no
5609
+ ac_cv_prog_cxx_cxx98=no
5610
5610
  ac_save_CXX=$CXX
5611
5611
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5612
5612
  /* end confdefs.h. */
@@ -19523,7 +19523,7 @@ else $as_nop
19523
19523
  ac_status=$?
19524
19524
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
19525
19525
  test $ac_status = 0; }; }; then
19526
- if $EGREP '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then
19526
+ if $EGREP '(\.hidden|\.private_extern).*foo|foo.*,hidden' conftest.s >/dev/null; then
19527
19527
  libffi_cv_hidden_visibility_attribute=yes
19528
19528
  fi
19529
19529
  fi
@@ -20588,7 +20588,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
20588
20588
  # report actual input values of CONFIG_FILES etc. instead of their
20589
20589
  # values after options handling.
20590
20590
  ac_log="
20591
- This file was extended by libffi $as_me 3.4.4, which was
20591
+ This file was extended by libffi $as_me 3.4.6, which was
20592
20592
  generated by GNU Autoconf 2.71. Invocation command line was
20593
20593
 
20594
20594
  CONFIG_FILES = $CONFIG_FILES
@@ -20656,7 +20656,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
20656
20656
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
20657
20657
  ac_cs_config='$ac_cs_config_escaped'
20658
20658
  ac_cs_version="\\
20659
- libffi config.status 3.4.4
20659
+ libffi config.status 3.4.6
20660
20660
  configured by $0, generated by GNU Autoconf 2.71,
20661
20661
  with options \\"\$ac_cs_config\\"
20662
20662
 
@@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure
2
2
 
3
3
  AC_PREREQ([2.71])
4
4
 
5
- AC_INIT([libffi],[3.4.4],[http://github.com/libffi/libffi/issues])
5
+ AC_INIT([libffi],[3.4.6],[http://github.com/libffi/libffi/issues])
6
6
  AC_CONFIG_HEADERS([fficonfig.h])
7
7
 
8
8
  AC_CANONICAL_TARGET
@@ -298,7 +298,7 @@ if test "x$GCC" = "xyes"; then
298
298
  echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
299
299
  libffi_cv_hidden_visibility_attribute=no
300
300
  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
301
- if $EGREP '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then
301
+ if $EGREP '(\.hidden|\.private_extern).*foo|foo.*,hidden' conftest.s >/dev/null; then
302
302
  libffi_cv_hidden_visibility_attribute=yes
303
303
  fi
304
304
  fi
@@ -205,7 +205,7 @@ case "${host}" in
205
205
  powerpc-*-eabi*)
206
206
  TARGET=POWERPC; TARGETDIR=powerpc
207
207
  ;;
208
- powerpc-*-beos*)
208
+ powerpc-*-beos* | powerpc-*-haiku*)
209
209
  TARGET=POWERPC; TARGETDIR=powerpc
210
210
  ;;
211
211
  powerpc-*-darwin* | powerpc64-*-darwin*)
@@ -18,7 +18,7 @@
18
18
  This manual is for libffi, a portable foreign function interface
19
19
  library.
20
20
 
21
- Copyright @copyright{} 2008--2019, 2021, 2022 Anthony Green and Red Hat, Inc.
21
+ Copyright @copyright{} 2008--2024 Anthony Green and Red Hat, Inc.
22
22
 
23
23
  Permission is hereby granted, free of charge, to any person obtaining
24
24
  a copy of this software and associated documentation files (the
@@ -1,4 +1,4 @@
1
- @set UPDATED 23 October 2022
2
- @set UPDATED-MONTH October 2022
3
- @set EDITION 3.4.4
4
- @set VERSION 3.4.4
1
+ @set UPDATED 15 February 2024
2
+ @set UPDATED-MONTH February 2024
3
+ @set EDITION 3.4.6
4
+ @set VERSION 3.4.6
@@ -1,6 +1,6 @@
1
1
  /* -----------------------------------------------------------------*-C-*-
2
2
  libffi @VERSION@
3
- - Copyright (c) 2011, 2014, 2019, 2021, 2022 Anthony Green
3
+ - Copyright (c) 2011, 2014, 2019, 2021, 2022, 2024 Anthony Green
4
4
  - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person
@@ -220,21 +220,12 @@ FFI_EXTERN ffi_type ffi_type_sint64;
220
220
  FFI_EXTERN ffi_type ffi_type_float;
221
221
  FFI_EXTERN ffi_type ffi_type_double;
222
222
  FFI_EXTERN ffi_type ffi_type_pointer;
223
-
224
- #if @HAVE_LONG_DOUBLE@
225
223
  FFI_EXTERN ffi_type ffi_type_longdouble;
226
- #else
227
- #define ffi_type_longdouble ffi_type_double
228
- #endif
229
224
 
230
225
  #ifdef FFI_TARGET_HAS_COMPLEX_TYPE
231
226
  FFI_EXTERN ffi_type ffi_type_complex_float;
232
227
  FFI_EXTERN ffi_type ffi_type_complex_double;
233
- #if @HAVE_LONG_DOUBLE@
234
228
  FFI_EXTERN ffi_type ffi_type_complex_longdouble;
235
- #else
236
- #define ffi_type_complex_longdouble ffi_type_complex_double
237
- #endif
238
229
  #endif
239
230
  #endif /* LIBFFI_HIDE_BASIC_TYPES */
240
231
 
@@ -464,7 +455,7 @@ ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
464
455
 
465
456
  #endif /* FFI_CLOSURES */
466
457
 
467
- #if FFI_GO_CLOSURES
458
+ #ifdef FFI_GO_CLOSURES
468
459
 
469
460
  typedef struct {
470
461
  void *tramp;
@@ -49,8 +49,10 @@ extern "C" {
49
49
  # endif
50
50
  # endif
51
51
  # define MAYBE_UNUSED __attribute__((__unused__))
52
+ # define NORETURN __attribute__((__noreturn__))
52
53
  #else
53
54
  # define MAYBE_UNUSED
55
+ # define NORETURN
54
56
  # if HAVE_ALLOCA_H
55
57
  # include <alloca.h>
56
58
  # else
@@ -82,9 +84,9 @@ char *alloca ();
82
84
  #endif
83
85
 
84
86
  #ifdef FFI_DEBUG
85
- void ffi_assert(char *expr, char *file, int line);
87
+ NORETURN void ffi_assert(const char *expr, const char *file, int line);
86
88
  void ffi_stop_here(void);
87
- void ffi_type_test(ffi_type *a, char *file, int line);
89
+ void ffi_type_test(ffi_type *a, const char *file, int line);
88
90
 
89
91
  #define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__))
90
92
  #define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l)))
@@ -33,7 +33,10 @@ LIBFFI_BASE_8.0 {
33
33
  ffi_raw_to_ptrarray;
34
34
  ffi_raw_size;
35
35
 
36
+ #if !FFI_NATIVE_RAW_API
36
37
  ffi_java_raw_call;
38
+ #endif
39
+
37
40
  ffi_java_ptrarray_to_raw;
38
41
  ffi_java_raw_to_ptrarray;
39
42
  ffi_java_raw_size;
@@ -62,8 +65,10 @@ LIBFFI_CLOSURE_8.0 {
62
65
  ffi_prep_closure_loc;
63
66
  ffi_prep_raw_closure;
64
67
  ffi_prep_raw_closure_loc;
68
+ #if !FFI_NATIVE_RAW_API
65
69
  ffi_prep_java_raw_closure;
66
70
  ffi_prep_java_raw_closure_loc;
71
+ #endif
67
72
  } LIBFFI_BASE_8.0;
68
73
  #endif
69
74
 
@@ -26,4 +26,4 @@
26
26
  # release, then set age to 0.
27
27
  #
28
28
  # CURRENT:REVISION:AGE
29
- 9:2:1
29
+ 9:4:1
@@ -31,7 +31,7 @@
31
31
 
32
32
  PROGRAM=libtool
33
33
  PACKAGE=libtool
34
- VERSION="2.4.7 Debian-2.4.7-5"
34
+ VERSION="2.4.7 Debian-2.4.7-7build1"
35
35
  package_revision=2.4.7
36
36
 
37
37
 
@@ -572,27 +572,15 @@ func_require_term_colors ()
572
572
  # ---------------------
573
573
  # Append VALUE onto the existing contents of VAR.
574
574
 
575
- # We should try to minimise forks, especially on Windows where they are
576
- # unreasonably slow, so skip the feature probes when bash or zsh are
577
- # being used:
578
- if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
579
- : ${_G_HAVE_ARITH_OP="yes"}
580
- : ${_G_HAVE_XSI_OPS="yes"}
581
- # The += operator was introduced in bash 3.1
582
- case $BASH_VERSION in
583
- [12].* | 3.0 | 3.0*) ;;
584
- *)
585
- : ${_G_HAVE_PLUSEQ_OP="yes"}
586
- ;;
587
- esac
588
- fi
589
-
590
575
  # _G_HAVE_PLUSEQ_OP
591
576
  # Can be empty, in which case the shell is probed, "yes" if += is
592
577
  # useable or anything else if it does not work.
593
- test -z "$_G_HAVE_PLUSEQ_OP" \
594
- && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
595
- && _G_HAVE_PLUSEQ_OP=yes
578
+ if test -z "$_G_HAVE_PLUSEQ_OP" && \
579
+ __PLUSEQ_TEST="a" && \
580
+ __PLUSEQ_TEST+=" b" 2>/dev/null && \
581
+ test "a b" = "$__PLUSEQ_TEST"; then
582
+ _G_HAVE_PLUSEQ_OP=yes
583
+ fi
596
584
 
597
585
  if test yes = "$_G_HAVE_PLUSEQ_OP"
598
586
  then
@@ -2308,7 +2296,7 @@ include the following information:
2308
2296
  compiler: $LTCC
2309
2297
  compiler flags: $LTCFLAGS
2310
2298
  linker: $LD (gnu? $with_gnu_ld)
2311
- version: $progname $scriptversion Debian-2.4.7-5
2299
+ version: $progname $scriptversion Debian-2.4.7-7build1
2312
2300
  automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2313
2301
  autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2314
2302
 
@@ -429,7 +429,7 @@ ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
429
429
 
430
430
  #endif /* FFI_CLOSURES */
431
431
 
432
- #if FFI_GO_CLOSURES
432
+ #ifdef FFI_GO_CLOSURES
433
433
 
434
434
  typedef struct {
435
435
  void *tramp;