A canonical form is defined as one that maps to itself. I decided to
check whether the config.sub test suite's canonical configurations
actually did, and many of them did not, or weren't even accepted at all!
I checked this by extending the test suite with a new function, which is
the most important part of this patch. I also hurriedly fixed config.sub
so that it passed the improved testsuite. Those fixes however should be
checked over as I wasn't always sure on the best way to fix things (e.g.
what vendors to allow)
Ben, you might notice that many of these fixes overlap with my
deduplication patch. That is because the duplication necessary
frequently is forgotten, leading to bugs. I point this out to show how
deduplication is not only a good idea for cleanliness, but also for
correctness. Let's try to land this (with improve fixed) before that,
however, as I'll be able to redo the deduplication patch with higher
quality way once this is dealt with.
Thanks,
John
From f9f647479997cdb1fd96f0e9c39e6c2e24943151 Mon Sep 17 00:00:00 2001
Message-Id:
<f9f647479997cdb1fd96f0e9c39e6c2e24943151.1532490195.git.John.Ericson@Obsidian.Systems>
From: John Ericson <John.Ericson@Obsidian.Systems>
Date: Tue, 24 Jul 2018 23:18:35 -0400
Subject: [PATCH] * config.sub: Make idemopotent *
testsuite/config-sub.sh: Add ideompotency tests
To: config-patches@gnu.org
---
ChangeLog | 5 ++++
config.sub | 65 ++++++++++++++++++++++++-----------------
testsuite/config-sub.sh | 20 ++++++++++++-
3 files changed, 62 insertions(+), 28 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d90aa1e..a96c520 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-25 John Ericson <john.ericson@obsidian.systems>
+
+ * config.sub: Make idemopotent
+ * testsuite/config-sub.sh: Add ideompotency tests
+
2018-07-25 John Ericson <john.ericson@obsidian.systems>
* config.sub: Fix some more i386-pc-* defaults.
diff --git a/config.sub b/config.sub
index 52eb02e..7300b4f 100755
--- a/config.sub
+++ b/config.sub
@@ -569,12 +569,14 @@ case $basic_machine in
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
+ | abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] |
alpha64pca5[67] \
| am33_2.0 \
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m |
armv[78][arm] \
| avr | avr32 \
+ | asmjs \
| ba \
| be32 | be64 \
| bfin \
@@ -654,13 +656,16 @@ case $basic_machine in
leon|leon[3-9])
basic_machine=sparc-$basic_machine
;;
+ m6811-* | m68hc11-* | m6812-* | m68hc12-* | m68hcs12x-* | nvptx-* |
picochip-*)
+ os=${os:-none}
+ ;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=${os:-none}
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
;;
- m9s12z | m68hcs12z | hcs12z | s12z)
+ m9s12z | m68hcs12z | hcs12z | s12z | s12z-*)
basic_machine=s12z-unknown
os=${os:-none}
;;
@@ -670,7 +675,10 @@ case $basic_machine in
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
- xgate)
+ xgate-*)
+ os=${os:-none}
+ ;;
+ xgate | xgate-*)
basic_machine=$basic_machine-unknown
os=${os:-none}
;;
@@ -689,22 +697,26 @@ case $basic_machine in
basic_machine=$basic_machine-pc
;;
# Recognize the basic CPU types with company name.
- 580-* \
+ 1750a-* | 580-* \
| a29k-* \
| aarch64-* | aarch64_be-* \
+ | abacus-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* \
+ | am33_2.0-* \
+ | arc-* | arceb-* \
+ | arm-* | arm[lb]e-* | arme[lb]-* | armv*-* \
| avr-* | avr32-* \
+ | asmjs-* \
| ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | csky-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | e2k-* | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | d10v-* | d30v-* | dlx-* | dsp16xx-* \
+ | e2k-* | elxsi-* | epiphany-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | ft32-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
@@ -714,8 +726,8 @@ case $basic_machine in
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | m5200 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* |
v70 | w65 \
+ | m88110-* | m88k-* | maxq-* | mb-* | mcore-* | mep-* | metag-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
@@ -738,7 +750,7 @@ case $basic_machine in
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
- | mmix-* \
+ | mn10200-* | mn10300-* \
| moxie-* \
| mt-* \
| msp430-* \
@@ -748,31 +760,33 @@ case $basic_machine in
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
+ | or32-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pru-* \
| pyramid-* \
| riscv-* | riscv32-* | riscv64-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-*
| sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | rl78-* | rs6000-* | rx-* \
+ | score-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]ae[lb]-* | sh[23]e-* |
she[lb]-* | sh[lb]e-* \
+ | sh[1234]e[lb]-* | sh[1234][lb]e-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* |
sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+ | spu-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| visium-* \
| wasm32-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | x86-* | x86_64-* | xc16x-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
+ | we32k-* \
| z8k-* | z80-*)
;;
# Recognize the basic CPU types without company name, with glob match.
@@ -787,10 +801,7 @@ case $basic_machine in
3b*)
basic_machine=we32k-att
;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- alliant | fx80)
+ alliant | fx80 | fx80-alliant)
basic_machine=fx80-alliant
;;
altos | altos3068)
@@ -805,9 +816,6 @@ case $basic_machine in
amiga | amiga-*)
basic_machine=m68k-unknown
;;
- asmjs)
- basic_machine=asmjs-unknown
- ;;
blackfin-*)
basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=linux
@@ -1151,7 +1159,7 @@ case $basic_machine in
sequent)
basic_machine=i386-sequent
;;
- sh5el)
+ sh5el | sh5le-unknown)
basic_machine=sh5le-unknown
;;
simso-wrs)
@@ -1179,6 +1187,9 @@ case $basic_machine in
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
+ tile*-*)
+ os=linux-gnu
+ ;;
tile*)
basic_machine=$basic_machine-unknown
os=linux-gnu
@@ -1231,7 +1242,7 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
- mmix)
+ mmix | mmix-knuth)
basic_machine=mmix-knuth
;;
rs6000)
@@ -1354,7 +1365,7 @@ case $os in
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* \
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- | clix* | riscos* | uniplus* | iris* | rtu* | xenix* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| knetbsd* | mirbsd* | netbsd* \
| bitrig* | openbsd* | solidbsd* | libertybsd* \
| ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
diff --git a/testsuite/config-sub.sh b/testsuite/config-sub.sh
index c5b09f6..6d6dc79 100644
--- a/testsuite/config-sub.sh
+++ b/testsuite/config-sub.sh
@@ -9,11 +9,13 @@
# the alias expands to the expected canonical triplet.
set -eu
+shopt -s lastpipe
verbose=false
run_config_sub()
{
rc=0
+ echo "Checking mappings..."
while read -r alias canonical ; do
output=$(sh -eu ../config.sub "$alias")
if test "$output" != "$canonical" ; then
@@ -26,7 +28,23 @@ run_config_sub()
return $rc
}
-if run_config_sub ; then
+run_config_sub_ideompotent()
+{
+ rc=0
+ echo "Checking idempotency..."
+ sed -r 's/\t+/\t/g' < config-sub.data | cut -f 2 | uniq | while read -r
canonical ; do
+ output=$(sh -eu ../config.sub "$canonical")
+ if test "$output" != "$canonical" ; then
+ echo "FAIL: $canonical -> $output, but $canonical should map to
itself"
+ rc=1
+ else
+ $verbose && echo "PASS: $cannonical"
+ fi
+ done
+ return $rc
+}
+
+if run_config_sub && run_config_sub_ideompotent; then
numtests=$(wc -l config-sub.data | cut -d' ' -f1)
$verbose || echo "PASS: config.sub checks ($numtests tests)"
else
--
2.17.1
_______________________________________________
config-patches mailing list
config-patches@gnu.org
https://lists.gnu.org/mailman/listinfo/config-patches