ffi 1.17.0 → 1.17.2

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 (78) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -0
  4. data/Gemfile +3 -1
  5. data/Rakefile +2 -2
  6. data/ext/ffi_c/Function.c +52 -34
  7. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +48 -60
  8. data/ext/ffi_c/libffi/Makefile.am +4 -3
  9. data/ext/ffi_c/libffi/Makefile.in +5 -25
  10. data/ext/ffi_c/libffi/README.md +19 -2
  11. data/ext/ffi_c/libffi/acinclude.m4 +6 -0
  12. data/ext/ffi_c/libffi/config.guess +80 -22
  13. data/ext/ffi_c/libffi/config.sub +161 -80
  14. data/ext/ffi_c/libffi/configure +41 -25
  15. data/ext/ffi_c/libffi/configure.ac +9 -8
  16. data/ext/ffi_c/libffi/configure.host +0 -5
  17. data/ext/ffi_c/libffi/doc/Makefile.in +1 -0
  18. data/ext/ffi_c/libffi/doc/libffi.texi +3 -3
  19. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  20. data/ext/ffi_c/libffi/fficonfig.h.in +3 -3
  21. data/ext/ffi_c/libffi/include/Makefile.in +1 -0
  22. data/ext/ffi_c/libffi/include/ffi_cfi.h +2 -0
  23. data/ext/ffi_c/libffi/include/ffi_common.h +17 -0
  24. data/ext/ffi_c/libffi/man/Makefile.in +1 -0
  25. data/ext/ffi_c/libffi/src/aarch64/ffi.c +7 -4
  26. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +2 -2
  27. data/ext/ffi_c/libffi/src/aarch64/internal.h +63 -17
  28. data/ext/ffi_c/libffi/src/aarch64/sysv.S +16 -12
  29. data/ext/ffi_c/libffi/src/arc/arcompact.S +2 -2
  30. data/ext/ffi_c/libffi/src/arc/ffi.c +6 -2
  31. data/ext/ffi_c/libffi/src/closures.c +3 -3
  32. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -0
  33. data/ext/ffi_c/libffi/src/mips/ffitarget.h +2 -4
  34. data/ext/ffi_c/libffi/src/mips/n32.S +4 -0
  35. data/ext/ffi_c/libffi/src/mips/o32.S +4 -0
  36. data/ext/ffi_c/libffi/src/or1k/ffi.c +2 -2
  37. data/ext/ffi_c/libffi/src/powerpc/ffi.c +13 -0
  38. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +26 -19
  39. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +26 -16
  40. data/ext/ffi_c/libffi/src/powerpc/internal.h +10 -0
  41. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +47 -0
  42. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +24 -0
  43. data/ext/ffi_c/libffi/src/prep_cif.c +1 -4
  44. data/ext/ffi_c/libffi/src/s390/ffi.c +28 -1
  45. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  46. data/ext/ffi_c/libffi/src/s390/sysv.S +38 -0
  47. data/ext/ffi_c/libffi/src/sparc/ffi.c +16 -0
  48. data/ext/ffi_c/libffi/src/wasm32/ffi.c +10 -262
  49. data/ext/ffi_c/libffi/src/x86/ffi.c +4 -1
  50. data/ext/ffi_c/libffi/src/x86/ffi64.c +4 -1
  51. data/ext/ffi_c/libffi/testsuite/Makefile.am +4 -3
  52. data/ext/ffi_c/libffi/testsuite/Makefile.in +5 -3
  53. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +4 -24
  54. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +8 -25
  55. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +3 -28
  56. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +2 -2
  57. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +2 -2
  58. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +2 -2
  59. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +2 -2
  60. data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +54 -0
  61. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +88 -0
  62. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +1 -0
  63. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +1 -0
  64. data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +31 -0
  65. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +1 -1
  66. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +1 -1
  67. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +1 -1
  68. data/lib/ffi/ffi.rb +59 -0
  69. data/lib/ffi/version.rb +1 -1
  70. data/sig/ffi/auto_pointer.rbs +0 -1
  71. data/sig/ffi/library.rbs +1 -1
  72. data.tar.gz.sig +0 -0
  73. metadata +18 -18
  74. metadata.gz.sig +0 -0
  75. data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
  76. data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
  77. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
  78. data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
@@ -1,10 +1,10 @@
1
1
  #! /bin/sh
2
2
  # Attempt to guess a canonical system name.
3
- # Copyright 1992-2022 Free Software Foundation, Inc.
3
+ # Copyright 1992-2024 Free Software Foundation, Inc.
4
4
 
5
5
  # shellcheck disable=SC2006,SC2268 # see below for rationale
6
6
 
7
- timestamp='2022-01-09'
7
+ timestamp='2024-01-01'
8
8
 
9
9
  # This file is free software; you can redistribute it and/or modify it
10
10
  # under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
47
47
  usage="\
48
48
  Usage: $0 [OPTION]
49
49
 
50
- Output the configuration name of the system \`$me' is run on.
50
+ Output the configuration name of the system '$me' is run on.
51
51
 
52
52
  Options:
53
53
  -h, --help print this help, then exit
@@ -60,13 +60,13 @@ version="\
60
60
  GNU config.guess ($timestamp)
61
61
 
62
62
  Originally written by Per Bothner.
63
- Copyright 1992-2022 Free Software Foundation, Inc.
63
+ Copyright 1992-2024 Free Software Foundation, Inc.
64
64
 
65
65
  This is free software; see the source for copying conditions. There is NO
66
66
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
67
67
 
68
68
  help="
69
- Try \`$me --help' for more information."
69
+ Try '$me --help' for more information."
70
70
 
71
71
  # Parse command line
72
72
  while test $# -gt 0 ; do
@@ -102,8 +102,8 @@ GUESS=
102
102
  # temporary files to be created and, as you can see below, it is a
103
103
  # headache to deal with in a portable fashion.
104
104
 
105
- # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
106
- # use `HOST_CC' if defined, but it is deprecated.
105
+ # Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
106
+ # use 'HOST_CC' if defined, but it is deprecated.
107
107
 
108
108
  # Portable tmp directory creation inspired by the Autoconf team.
109
109
 
@@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
155
155
 
156
156
  set_cc_for_build
157
157
  cat <<-EOF > "$dummy.c"
158
+ #if defined(__ANDROID__)
159
+ LIBC=android
160
+ #else
158
161
  #include <features.h>
159
162
  #if defined(__UCLIBC__)
160
163
  LIBC=uclibc
@@ -162,6 +165,8 @@ Linux|GNU|GNU/*)
162
165
  LIBC=dietlibc
163
166
  #elif defined(__GLIBC__)
164
167
  LIBC=gnu
168
+ #elif defined(__LLVM_LIBC__)
169
+ LIBC=llvm
165
170
  #else
166
171
  #include <stdarg.h>
167
172
  /* First heuristic to detect musl libc. */
@@ -169,6 +174,7 @@ Linux|GNU|GNU/*)
169
174
  LIBC=musl
170
175
  #endif
171
176
  #endif
177
+ #endif
172
178
  EOF
173
179
  cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
174
180
  eval "$cc_set_libc"
@@ -459,7 +465,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
459
465
  UNAME_RELEASE=`uname -v`
460
466
  ;;
461
467
  esac
462
- # Japanese Language versions have a version number like `4.1.3-JL'.
468
+ # Japanese Language versions have a version number like '4.1.3-JL'.
463
469
  SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
464
470
  GUESS=sparc-sun-sunos$SUN_REL
465
471
  ;;
@@ -904,7 +910,7 @@ EOF
904
910
  fi
905
911
  ;;
906
912
  *:FreeBSD:*:*)
907
- UNAME_PROCESSOR=`/usr/bin/uname -p`
913
+ UNAME_PROCESSOR=`uname -p`
908
914
  case $UNAME_PROCESSOR in
909
915
  amd64)
910
916
  UNAME_PROCESSOR=x86_64 ;;
@@ -966,11 +972,37 @@ EOF
966
972
  GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
967
973
  GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
968
974
  ;;
975
+ x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
976
+ GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
977
+ ;;
978
+ *:[Mm]anagarm:*:*)
979
+ GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
980
+ ;;
969
981
  *:Minix:*:*)
970
982
  GUESS=$UNAME_MACHINE-unknown-minix
971
983
  ;;
972
984
  aarch64:Linux:*:*)
973
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
985
+ set_cc_for_build
986
+ CPU=$UNAME_MACHINE
987
+ LIBCABI=$LIBC
988
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
989
+ ABI=64
990
+ sed 's/^ //' << EOF > "$dummy.c"
991
+ #ifdef __ARM_EABI__
992
+ #ifdef __ARM_PCS_VFP
993
+ ABI=eabihf
994
+ #else
995
+ ABI=eabi
996
+ #endif
997
+ #endif
998
+ EOF
999
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
1000
+ eval "$cc_set_abi"
1001
+ case $ABI in
1002
+ eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
1003
+ esac
1004
+ fi
1005
+ GUESS=$CPU-unknown-linux-$LIBCABI
974
1006
  ;;
975
1007
  aarch64_be:Linux:*:*)
976
1008
  UNAME_MACHINE=aarch64_be
@@ -1036,7 +1068,16 @@ EOF
1036
1068
  k1om:Linux:*:*)
1037
1069
  GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1038
1070
  ;;
1039
- loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
1071
+ kvx:Linux:*:*)
1072
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1073
+ ;;
1074
+ kvx:cos:*:*)
1075
+ GUESS=$UNAME_MACHINE-unknown-cos
1076
+ ;;
1077
+ kvx:mbr:*:*)
1078
+ GUESS=$UNAME_MACHINE-unknown-mbr
1079
+ ;;
1080
+ loongarch32:Linux:*:* | loongarch64:Linux:*:*)
1040
1081
  GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1041
1082
  ;;
1042
1083
  m32r*:Linux:*:*)
@@ -1151,16 +1192,27 @@ EOF
1151
1192
  ;;
1152
1193
  x86_64:Linux:*:*)
1153
1194
  set_cc_for_build
1195
+ CPU=$UNAME_MACHINE
1154
1196
  LIBCABI=$LIBC
1155
1197
  if test "$CC_FOR_BUILD" != no_compiler_found; then
1156
- if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
1157
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1158
- grep IS_X32 >/dev/null
1159
- then
1160
- LIBCABI=${LIBC}x32
1161
- fi
1198
+ ABI=64
1199
+ sed 's/^ //' << EOF > "$dummy.c"
1200
+ #ifdef __i386__
1201
+ ABI=x86
1202
+ #else
1203
+ #ifdef __ILP32__
1204
+ ABI=x32
1205
+ #endif
1206
+ #endif
1207
+ EOF
1208
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
1209
+ eval "$cc_set_abi"
1210
+ case $ABI in
1211
+ x86) CPU=i686 ;;
1212
+ x32) LIBCABI=${LIBC}x32 ;;
1213
+ esac
1162
1214
  fi
1163
- GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
1215
+ GUESS=$CPU-pc-linux-$LIBCABI
1164
1216
  ;;
1165
1217
  xtensa*:Linux:*:*)
1166
1218
  GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
@@ -1180,7 +1232,7 @@ EOF
1180
1232
  GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
1181
1233
  ;;
1182
1234
  i*86:OS/2:*:*)
1183
- # If we were able to find `uname', then EMX Unix compatibility
1235
+ # If we were able to find 'uname', then EMX Unix compatibility
1184
1236
  # is probably installed.
1185
1237
  GUESS=$UNAME_MACHINE-pc-os2-emx
1186
1238
  ;;
@@ -1321,7 +1373,7 @@ EOF
1321
1373
  GUESS=ns32k-sni-sysv
1322
1374
  fi
1323
1375
  ;;
1324
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1376
+ PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
1325
1377
  # says <Richard.M.Bartel@ccMail.Census.GOV>
1326
1378
  GUESS=i586-unisys-sysv4
1327
1379
  ;;
@@ -1367,8 +1419,11 @@ EOF
1367
1419
  BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
1368
1420
  GUESS=i586-pc-haiku
1369
1421
  ;;
1370
- x86_64:Haiku:*:*)
1371
- GUESS=x86_64-unknown-haiku
1422
+ ppc:Haiku:*:*) # Haiku running on Apple PowerPC
1423
+ GUESS=powerpc-apple-haiku
1424
+ ;;
1425
+ *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
1426
+ GUESS=$UNAME_MACHINE-unknown-haiku
1372
1427
  ;;
1373
1428
  SX-4:SUPER-UX:*:*)
1374
1429
  GUESS=sx4-nec-superux$UNAME_RELEASE
@@ -1540,6 +1595,9 @@ EOF
1540
1595
  *:Unleashed:*:*)
1541
1596
  GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
1542
1597
  ;;
1598
+ *:Ironclad:*:*)
1599
+ GUESS=$UNAME_MACHINE-unknown-ironclad
1600
+ ;;
1543
1601
  esac
1544
1602
 
1545
1603
  # Do we have a guess based on uname results?