ffi 1.17.1 → 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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +3 -1
- data/Rakefile +1 -1
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +48 -60
- data/ext/ffi_c/libffi/Makefile.am +4 -3
- data/ext/ffi_c/libffi/Makefile.in +5 -25
- data/ext/ffi_c/libffi/README.md +19 -2
- data/ext/ffi_c/libffi/acinclude.m4 +6 -0
- data/ext/ffi_c/libffi/config.guess +80 -22
- data/ext/ffi_c/libffi/config.sub +161 -80
- data/ext/ffi_c/libffi/configure +968 -1266
- data/ext/ffi_c/libffi/configure.ac +9 -8
- data/ext/ffi_c/libffi/configure.host +0 -5
- data/ext/ffi_c/libffi/doc/Makefile.in +1 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +3 -3
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +9 -9
- data/ext/ffi_c/libffi/include/Makefile.in +1 -0
- data/ext/ffi_c/libffi/include/ffi_cfi.h +2 -0
- data/ext/ffi_c/libffi/include/ffi_common.h +17 -0
- data/ext/ffi_c/libffi/man/Makefile.in +1 -0
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +7 -4
- data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +2 -2
- data/ext/ffi_c/libffi/src/aarch64/internal.h +63 -17
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +16 -12
- data/ext/ffi_c/libffi/src/arc/arcompact.S +2 -2
- data/ext/ffi_c/libffi/src/arc/ffi.c +6 -2
- data/ext/ffi_c/libffi/src/closures.c +3 -3
- data/ext/ffi_c/libffi/src/dlmalloc.c +1 -0
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +2 -4
- data/ext/ffi_c/libffi/src/mips/n32.S +4 -0
- data/ext/ffi_c/libffi/src/mips/o32.S +4 -0
- data/ext/ffi_c/libffi/src/or1k/ffi.c +2 -2
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +13 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +26 -19
- data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +26 -16
- data/ext/ffi_c/libffi/src/powerpc/internal.h +10 -0
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +47 -0
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +24 -0
- data/ext/ffi_c/libffi/src/prep_cif.c +1 -4
- data/ext/ffi_c/libffi/src/s390/ffi.c +28 -1
- data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
- data/ext/ffi_c/libffi/src/s390/sysv.S +38 -0
- data/ext/ffi_c/libffi/src/sparc/ffi.c +16 -0
- data/ext/ffi_c/libffi/src/wasm32/ffi.c +10 -262
- data/ext/ffi_c/libffi/src/x86/ffi.c +4 -1
- data/ext/ffi_c/libffi/src/x86/ffi64.c +4 -1
- data/ext/ffi_c/libffi/testsuite/Makefile.am +4 -3
- data/ext/ffi_c/libffi/testsuite/Makefile.in +5 -3
- data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +4 -24
- data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +8 -25
- data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +3 -28
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +54 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +88 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +31 -0
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +1 -1
- data/lib/ffi/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +6 -6
- metadata.gz.sig +0 -0
- data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
- data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
- data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
- data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
data/ext/ffi_c/libffi/config.sub
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#! /bin/sh
|
2
2
|
# Configuration validation subroutine script.
|
3
|
-
# Copyright 1992-
|
3
|
+
# Copyright 1992-2024 Free Software Foundation, Inc.
|
4
4
|
|
5
5
|
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
6
6
|
|
7
|
-
timestamp='
|
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
|
@@ -76,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|
76
76
|
version="\
|
77
77
|
GNU config.sub ($timestamp)
|
78
78
|
|
79
|
-
Copyright 1992-
|
79
|
+
Copyright 1992-2024 Free Software Foundation, Inc.
|
80
80
|
|
81
81
|
This is free software; see the source for copying conditions. There is NO
|
82
82
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
83
83
|
|
84
84
|
help="
|
85
|
-
Try
|
85
|
+
Try '$me --help' for more information."
|
86
86
|
|
87
87
|
# Parse command line
|
88
88
|
while test $# -gt 0 ; do
|
@@ -130,7 +130,7 @@ IFS=$saved_IFS
|
|
130
130
|
# Separate into logical components for further validation
|
131
131
|
case $1 in
|
132
132
|
*-*-*-*-*)
|
133
|
-
echo Invalid configuration
|
133
|
+
echo "Invalid configuration '$1': more than four components" >&2
|
134
134
|
exit 1
|
135
135
|
;;
|
136
136
|
*-*-*-*)
|
@@ -145,7 +145,8 @@ case $1 in
|
|
145
145
|
nto-qnx* | linux-* | uclinux-uclibc* \
|
146
146
|
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
|
147
147
|
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
|
148
|
-
| storm-chaos* | os2-emx* | rtmk-nova*
|
148
|
+
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
|
149
|
+
| windows-* )
|
149
150
|
basic_machine=$field1
|
150
151
|
basic_os=$maybe_os
|
151
152
|
;;
|
@@ -943,7 +944,7 @@ $basic_machine
|
|
943
944
|
EOF
|
944
945
|
IFS=$saved_IFS
|
945
946
|
;;
|
946
|
-
# We use
|
947
|
+
# We use 'pc' rather than 'unknown'
|
947
948
|
# because (1) that's what they normally are, and
|
948
949
|
# (2) the word "unknown" tends to confuse beginning users.
|
949
950
|
i*86 | x86_64)
|
@@ -1075,7 +1076,7 @@ case $cpu-$vendor in
|
|
1075
1076
|
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
1076
1077
|
cpu=i586
|
1077
1078
|
;;
|
1078
|
-
pentiumpro-* | p6-* | 6x86-* | athlon-* |
|
1079
|
+
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
|
1079
1080
|
cpu=i686
|
1080
1081
|
;;
|
1081
1082
|
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
@@ -1180,7 +1181,7 @@ case $cpu-$vendor in
|
|
1180
1181
|
case $cpu in
|
1181
1182
|
1750a | 580 \
|
1182
1183
|
| a29k \
|
1183
|
-
| aarch64 | aarch64_be \
|
1184
|
+
| aarch64 | aarch64_be | aarch64c | arm64ec \
|
1184
1185
|
| abacus \
|
1185
1186
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
|
1186
1187
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
|
@@ -1199,50 +1200,29 @@ case $cpu-$vendor in
|
|
1199
1200
|
| d10v | d30v | dlx | dsp16xx \
|
1200
1201
|
| e2k | elxsi | epiphany \
|
1201
1202
|
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
|
1203
|
+
| javascript \
|
1202
1204
|
| h8300 | h8500 \
|
1203
1205
|
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
1204
1206
|
| hexagon \
|
1205
1207
|
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
|
1206
1208
|
| ip2k | iq2000 \
|
1207
1209
|
| k1om \
|
1210
|
+
| kvx \
|
1208
1211
|
| le32 | le64 \
|
1209
1212
|
| lm32 \
|
1210
|
-
| loongarch32 | loongarch64
|
1213
|
+
| loongarch32 | loongarch64 \
|
1211
1214
|
| m32c | m32r | m32rle \
|
1212
1215
|
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
|
1213
1216
|
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
|
1214
1217
|
| m88110 | m88k | maxq | mb | mcore | mep | metag \
|
1215
1218
|
| microblaze | microblazeel \
|
1216
|
-
| mips
|
1217
|
-
| mips16 \
|
1218
|
-
| mips64 | mips64eb | mips64el \
|
1219
|
-
| mips64octeon | mips64octeonel \
|
1220
|
-
| mips64orion | mips64orionel \
|
1221
|
-
| mips64r5900 | mips64r5900el \
|
1222
|
-
| mips64vr | mips64vrel \
|
1223
|
-
| mips64vr4100 | mips64vr4100el \
|
1224
|
-
| mips64vr4300 | mips64vr4300el \
|
1225
|
-
| mips64vr5000 | mips64vr5000el \
|
1226
|
-
| mips64vr5900 | mips64vr5900el \
|
1227
|
-
| mipsisa32 | mipsisa32el \
|
1228
|
-
| mipsisa32r2 | mipsisa32r2el \
|
1229
|
-
| mipsisa32r3 | mipsisa32r3el \
|
1230
|
-
| mipsisa32r5 | mipsisa32r5el \
|
1231
|
-
| mipsisa32r6 | mipsisa32r6el \
|
1232
|
-
| mipsisa64 | mipsisa64el \
|
1233
|
-
| mipsisa64r2 | mipsisa64r2el \
|
1234
|
-
| mipsisa64r3 | mipsisa64r3el \
|
1235
|
-
| mipsisa64r5 | mipsisa64r5el \
|
1236
|
-
| mipsisa64r6 | mipsisa64r6el \
|
1237
|
-
| mipsisa64sb1 | mipsisa64sb1el \
|
1238
|
-
| mipsisa64sr71k | mipsisa64sr71kel \
|
1239
|
-
| mipsr5900 | mipsr5900el \
|
1240
|
-
| mipstx39 | mipstx39el \
|
1219
|
+
| mips* \
|
1241
1220
|
| mmix \
|
1242
1221
|
| mn10200 | mn10300 \
|
1243
1222
|
| moxie \
|
1244
1223
|
| mt \
|
1245
1224
|
| msp430 \
|
1225
|
+
| nanomips* \
|
1246
1226
|
| nds32 | nds32le | nds32be \
|
1247
1227
|
| nfp \
|
1248
1228
|
| nios | nios2 | nios2eb | nios2el \
|
@@ -1274,6 +1254,7 @@ case $cpu-$vendor in
|
|
1274
1254
|
| ubicom32 \
|
1275
1255
|
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
|
1276
1256
|
| vax \
|
1257
|
+
| vc4 \
|
1277
1258
|
| visium \
|
1278
1259
|
| w65 \
|
1279
1260
|
| wasm32 | wasm64 \
|
@@ -1285,7 +1266,7 @@ case $cpu-$vendor in
|
|
1285
1266
|
;;
|
1286
1267
|
|
1287
1268
|
*)
|
1288
|
-
echo Invalid configuration
|
1269
|
+
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
|
1289
1270
|
exit 1
|
1290
1271
|
;;
|
1291
1272
|
esac
|
@@ -1306,11 +1287,12 @@ esac
|
|
1306
1287
|
|
1307
1288
|
# Decode manufacturer-specific aliases for certain operating systems.
|
1308
1289
|
|
1309
|
-
if test x$basic_os != x
|
1290
|
+
if test x"$basic_os" != x
|
1310
1291
|
then
|
1311
1292
|
|
1312
1293
|
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
|
1313
1294
|
# set os.
|
1295
|
+
obj=
|
1314
1296
|
case $basic_os in
|
1315
1297
|
gnu/linux*)
|
1316
1298
|
kernel=linux
|
@@ -1341,6 +1323,10 @@ EOF
|
|
1341
1323
|
kernel=linux
|
1342
1324
|
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
|
1343
1325
|
;;
|
1326
|
+
managarm*)
|
1327
|
+
kernel=managarm
|
1328
|
+
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
|
1329
|
+
;;
|
1344
1330
|
*)
|
1345
1331
|
kernel=
|
1346
1332
|
os=$basic_os
|
@@ -1506,10 +1492,16 @@ case $os in
|
|
1506
1492
|
os=eabi
|
1507
1493
|
;;
|
1508
1494
|
*)
|
1509
|
-
os=
|
1495
|
+
os=
|
1496
|
+
obj=elf
|
1510
1497
|
;;
|
1511
1498
|
esac
|
1512
1499
|
;;
|
1500
|
+
aout* | coff* | elf* | pe*)
|
1501
|
+
# These are machine code file formats, not OSes
|
1502
|
+
obj=$os
|
1503
|
+
os=
|
1504
|
+
;;
|
1513
1505
|
*)
|
1514
1506
|
# No normalization, but not necessarily accepted, that comes below.
|
1515
1507
|
;;
|
@@ -1528,12 +1520,15 @@ else
|
|
1528
1520
|
# system, and we'll never get to this point.
|
1529
1521
|
|
1530
1522
|
kernel=
|
1523
|
+
obj=
|
1531
1524
|
case $cpu-$vendor in
|
1532
1525
|
score-*)
|
1533
|
-
os=
|
1526
|
+
os=
|
1527
|
+
obj=elf
|
1534
1528
|
;;
|
1535
1529
|
spu-*)
|
1536
|
-
os=
|
1530
|
+
os=
|
1531
|
+
obj=elf
|
1537
1532
|
;;
|
1538
1533
|
*-acorn)
|
1539
1534
|
os=riscix1.2
|
@@ -1543,28 +1538,35 @@ case $cpu-$vendor in
|
|
1543
1538
|
os=gnu
|
1544
1539
|
;;
|
1545
1540
|
arm*-semi)
|
1546
|
-
os=
|
1541
|
+
os=
|
1542
|
+
obj=aout
|
1547
1543
|
;;
|
1548
1544
|
c4x-* | tic4x-*)
|
1549
|
-
os=
|
1545
|
+
os=
|
1546
|
+
obj=coff
|
1550
1547
|
;;
|
1551
1548
|
c8051-*)
|
1552
|
-
os=
|
1549
|
+
os=
|
1550
|
+
obj=elf
|
1553
1551
|
;;
|
1554
1552
|
clipper-intergraph)
|
1555
1553
|
os=clix
|
1556
1554
|
;;
|
1557
1555
|
hexagon-*)
|
1558
|
-
os=
|
1556
|
+
os=
|
1557
|
+
obj=elf
|
1559
1558
|
;;
|
1560
1559
|
tic54x-*)
|
1561
|
-
os=
|
1560
|
+
os=
|
1561
|
+
obj=coff
|
1562
1562
|
;;
|
1563
1563
|
tic55x-*)
|
1564
|
-
os=
|
1564
|
+
os=
|
1565
|
+
obj=coff
|
1565
1566
|
;;
|
1566
1567
|
tic6x-*)
|
1567
|
-
os=
|
1568
|
+
os=
|
1569
|
+
obj=coff
|
1568
1570
|
;;
|
1569
1571
|
# This must come before the *-dec entry.
|
1570
1572
|
pdp10-*)
|
@@ -1586,19 +1588,24 @@ case $cpu-$vendor in
|
|
1586
1588
|
os=sunos3
|
1587
1589
|
;;
|
1588
1590
|
m68*-cisco)
|
1589
|
-
os=
|
1591
|
+
os=
|
1592
|
+
obj=aout
|
1590
1593
|
;;
|
1591
1594
|
mep-*)
|
1592
|
-
os=
|
1595
|
+
os=
|
1596
|
+
obj=elf
|
1593
1597
|
;;
|
1594
1598
|
mips*-cisco)
|
1595
|
-
os=
|
1599
|
+
os=
|
1600
|
+
obj=elf
|
1596
1601
|
;;
|
1597
|
-
mips*-*)
|
1598
|
-
os=
|
1602
|
+
mips*-*|nanomips*-*)
|
1603
|
+
os=
|
1604
|
+
obj=elf
|
1599
1605
|
;;
|
1600
1606
|
or32-*)
|
1601
|
-
os=
|
1607
|
+
os=
|
1608
|
+
obj=coff
|
1602
1609
|
;;
|
1603
1610
|
*-tti) # must be before sparc entry or we get the wrong os.
|
1604
1611
|
os=sysv3
|
@@ -1607,7 +1614,8 @@ case $cpu-$vendor in
|
|
1607
1614
|
os=sunos4.1.1
|
1608
1615
|
;;
|
1609
1616
|
pru-*)
|
1610
|
-
os=
|
1617
|
+
os=
|
1618
|
+
obj=elf
|
1611
1619
|
;;
|
1612
1620
|
*-be)
|
1613
1621
|
os=beos
|
@@ -1688,10 +1696,12 @@ case $cpu-$vendor in
|
|
1688
1696
|
os=uxpv
|
1689
1697
|
;;
|
1690
1698
|
*-rom68k)
|
1691
|
-
os=
|
1699
|
+
os=
|
1700
|
+
obj=coff
|
1692
1701
|
;;
|
1693
1702
|
*-*bug)
|
1694
|
-
os=
|
1703
|
+
os=
|
1704
|
+
obj=coff
|
1695
1705
|
;;
|
1696
1706
|
*-apple)
|
1697
1707
|
os=macos
|
@@ -1709,10 +1719,11 @@ esac
|
|
1709
1719
|
|
1710
1720
|
fi
|
1711
1721
|
|
1712
|
-
# Now, validate our (potentially fixed-up) OS.
|
1722
|
+
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
|
1723
|
+
|
1713
1724
|
case $os in
|
1714
1725
|
# Sometimes we do "kernel-libc", so those need to count as OSes.
|
1715
|
-
musl* | newlib* | relibc* | uclibc*)
|
1726
|
+
llvm* | musl* | newlib* | relibc* | uclibc*)
|
1716
1727
|
;;
|
1717
1728
|
# Likewise for "kernel-abi"
|
1718
1729
|
eabi* | gnueabi*)
|
@@ -1720,6 +1731,9 @@ case $os in
|
|
1720
1731
|
# VxWorks passes extra cpu info in the 4th filed.
|
1721
1732
|
simlinux | simwindows | spe)
|
1722
1733
|
;;
|
1734
|
+
# See `case $cpu-$os` validation below
|
1735
|
+
ghcjs)
|
1736
|
+
;;
|
1723
1737
|
# Now accept the basic system types.
|
1724
1738
|
# The portable systems comes first.
|
1725
1739
|
# Each alternative MUST end in a * to match a version number.
|
@@ -1728,7 +1742,7 @@ case $os in
|
|
1728
1742
|
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
|
1729
1743
|
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
|
1730
1744
|
| hiux* | abug | nacl* | netware* | windows* \
|
1731
|
-
| os9* | macos* | osx* | ios* |
|
1745
|
+
| os9* | macos* | osx* | ios* | tvos* | watchos* \
|
1732
1746
|
| mpw* | magic* | mmixware* | mon960* | lnews* \
|
1733
1747
|
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
|
1734
1748
|
| aos* | aros* | cloudabi* | sortix* | twizzler* \
|
@@ -1737,11 +1751,11 @@ case $os in
|
|
1737
1751
|
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
|
1738
1752
|
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
|
1739
1753
|
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
|
1740
|
-
| bosx* | nextstep* | cxux* |
|
1741
|
-
| ptx* |
|
1754
|
+
| bosx* | nextstep* | cxux* | oabi* \
|
1755
|
+
| ptx* | ecoff* | winnt* | domain* | vsta* \
|
1742
1756
|
| udi* | lites* | ieee* | go32* | aux* | hcos* \
|
1743
1757
|
| chorusrdb* | cegcc* | glidix* | serenity* \
|
1744
|
-
| cygwin* | msys* |
|
1758
|
+
| cygwin* | msys* | moss* | proelf* | rtems* \
|
1745
1759
|
| midipix* | mingw32* | mingw64* | mint* \
|
1746
1760
|
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
|
1747
1761
|
| interix* | uwin* | mks* | rhapsody* | darwin* \
|
@@ -1754,51 +1768,118 @@ case $os in
|
|
1754
1768
|
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
1755
1769
|
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
1756
1770
|
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
1757
|
-
| fiwix* )
|
1771
|
+
| fiwix* | mlibc* | cos* | mbr* | ironclad* )
|
1758
1772
|
;;
|
1759
1773
|
# This one is extra strict with allowed versions
|
1760
1774
|
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
1761
1775
|
# Don't forget version if it is 3.2v4 or newer.
|
1762
1776
|
;;
|
1777
|
+
# This refers to builds using the UEFI calling convention
|
1778
|
+
# (which depends on the architecture) and PE file format.
|
1779
|
+
# Note that this is both a different calling convention and
|
1780
|
+
# different file format than that of GNU-EFI
|
1781
|
+
# (x86_64-w64-mingw32).
|
1782
|
+
uefi)
|
1783
|
+
;;
|
1763
1784
|
none)
|
1764
1785
|
;;
|
1786
|
+
kernel* | msvc* )
|
1787
|
+
# Restricted further below
|
1788
|
+
;;
|
1789
|
+
'')
|
1790
|
+
if test x"$obj" = x
|
1791
|
+
then
|
1792
|
+
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
|
1793
|
+
fi
|
1794
|
+
;;
|
1795
|
+
*)
|
1796
|
+
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
|
1797
|
+
exit 1
|
1798
|
+
;;
|
1799
|
+
esac
|
1800
|
+
|
1801
|
+
case $obj in
|
1802
|
+
aout* | coff* | elf* | pe*)
|
1803
|
+
;;
|
1804
|
+
'')
|
1805
|
+
# empty is fine
|
1806
|
+
;;
|
1765
1807
|
*)
|
1766
|
-
echo Invalid configuration
|
1808
|
+
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
|
1809
|
+
exit 1
|
1810
|
+
;;
|
1811
|
+
esac
|
1812
|
+
|
1813
|
+
# Here we handle the constraint that a (synthetic) cpu and os are
|
1814
|
+
# valid only in combination with each other and nowhere else.
|
1815
|
+
case $cpu-$os in
|
1816
|
+
# The "javascript-unknown-ghcjs" triple is used by GHC; we
|
1817
|
+
# accept it here in order to tolerate that, but reject any
|
1818
|
+
# variations.
|
1819
|
+
javascript-ghcjs)
|
1820
|
+
;;
|
1821
|
+
javascript-* | *-ghcjs)
|
1822
|
+
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
|
1767
1823
|
exit 1
|
1768
1824
|
;;
|
1769
1825
|
esac
|
1770
1826
|
|
1771
1827
|
# As a final step for OS-related things, validate the OS-kernel combination
|
1772
1828
|
# (given a valid OS), if there is a kernel.
|
1773
|
-
case $kernel-$os in
|
1774
|
-
linux-gnu
|
1775
|
-
|
1829
|
+
case $kernel-$os-$obj in
|
1830
|
+
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
|
1831
|
+
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
|
1832
|
+
| linux-relibc*- | linux-uclibc*- )
|
1833
|
+
;;
|
1834
|
+
uclinux-uclibc*- )
|
1835
|
+
;;
|
1836
|
+
managarm-mlibc*- | managarm-kernel*- )
|
1776
1837
|
;;
|
1777
|
-
|
1838
|
+
windows*-msvc*-)
|
1778
1839
|
;;
|
1779
|
-
-dietlibc
|
1840
|
+
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
|
1841
|
+
| -uclibc*- )
|
1780
1842
|
# These are just libc implementations, not actual OSes, and thus
|
1781
1843
|
# require a kernel.
|
1782
|
-
echo "Invalid configuration
|
1844
|
+
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
|
1783
1845
|
exit 1
|
1784
1846
|
;;
|
1785
|
-
|
1847
|
+
-kernel*- )
|
1848
|
+
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
|
1849
|
+
exit 1
|
1786
1850
|
;;
|
1787
|
-
|
1851
|
+
*-kernel*- )
|
1852
|
+
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
|
1853
|
+
exit 1
|
1788
1854
|
;;
|
1789
|
-
|
1855
|
+
*-msvc*- )
|
1856
|
+
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
|
1857
|
+
exit 1
|
1790
1858
|
;;
|
1791
|
-
|
1859
|
+
kfreebsd*-gnu*- | kopensolaris*-gnu*-)
|
1860
|
+
;;
|
1861
|
+
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
|
1862
|
+
;;
|
1863
|
+
nto-qnx*-)
|
1864
|
+
;;
|
1865
|
+
os2-emx-)
|
1792
1866
|
;;
|
1793
|
-
ios*-simulator | tvos*-simulator | watchos*-simulator)
|
1867
|
+
ios*-simulator* | tvos*-simulator* | watchos*-simulator*)
|
1868
|
+
;;
|
1869
|
+
*-eabi*- | *-gnueabi*-)
|
1794
1870
|
;;
|
1795
|
-
|
1871
|
+
none--*)
|
1872
|
+
# None (no kernel, i.e. freestanding / bare metal),
|
1873
|
+
# can be paired with an machine code file format
|
1796
1874
|
;;
|
1797
|
-
|
1875
|
+
-*-)
|
1798
1876
|
# Blank kernel with real OS is always fine.
|
1799
1877
|
;;
|
1800
|
-
|
1801
|
-
|
1878
|
+
--*)
|
1879
|
+
# Blank kernel and OS with real machine code file format is always fine.
|
1880
|
+
;;
|
1881
|
+
*-*-*)
|
1882
|
+
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
|
1802
1883
|
exit 1
|
1803
1884
|
;;
|
1804
1885
|
esac
|
@@ -1881,7 +1962,7 @@ case $vendor in
|
|
1881
1962
|
;;
|
1882
1963
|
esac
|
1883
1964
|
|
1884
|
-
echo "$cpu-$vendor
|
1965
|
+
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
|
1885
1966
|
exit
|
1886
1967
|
|
1887
1968
|
# Local variables:
|