Browse Source

support/gnuconfig: bump version

Fixes issues with the triple on IBM s390x and Z machines.

Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
[yann.morin.1998@free.fr: update both, using the update script]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Alexander Egorenkov 4 years ago
parent
commit
cf8162ce51
3 changed files with 350 additions and 285 deletions
  1. 1 1
      support/gnuconfig/README.buildroot
  2. 27 14
      support/gnuconfig/config.guess
  3. 322 270
      support/gnuconfig/config.sub

+ 1 - 1
support/gnuconfig/README.buildroot

@@ -18,4 +18,4 @@ Run the script 'update' in this directory, and commit the result.
 The current Buildroot version is based on this commit of the config.git
 The current Buildroot version is based on this commit of the config.git
 repository (leave alone on its own line, the script updates it):
 repository (leave alone on its own line, the script updates it):
 
 
-e78c96e5288993aaea3ec44e5c6ee755c668da79
+e072cc210e5d0584396f6c13ba34cb9c7bd8538d

+ 27 - 14
support/gnuconfig/config.guess

@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2020 Free Software Foundation, Inc.
 #   Copyright 1992-2020 Free Software Foundation, Inc.
 
 
-timestamp='2020-04-26'
+timestamp='2020-08-17'
 
 
 # This file is free software; you can redistribute it and/or modify it
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # under the terms of the GNU General Public License as published by
@@ -404,7 +404,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
 	# This test works for both compilers.
 	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
 		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		grep IS_64BIT_ARCH >/dev/null
 		grep IS_64BIT_ARCH >/dev/null
@@ -544,10 +544,10 @@ EOF
     AViiON:dgux:*:*)
     AViiON:dgux:*:*)
 	# DG/UX returns AViiON for all architectures
 	# DG/UX returns AViiON for all architectures
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+	if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
 	then
 	then
-	    if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
-	       [ "$TARGET_BINARY_INTERFACE"x = x ]
+	    if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+	       test "$TARGET_BINARY_INTERFACE"x = x
 	    then
 	    then
 		echo m88k-dg-dgux"$UNAME_RELEASE"
 		echo m88k-dg-dgux"$UNAME_RELEASE"
 	    else
 	    else
@@ -580,7 +580,7 @@ EOF
 	echo i386-ibm-aix
 	echo i386-ibm-aix
 	exit ;;
 	exit ;;
     ia64:AIX:*:*)
     ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
+	if test -x /usr/bin/oslevel ; then
 		IBM_REV=`/usr/bin/oslevel`
 		IBM_REV=`/usr/bin/oslevel`
 	else
 	else
 		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
@@ -620,7 +620,7 @@ EOF
 	else
 	else
 		IBM_ARCH=powerpc
 		IBM_ARCH=powerpc
 	fi
 	fi
-	if [ -x /usr/bin/lslpp ] ; then
+	if test -x /usr/bin/lslpp ; then
 		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
 		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
 			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 	else
 	else
@@ -655,7 +655,7 @@ EOF
 	    9000/31?)            HP_ARCH=m68000 ;;
 	    9000/31?)            HP_ARCH=m68000 ;;
 	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
 	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
+		if test -x /usr/bin/getconf; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
 		    case "$sc_cpu_version" in
 		    case "$sc_cpu_version" in
@@ -669,7 +669,7 @@ EOF
 			esac ;;
 			esac ;;
 		    esac
 		    esac
 		fi
 		fi
-		if [ "$HP_ARCH" = "" ]; then
+		if test "$HP_ARCH" = ""; then
 		    set_cc_for_build
 		    set_cc_for_build
 		    sed 's/^		//' << EOF > "$dummy.c"
 		    sed 's/^		//' << EOF > "$dummy.c"
 
 
@@ -708,7 +708,7 @@ EOF
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 		fi ;;
 	esac
 	esac
-	if [ "$HP_ARCH" = hppa2.0w ]
+	if test "$HP_ARCH" = hppa2.0w
 	then
 	then
 	    set_cc_for_build
 	    set_cc_for_build
 
 
@@ -782,7 +782,7 @@ EOF
 	echo hppa1.0-hp-osf
 	echo hppa1.0-hp-osf
 	exit ;;
 	exit ;;
     i*86:OSF1:*:*)
     i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
+	if test -x /usr/sbin/sysversion ; then
 	    echo "$UNAME_MACHINE"-unknown-osf1mk
 	    echo "$UNAME_MACHINE"-unknown-osf1mk
 	else
 	else
 	    echo "$UNAME_MACHINE"-unknown-osf1
 	    echo "$UNAME_MACHINE"-unknown-osf1
@@ -1095,7 +1095,17 @@ EOF
 	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
 	exit ;;
 	exit ;;
     x86_64:Linux:*:*)
     x86_64:Linux:*:*)
-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+	set_cc_for_build
+	LIBCABI=$LIBC
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
+	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_X32 >/dev/null
+	    then
+		LIBCABI="$LIBC"x32
+	    fi
+	fi
+	echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
 	exit ;;
 	exit ;;
     xtensa*:Linux:*:*)
     xtensa*:Linux:*:*)
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1284,7 +1294,7 @@ EOF
 	echo mips-sony-newsos6
 	echo mips-sony-newsos6
 	exit ;;
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
+	if test -d /usr/nec; then
 		echo mips-nec-sysv"$UNAME_RELEASE"
 		echo mips-nec-sysv"$UNAME_RELEASE"
 	else
 	else
 		echo mips-unknown-sysv"$UNAME_RELEASE"
 		echo mips-unknown-sysv"$UNAME_RELEASE"
@@ -1332,6 +1342,9 @@ EOF
     *:Rhapsody:*:*)
     *:Rhapsody:*:*)
 	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
 	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
 	exit ;;
 	exit ;;
+    arm64:Darwin:*:*)
+	echo aarch64-apple-darwin"$UNAME_RELEASE"
+	exit ;;
     *:Darwin:*:*)
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p`
 	UNAME_PROCESSOR=`uname -p`
 	case $UNAME_PROCESSOR in
 	case $UNAME_PROCESSOR in
@@ -1346,7 +1359,7 @@ EOF
 	else
 	else
 	    set_cc_for_build
 	    set_cc_for_build
 	fi
 	fi
-	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
 	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
 	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
 		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		   grep IS_64BIT_ARCH >/dev/null
 		   grep IS_64BIT_ARCH >/dev/null

+ 322 - 270
support/gnuconfig/config.sub

@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 # Configuration validation subroutine script.
 #   Copyright 1992-2020 Free Software Foundation, Inc.
 #   Copyright 1992-2020 Free Software Foundation, Inc.
 
 
-timestamp='2020-05-04'
+timestamp='2020-09-08'
 
 
 # This file is free software; you can redistribute it and/or modify it
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # under the terms of the GNU General Public License as published by
@@ -124,28 +124,27 @@ case $1 in
 		;;
 		;;
 	*-*-*-*)
 	*-*-*-*)
 		basic_machine=$field1-$field2
 		basic_machine=$field1-$field2
-		os=$field3-$field4
+		basic_os=$field3-$field4
 		;;
 		;;
 	*-*-*)
 	*-*-*)
 		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
 		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
 		# parts
 		# parts
 		maybe_os=$field2-$field3
 		maybe_os=$field2-$field3
 		case $maybe_os in
 		case $maybe_os in
-			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
-			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+			nto-qnx* | linux-* | uclinux-uclibc* \
 			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
 			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
 			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
 			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
 			| storm-chaos* | os2-emx* | rtmk-nova*)
 			| storm-chaos* | os2-emx* | rtmk-nova*)
 				basic_machine=$field1
 				basic_machine=$field1
-				os=$maybe_os
+				basic_os=$maybe_os
 				;;
 				;;
 			android-linux)
 			android-linux)
 				basic_machine=$field1-unknown
 				basic_machine=$field1-unknown
-				os=linux-android
+				basic_os=linux-android
 				;;
 				;;
 			*)
 			*)
 				basic_machine=$field1-$field2
 				basic_machine=$field1-$field2
-				os=$field3
+				basic_os=$field3
 				;;
 				;;
 		esac
 		esac
 		;;
 		;;
@@ -154,7 +153,7 @@ case $1 in
 		case $field1-$field2 in
 		case $field1-$field2 in
 			decstation-3100)
 			decstation-3100)
 				basic_machine=mips-dec
 				basic_machine=mips-dec
-				os=
+				basic_os=
 				;;
 				;;
 			*-*)
 			*-*)
 				# Second component is usually, but not always the OS
 				# Second component is usually, but not always the OS
@@ -162,7 +161,7 @@ case $1 in
 					# Prevent following clause from handling this valid os
 					# Prevent following clause from handling this valid os
 					sun*os*)
 					sun*os*)
 						basic_machine=$field1
 						basic_machine=$field1
-						os=$field2
+						basic_os=$field2
 						;;
 						;;
 					# Manufacturers
 					# Manufacturers
 					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
 					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
@@ -175,11 +174,11 @@ case $1 in
 					| microblaze* | sim | cisco \
 					| microblaze* | sim | cisco \
 					| oki | wec | wrs | winbond)
 					| oki | wec | wrs | winbond)
 						basic_machine=$field1-$field2
 						basic_machine=$field1-$field2
-						os=
+						basic_os=
 						;;
 						;;
 					*)
 					*)
 						basic_machine=$field1
 						basic_machine=$field1
-						os=$field2
+						basic_os=$field2
 						;;
 						;;
 				esac
 				esac
 			;;
 			;;
@@ -191,447 +190,451 @@ case $1 in
 		case $field1 in
 		case $field1 in
 			386bsd)
 			386bsd)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			a29khif)
 			a29khif)
 				basic_machine=a29k-amd
 				basic_machine=a29k-amd
-				os=udi
+				basic_os=udi
 				;;
 				;;
 			adobe68k)
 			adobe68k)
 				basic_machine=m68010-adobe
 				basic_machine=m68010-adobe
-				os=scout
+				basic_os=scout
 				;;
 				;;
 			alliant)
 			alliant)
 				basic_machine=fx80-alliant
 				basic_machine=fx80-alliant
-				os=
+				basic_os=
 				;;
 				;;
 			altos | altos3068)
 			altos | altos3068)
 				basic_machine=m68k-altos
 				basic_machine=m68k-altos
-				os=
+				basic_os=
 				;;
 				;;
 			am29k)
 			am29k)
 				basic_machine=a29k-none
 				basic_machine=a29k-none
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			amdahl)
 			amdahl)
 				basic_machine=580-amdahl
 				basic_machine=580-amdahl
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			amiga)
 			amiga)
 				basic_machine=m68k-unknown
 				basic_machine=m68k-unknown
-				os=
+				basic_os=
 				;;
 				;;
 			amigaos | amigados)
 			amigaos | amigados)
 				basic_machine=m68k-unknown
 				basic_machine=m68k-unknown
-				os=amigaos
+				basic_os=amigaos
 				;;
 				;;
 			amigaunix | amix)
 			amigaunix | amix)
 				basic_machine=m68k-unknown
 				basic_machine=m68k-unknown
-				os=sysv4
+				basic_os=sysv4
 				;;
 				;;
 			apollo68)
 			apollo68)
 				basic_machine=m68k-apollo
 				basic_machine=m68k-apollo
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			apollo68bsd)
 			apollo68bsd)
 				basic_machine=m68k-apollo
 				basic_machine=m68k-apollo
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			aros)
 			aros)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=aros
+				basic_os=aros
 				;;
 				;;
 			aux)
 			aux)
 				basic_machine=m68k-apple
 				basic_machine=m68k-apple
-				os=aux
+				basic_os=aux
 				;;
 				;;
 			balance)
 			balance)
 				basic_machine=ns32k-sequent
 				basic_machine=ns32k-sequent
-				os=dynix
+				basic_os=dynix
 				;;
 				;;
 			blackfin)
 			blackfin)
 				basic_machine=bfin-unknown
 				basic_machine=bfin-unknown
-				os=linux
+				basic_os=linux
 				;;
 				;;
 			cegcc)
 			cegcc)
 				basic_machine=arm-unknown
 				basic_machine=arm-unknown
-				os=cegcc
+				basic_os=cegcc
 				;;
 				;;
 			convex-c1)
 			convex-c1)
 				basic_machine=c1-convex
 				basic_machine=c1-convex
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			convex-c2)
 			convex-c2)
 				basic_machine=c2-convex
 				basic_machine=c2-convex
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			convex-c32)
 			convex-c32)
 				basic_machine=c32-convex
 				basic_machine=c32-convex
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			convex-c34)
 			convex-c34)
 				basic_machine=c34-convex
 				basic_machine=c34-convex
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			convex-c38)
 			convex-c38)
 				basic_machine=c38-convex
 				basic_machine=c38-convex
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			cray)
 			cray)
 				basic_machine=j90-cray
 				basic_machine=j90-cray
-				os=unicos
+				basic_os=unicos
 				;;
 				;;
 			crds | unos)
 			crds | unos)
 				basic_machine=m68k-crds
 				basic_machine=m68k-crds
-				os=
+				basic_os=
 				;;
 				;;
 			da30)
 			da30)
 				basic_machine=m68k-da30
 				basic_machine=m68k-da30
-				os=
+				basic_os=
 				;;
 				;;
 			decstation | pmax | pmin | dec3100 | decstatn)
 			decstation | pmax | pmin | dec3100 | decstatn)
 				basic_machine=mips-dec
 				basic_machine=mips-dec
-				os=
+				basic_os=
 				;;
 				;;
 			delta88)
 			delta88)
 				basic_machine=m88k-motorola
 				basic_machine=m88k-motorola
-				os=sysv3
+				basic_os=sysv3
 				;;
 				;;
 			dicos)
 			dicos)
 				basic_machine=i686-pc
 				basic_machine=i686-pc
-				os=dicos
+				basic_os=dicos
 				;;
 				;;
 			djgpp)
 			djgpp)
 				basic_machine=i586-pc
 				basic_machine=i586-pc
-				os=msdosdjgpp
+				basic_os=msdosdjgpp
 				;;
 				;;
 			ebmon29k)
 			ebmon29k)
 				basic_machine=a29k-amd
 				basic_machine=a29k-amd
-				os=ebmon
+				basic_os=ebmon
 				;;
 				;;
 			es1800 | OSE68k | ose68k | ose | OSE)
 			es1800 | OSE68k | ose68k | ose | OSE)
 				basic_machine=m68k-ericsson
 				basic_machine=m68k-ericsson
-				os=ose
+				basic_os=ose
 				;;
 				;;
 			gmicro)
 			gmicro)
 				basic_machine=tron-gmicro
 				basic_machine=tron-gmicro
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			go32)
 			go32)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=go32
+				basic_os=go32
 				;;
 				;;
 			h8300hms)
 			h8300hms)
 				basic_machine=h8300-hitachi
 				basic_machine=h8300-hitachi
-				os=hms
+				basic_os=hms
 				;;
 				;;
 			h8300xray)
 			h8300xray)
 				basic_machine=h8300-hitachi
 				basic_machine=h8300-hitachi
-				os=xray
+				basic_os=xray
 				;;
 				;;
 			h8500hms)
 			h8500hms)
 				basic_machine=h8500-hitachi
 				basic_machine=h8500-hitachi
-				os=hms
+				basic_os=hms
 				;;
 				;;
 			harris)
 			harris)
 				basic_machine=m88k-harris
 				basic_machine=m88k-harris
-				os=sysv3
+				basic_os=sysv3
 				;;
 				;;
 			hp300 | hp300hpux)
 			hp300 | hp300hpux)
 				basic_machine=m68k-hp
 				basic_machine=m68k-hp
-				os=hpux
+				basic_os=hpux
 				;;
 				;;
 			hp300bsd)
 			hp300bsd)
 				basic_machine=m68k-hp
 				basic_machine=m68k-hp
-				os=bsd
+				basic_os=bsd
 				;;
 				;;
 			hppaosf)
 			hppaosf)
 				basic_machine=hppa1.1-hp
 				basic_machine=hppa1.1-hp
-				os=osf
+				basic_os=osf
 				;;
 				;;
 			hppro)
 			hppro)
 				basic_machine=hppa1.1-hp
 				basic_machine=hppa1.1-hp
-				os=proelf
+				basic_os=proelf
 				;;
 				;;
 			i386mach)
 			i386mach)
 				basic_machine=i386-mach
 				basic_machine=i386-mach
-				os=mach
+				basic_os=mach
 				;;
 				;;
 			isi68 | isi)
 			isi68 | isi)
 				basic_machine=m68k-isi
 				basic_machine=m68k-isi
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			m68knommu)
 			m68knommu)
 				basic_machine=m68k-unknown
 				basic_machine=m68k-unknown
-				os=linux
+				basic_os=linux
 				;;
 				;;
 			magnum | m3230)
 			magnum | m3230)
 				basic_machine=mips-mips
 				basic_machine=mips-mips
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			merlin)
 			merlin)
 				basic_machine=ns32k-utek
 				basic_machine=ns32k-utek
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			mingw64)
 			mingw64)
 				basic_machine=x86_64-pc
 				basic_machine=x86_64-pc
-				os=mingw64
+				basic_os=mingw64
 				;;
 				;;
 			mingw32)
 			mingw32)
 				basic_machine=i686-pc
 				basic_machine=i686-pc
-				os=mingw32
+				basic_os=mingw32
 				;;
 				;;
 			mingw32ce)
 			mingw32ce)
 				basic_machine=arm-unknown
 				basic_machine=arm-unknown
-				os=mingw32ce
+				basic_os=mingw32ce
 				;;
 				;;
 			monitor)
 			monitor)
 				basic_machine=m68k-rom68k
 				basic_machine=m68k-rom68k
-				os=coff
+				basic_os=coff
 				;;
 				;;
 			morphos)
 			morphos)
 				basic_machine=powerpc-unknown
 				basic_machine=powerpc-unknown
-				os=morphos
+				basic_os=morphos
 				;;
 				;;
 			moxiebox)
 			moxiebox)
 				basic_machine=moxie-unknown
 				basic_machine=moxie-unknown
-				os=moxiebox
+				basic_os=moxiebox
 				;;
 				;;
 			msdos)
 			msdos)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=msdos
+				basic_os=msdos
 				;;
 				;;
 			msys)
 			msys)
 				basic_machine=i686-pc
 				basic_machine=i686-pc
-				os=msys
+				basic_os=msys
 				;;
 				;;
 			mvs)
 			mvs)
 				basic_machine=i370-ibm
 				basic_machine=i370-ibm
-				os=mvs
+				basic_os=mvs
 				;;
 				;;
 			nacl)
 			nacl)
 				basic_machine=le32-unknown
 				basic_machine=le32-unknown
-				os=nacl
+				basic_os=nacl
 				;;
 				;;
 			ncr3000)
 			ncr3000)
 				basic_machine=i486-ncr
 				basic_machine=i486-ncr
-				os=sysv4
+				basic_os=sysv4
 				;;
 				;;
 			netbsd386)
 			netbsd386)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=netbsd
+				basic_os=netbsd
 				;;
 				;;
 			netwinder)
 			netwinder)
 				basic_machine=armv4l-rebel
 				basic_machine=armv4l-rebel
-				os=linux
+				basic_os=linux
 				;;
 				;;
 			news | news700 | news800 | news900)
 			news | news700 | news800 | news900)
 				basic_machine=m68k-sony
 				basic_machine=m68k-sony
-				os=newsos
+				basic_os=newsos
 				;;
 				;;
 			news1000)
 			news1000)
 				basic_machine=m68030-sony
 				basic_machine=m68030-sony
-				os=newsos
+				basic_os=newsos
 				;;
 				;;
 			necv70)
 			necv70)
 				basic_machine=v70-nec
 				basic_machine=v70-nec
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			nh3000)
 			nh3000)
 				basic_machine=m68k-harris
 				basic_machine=m68k-harris
-				os=cxux
+				basic_os=cxux
 				;;
 				;;
 			nh[45]000)
 			nh[45]000)
 				basic_machine=m88k-harris
 				basic_machine=m88k-harris
-				os=cxux
+				basic_os=cxux
 				;;
 				;;
 			nindy960)
 			nindy960)
 				basic_machine=i960-intel
 				basic_machine=i960-intel
-				os=nindy
+				basic_os=nindy
 				;;
 				;;
 			mon960)
 			mon960)
 				basic_machine=i960-intel
 				basic_machine=i960-intel
-				os=mon960
+				basic_os=mon960
 				;;
 				;;
 			nonstopux)
 			nonstopux)
 				basic_machine=mips-compaq
 				basic_machine=mips-compaq
-				os=nonstopux
+				basic_os=nonstopux
 				;;
 				;;
 			os400)
 			os400)
 				basic_machine=powerpc-ibm
 				basic_machine=powerpc-ibm
-				os=os400
+				basic_os=os400
 				;;
 				;;
 			OSE68000 | ose68000)
 			OSE68000 | ose68000)
 				basic_machine=m68000-ericsson
 				basic_machine=m68000-ericsson
-				os=ose
+				basic_os=ose
 				;;
 				;;
 			os68k)
 			os68k)
 				basic_machine=m68k-none
 				basic_machine=m68k-none
-				os=os68k
+				basic_os=os68k
 				;;
 				;;
 			paragon)
 			paragon)
 				basic_machine=i860-intel
 				basic_machine=i860-intel
-				os=osf
+				basic_os=osf
 				;;
 				;;
 			parisc)
 			parisc)
 				basic_machine=hppa-unknown
 				basic_machine=hppa-unknown
-				os=linux
+				basic_os=linux
+				;;
+			psp)
+				basic_machine=mipsallegrexel-sony
+				basic_os=psp
 				;;
 				;;
 			pw32)
 			pw32)
 				basic_machine=i586-unknown
 				basic_machine=i586-unknown
-				os=pw32
+				basic_os=pw32
 				;;
 				;;
 			rdos | rdos64)
 			rdos | rdos64)
 				basic_machine=x86_64-pc
 				basic_machine=x86_64-pc
-				os=rdos
+				basic_os=rdos
 				;;
 				;;
 			rdos32)
 			rdos32)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=rdos
+				basic_os=rdos
 				;;
 				;;
 			rom68k)
 			rom68k)
 				basic_machine=m68k-rom68k
 				basic_machine=m68k-rom68k
-				os=coff
+				basic_os=coff
 				;;
 				;;
 			sa29200)
 			sa29200)
 				basic_machine=a29k-amd
 				basic_machine=a29k-amd
-				os=udi
+				basic_os=udi
 				;;
 				;;
 			sei)
 			sei)
 				basic_machine=mips-sei
 				basic_machine=mips-sei
-				os=seiux
+				basic_os=seiux
 				;;
 				;;
 			sequent)
 			sequent)
 				basic_machine=i386-sequent
 				basic_machine=i386-sequent
-				os=
+				basic_os=
 				;;
 				;;
 			sps7)
 			sps7)
 				basic_machine=m68k-bull
 				basic_machine=m68k-bull
-				os=sysv2
+				basic_os=sysv2
 				;;
 				;;
 			st2000)
 			st2000)
 				basic_machine=m68k-tandem
 				basic_machine=m68k-tandem
-				os=
+				basic_os=
 				;;
 				;;
 			stratus)
 			stratus)
 				basic_machine=i860-stratus
 				basic_machine=i860-stratus
-				os=sysv4
+				basic_os=sysv4
 				;;
 				;;
 			sun2)
 			sun2)
 				basic_machine=m68000-sun
 				basic_machine=m68000-sun
-				os=
+				basic_os=
 				;;
 				;;
 			sun2os3)
 			sun2os3)
 				basic_machine=m68000-sun
 				basic_machine=m68000-sun
-				os=sunos3
+				basic_os=sunos3
 				;;
 				;;
 			sun2os4)
 			sun2os4)
 				basic_machine=m68000-sun
 				basic_machine=m68000-sun
-				os=sunos4
+				basic_os=sunos4
 				;;
 				;;
 			sun3)
 			sun3)
 				basic_machine=m68k-sun
 				basic_machine=m68k-sun
-				os=
+				basic_os=
 				;;
 				;;
 			sun3os3)
 			sun3os3)
 				basic_machine=m68k-sun
 				basic_machine=m68k-sun
-				os=sunos3
+				basic_os=sunos3
 				;;
 				;;
 			sun3os4)
 			sun3os4)
 				basic_machine=m68k-sun
 				basic_machine=m68k-sun
-				os=sunos4
+				basic_os=sunos4
 				;;
 				;;
 			sun4)
 			sun4)
 				basic_machine=sparc-sun
 				basic_machine=sparc-sun
-				os=
+				basic_os=
 				;;
 				;;
 			sun4os3)
 			sun4os3)
 				basic_machine=sparc-sun
 				basic_machine=sparc-sun
-				os=sunos3
+				basic_os=sunos3
 				;;
 				;;
 			sun4os4)
 			sun4os4)
 				basic_machine=sparc-sun
 				basic_machine=sparc-sun
-				os=sunos4
+				basic_os=sunos4
 				;;
 				;;
 			sun4sol2)
 			sun4sol2)
 				basic_machine=sparc-sun
 				basic_machine=sparc-sun
-				os=solaris2
+				basic_os=solaris2
 				;;
 				;;
 			sun386 | sun386i | roadrunner)
 			sun386 | sun386i | roadrunner)
 				basic_machine=i386-sun
 				basic_machine=i386-sun
-				os=
+				basic_os=
 				;;
 				;;
 			sv1)
 			sv1)
 				basic_machine=sv1-cray
 				basic_machine=sv1-cray
-				os=unicos
+				basic_os=unicos
 				;;
 				;;
 			symmetry)
 			symmetry)
 				basic_machine=i386-sequent
 				basic_machine=i386-sequent
-				os=dynix
+				basic_os=dynix
 				;;
 				;;
 			t3e)
 			t3e)
 				basic_machine=alphaev5-cray
 				basic_machine=alphaev5-cray
-				os=unicos
+				basic_os=unicos
 				;;
 				;;
 			t90)
 			t90)
 				basic_machine=t90-cray
 				basic_machine=t90-cray
-				os=unicos
+				basic_os=unicos
 				;;
 				;;
 			toad1)
 			toad1)
 				basic_machine=pdp10-xkl
 				basic_machine=pdp10-xkl
-				os=tops20
+				basic_os=tops20
 				;;
 				;;
 			tpf)
 			tpf)
 				basic_machine=s390x-ibm
 				basic_machine=s390x-ibm
-				os=tpf
+				basic_os=tpf
 				;;
 				;;
 			udi29k)
 			udi29k)
 				basic_machine=a29k-amd
 				basic_machine=a29k-amd
-				os=udi
+				basic_os=udi
 				;;
 				;;
 			ultra3)
 			ultra3)
 				basic_machine=a29k-nyu
 				basic_machine=a29k-nyu
-				os=sym1
+				basic_os=sym1
 				;;
 				;;
 			v810 | necv810)
 			v810 | necv810)
 				basic_machine=v810-nec
 				basic_machine=v810-nec
-				os=none
+				basic_os=none
 				;;
 				;;
 			vaxv)
 			vaxv)
 				basic_machine=vax-dec
 				basic_machine=vax-dec
-				os=sysv
+				basic_os=sysv
 				;;
 				;;
 			vms)
 			vms)
 				basic_machine=vax-dec
 				basic_machine=vax-dec
-				os=vms
+				basic_os=vms
 				;;
 				;;
 			vsta)
 			vsta)
 				basic_machine=i386-pc
 				basic_machine=i386-pc
-				os=vsta
+				basic_os=vsta
 				;;
 				;;
 			vxworks960)
 			vxworks960)
 				basic_machine=i960-wrs
 				basic_machine=i960-wrs
-				os=vxworks
+				basic_os=vxworks
 				;;
 				;;
 			vxworks68)
 			vxworks68)
 				basic_machine=m68k-wrs
 				basic_machine=m68k-wrs
-				os=vxworks
+				basic_os=vxworks
 				;;
 				;;
 			vxworks29k)
 			vxworks29k)
 				basic_machine=a29k-wrs
 				basic_machine=a29k-wrs
-				os=vxworks
+				basic_os=vxworks
 				;;
 				;;
 			xbox)
 			xbox)
 				basic_machine=i686-pc
 				basic_machine=i686-pc
-				os=mingw32
+				basic_os=mingw32
 				;;
 				;;
 			ymp)
 			ymp)
 				basic_machine=ymp-cray
 				basic_machine=ymp-cray
-				os=unicos
+				basic_os=unicos
 				;;
 				;;
 			*)
 			*)
 				basic_machine=$1
 				basic_machine=$1
-				os=
+				basic_os=
 				;;
 				;;
 		esac
 		esac
 		;;
 		;;
@@ -683,17 +686,17 @@ case $basic_machine in
 	bluegene*)
 	bluegene*)
 		cpu=powerpc
 		cpu=powerpc
 		vendor=ibm
 		vendor=ibm
-		os=cnk
+		basic_os=cnk
 		;;
 		;;
 	decsystem10* | dec10*)
 	decsystem10* | dec10*)
 		cpu=pdp10
 		cpu=pdp10
 		vendor=dec
 		vendor=dec
-		os=tops10
+		basic_os=tops10
 		;;
 		;;
 	decsystem20* | dec20*)
 	decsystem20* | dec20*)
 		cpu=pdp10
 		cpu=pdp10
 		vendor=dec
 		vendor=dec
-		os=tops20
+		basic_os=tops20
 		;;
 		;;
 	delta | 3300 | motorola-3300 | motorola-delta \
 	delta | 3300 | motorola-3300 | motorola-delta \
 	      | 3300-motorola | delta-motorola)
 	      | 3300-motorola | delta-motorola)
@@ -703,7 +706,7 @@ case $basic_machine in
 	dpx2*)
 	dpx2*)
 		cpu=m68k
 		cpu=m68k
 		vendor=bull
 		vendor=bull
-		os=sysv3
+		basic_os=sysv3
 		;;
 		;;
 	encore | umax | mmax)
 	encore | umax | mmax)
 		cpu=ns32k
 		cpu=ns32k
@@ -712,7 +715,7 @@ case $basic_machine in
 	elxsi)
 	elxsi)
 		cpu=elxsi
 		cpu=elxsi
 		vendor=elxsi
 		vendor=elxsi
-		os=${os:-bsd}
+		basic_os=${basic_os:-bsd}
 		;;
 		;;
 	fx2800)
 	fx2800)
 		cpu=i860
 		cpu=i860
@@ -725,7 +728,7 @@ case $basic_machine in
 	h3050r* | hiux*)
 	h3050r* | hiux*)
 		cpu=hppa1.1
 		cpu=hppa1.1
 		vendor=hitachi
 		vendor=hitachi
-		os=hiuxwe2
+		basic_os=hiuxwe2
 		;;
 		;;
 	hp3k9[0-9][0-9] | hp9[0-9][0-9])
 	hp3k9[0-9][0-9] | hp9[0-9][0-9])
 		cpu=hppa1.0
 		cpu=hppa1.0
@@ -768,36 +771,36 @@ case $basic_machine in
 	i*86v32)
 	i*86v32)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		vendor=pc
-		os=sysv32
+		basic_os=sysv32
 		;;
 		;;
 	i*86v4*)
 	i*86v4*)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		vendor=pc
-		os=sysv4
+		basic_os=sysv4
 		;;
 		;;
 	i*86v)
 	i*86v)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		vendor=pc
-		os=sysv
+		basic_os=sysv
 		;;
 		;;
 	i*86sol2)
 	i*86sol2)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		vendor=pc
-		os=solaris2
+		basic_os=solaris2
 		;;
 		;;
 	j90 | j90-cray)
 	j90 | j90-cray)
 		cpu=j90
 		cpu=j90
 		vendor=cray
 		vendor=cray
-		os=${os:-unicos}
+		basic_os=${basic_os:-unicos}
 		;;
 		;;
 	iris | iris4d)
 	iris | iris4d)
 		cpu=mips
 		cpu=mips
 		vendor=sgi
 		vendor=sgi
-		case $os in
+		case $basic_os in
 		    irix*)
 		    irix*)
 			;;
 			;;
 		    *)
 		    *)
-			os=irix4
+			basic_os=irix4
 			;;
 			;;
 		esac
 		esac
 		;;
 		;;
@@ -808,26 +811,26 @@ case $basic_machine in
 	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
 	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
 		cpu=m68k
 		cpu=m68k
 		vendor=atari
 		vendor=atari
-		os=mint
+		basic_os=mint
 		;;
 		;;
 	news-3600 | risc-news)
 	news-3600 | risc-news)
 		cpu=mips
 		cpu=mips
 		vendor=sony
 		vendor=sony
-		os=newsos
+		basic_os=newsos
 		;;
 		;;
 	next | m*-next)
 	next | m*-next)
 		cpu=m68k
 		cpu=m68k
 		vendor=next
 		vendor=next
-		case $os in
+		case $basic_os in
 		    openstep*)
 		    openstep*)
 		        ;;
 		        ;;
 		    nextstep*)
 		    nextstep*)
 			;;
 			;;
 		    ns2*)
 		    ns2*)
-		      os=nextstep2
+		      basic_os=nextstep2
 			;;
 			;;
 		    *)
 		    *)
-		      os=nextstep3
+		      basic_os=nextstep3
 			;;
 			;;
 		esac
 		esac
 		;;
 		;;
@@ -838,12 +841,12 @@ case $basic_machine in
 	op50n-* | op60c-*)
 	op50n-* | op60c-*)
 		cpu=hppa1.1
 		cpu=hppa1.1
 		vendor=oki
 		vendor=oki
-		os=proelf
+		basic_os=proelf
 		;;
 		;;
 	pa-hitachi)
 	pa-hitachi)
 		cpu=hppa1.1
 		cpu=hppa1.1
 		vendor=hitachi
 		vendor=hitachi
-		os=hiuxwe2
+		basic_os=hiuxwe2
 		;;
 		;;
 	pbd)
 	pbd)
 		cpu=sparc
 		cpu=sparc
@@ -880,12 +883,12 @@ case $basic_machine in
 	sde)
 	sde)
 		cpu=mipsisa32
 		cpu=mipsisa32
 		vendor=sde
 		vendor=sde
-		os=${os:-elf}
+		basic_os=${basic_os:-elf}
 		;;
 		;;
 	simso-wrs)
 	simso-wrs)
 		cpu=sparclite
 		cpu=sparclite
 		vendor=wrs
 		vendor=wrs
-		os=vxworks
+		basic_os=vxworks
 		;;
 		;;
 	tower | tower-32)
 	tower | tower-32)
 		cpu=m68k
 		cpu=m68k
@@ -902,7 +905,7 @@ case $basic_machine in
 	w89k-*)
 	w89k-*)
 		cpu=hppa1.1
 		cpu=hppa1.1
 		vendor=winbond
 		vendor=winbond
-		os=proelf
+		basic_os=proelf
 		;;
 		;;
 	none)
 	none)
 		cpu=none
 		cpu=none
@@ -955,11 +958,11 @@ case $cpu-$vendor in
 	# some cases the only manufacturer, in others, it is the most popular.
 	# some cases the only manufacturer, in others, it is the most popular.
 	craynv-unknown)
 	craynv-unknown)
 		vendor=cray
 		vendor=cray
-		os=${os:-unicosmp}
+		basic_os=${basic_os:-unicosmp}
 		;;
 		;;
 	c90-unknown | c90-cray)
 	c90-unknown | c90-cray)
 		vendor=cray
 		vendor=cray
-		os=${os:-unicos}
+		basic_os=${Basic_os:-unicos}
 		;;
 		;;
 	fx80-unknown)
 	fx80-unknown)
 		vendor=alliant
 		vendor=alliant
@@ -1003,7 +1006,7 @@ case $cpu-$vendor in
 	dpx20-unknown | dpx20-bull)
 	dpx20-unknown | dpx20-bull)
 		cpu=rs6000
 		cpu=rs6000
 		vendor=bull
 		vendor=bull
-		os=${os:-bosx}
+		basic_os=${basic_os:-bosx}
 		;;
 		;;
 
 
 	# Here we normalize CPU types irrespective of the vendor
 	# Here we normalize CPU types irrespective of the vendor
@@ -1012,7 +1015,7 @@ case $cpu-$vendor in
 		;;
 		;;
 	blackfin-*)
 	blackfin-*)
 		cpu=bfin
 		cpu=bfin
-		os=linux
+		basic_os=linux
 		;;
 		;;
 	c54x-*)
 	c54x-*)
 		cpu=tic54x
 		cpu=tic54x
@@ -1025,7 +1028,7 @@ case $cpu-$vendor in
 		;;
 		;;
 	e500v[12]-*)
 	e500v[12]-*)
 		cpu=powerpc
 		cpu=powerpc
-		os=$os"spe"
+		basic_os=${basic_os}"spe"
 		;;
 		;;
 	mips3*-*)
 	mips3*-*)
 		cpu=mips64
 		cpu=mips64
@@ -1035,7 +1038,7 @@ case $cpu-$vendor in
 		;;
 		;;
 	m68knommu-*)
 	m68knommu-*)
 		cpu=m68k
 		cpu=m68k
-		os=linux
+		basic_os=linux
 		;;
 		;;
 	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
 	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
 		cpu=s12z
 		cpu=s12z
@@ -1045,7 +1048,7 @@ case $cpu-$vendor in
 		;;
 		;;
 	parisc-*)
 	parisc-*)
 		cpu=hppa
 		cpu=hppa
-		os=linux
+		basic_os=linux
 		;;
 		;;
 	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
 	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
 		cpu=i586
 		cpu=i586
@@ -1101,11 +1104,14 @@ case $cpu-$vendor in
 	xscale-* | xscalee[bl]-*)
 	xscale-* | xscalee[bl]-*)
 		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
 		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
 		;;
 		;;
+	arm64-*)
+		cpu=aarch64
+		;;
 
 
 	# Recognize the canonical CPU Types that limit and/or modify the
 	# Recognize the canonical CPU Types that limit and/or modify the
 	# company names they are paired with.
 	# company names they are paired with.
 	cr16-*)
 	cr16-*)
-		os=${os:-elf}
+		basic_os=${basic_os:-elf}
 		;;
 		;;
 	crisv32-* | etraxfs*-*)
 	crisv32-* | etraxfs*-*)
 		cpu=crisv32
 		cpu=crisv32
@@ -1116,7 +1122,7 @@ case $cpu-$vendor in
 		vendor=axis
 		vendor=axis
 		;;
 		;;
 	crx-*)
 	crx-*)
-		os=${os:-elf}
+		basic_os=${basic_os:-elf}
 		;;
 		;;
 	neo-tandem)
 	neo-tandem)
 		cpu=neo
 		cpu=neo
@@ -1138,16 +1144,12 @@ case $cpu-$vendor in
 		cpu=nsx
 		cpu=nsx
 		vendor=tandem
 		vendor=tandem
 		;;
 		;;
-	s390-*)
-		cpu=s390
-		vendor=ibm
-		;;
-	s390x-*)
-		cpu=s390x
-		vendor=ibm
+	mipsallegrexel-sony)
+		cpu=mipsallegrexel
+		vendor=sony
 		;;
 		;;
 	tile*-*)
 	tile*-*)
-		os=${os:-linux-gnu}
+		basic_os=${basic_os:-linux-gnu}
 		;;
 		;;
 
 
 	*)
 	*)
@@ -1164,7 +1166,7 @@ case $cpu-$vendor in
 			| am33_2.0 \
 			| am33_2.0 \
 			| amdgcn \
 			| amdgcn \
 			| arc | arceb \
 			| arc | arceb \
-			| arm  | arm[lb]e | arme[lb] | armv* \
+			| arm | arm[lb]e | arme[lb] | armv* \
 			| avr | avr32 \
 			| avr | avr32 \
 			| asmjs \
 			| asmjs \
 			| ba \
 			| ba \
@@ -1229,6 +1231,7 @@ case $cpu-$vendor in
 			| pyramid \
 			| pyramid \
 			| riscv | riscv32 | riscv64 \
 			| riscv | riscv32 | riscv64 \
 			| rl78 | romp | rs6000 | rx \
 			| rl78 | romp | rs6000 | rx \
+			| s390 | s390x \
 			| score \
 			| score \
 			| sh | shl \
 			| sh | shl \
 			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
 			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
@@ -1275,8 +1278,43 @@ esac
 
 
 # Decode manufacturer-specific aliases for certain operating systems.
 # Decode manufacturer-specific aliases for certain operating systems.
 
 
-if [ x$os != x ]
+if test x$basic_os != x
 then
 then
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+	gnu/linux*)
+		kernel=linux
+		os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
+		;;
+	nto-qnx*)
+		kernel=nto
+		os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
+		;;
+	*-*)
+		# shellcheck disable=SC2162
+		IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+		;;
+	# Default OS when just kernel was specified
+	nto*)
+		kernel=nto
+		os=`echo $basic_os | sed -e 's|nto|qnx|'`
+		;;
+	linux*)
+		kernel=linux
+		os=`echo $basic_os | sed -e 's|linux|gnu|'`
+		;;
+	*)
+		kernel=
+		os=$basic_os
+		;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
 case $os in
 case $os in
 	# First match some system type aliases that might get confused
 	# First match some system type aliases that might get confused
 	# with valid system types.
 	# with valid system types.
@@ -1296,9 +1334,6 @@ case $os in
 	unixware*)
 	unixware*)
 		os=sysv4.2uw
 		os=sysv4.2uw
 		;;
 		;;
-	gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
 	# es1800 is here to avoid being matched by es* (a different OS)
 	# es1800 is here to avoid being matched by es* (a different OS)
 	es1800*)
 	es1800*)
 		os=ose
 		os=ose
@@ -1322,10 +1357,7 @@ case $os in
 	sco3.2.[4-9]*)
 	sco3.2.[4-9]*)
 		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
 		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
 		;;
 		;;
-	sco3.2v[4-9]* | sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		;;
-	scout)
+	sco*v* | scout)
 		# Don't match below
 		# Don't match below
 		;;
 		;;
 	sco*)
 	sco*)
@@ -1334,78 +1366,25 @@ case $os in
 	psos*)
 	psos*)
 		os=psos
 		os=psos
 		;;
 		;;
-	# Now accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST end in a * to match a version number.
-	# sysv* is not here because it comes later, after sysvr4.
-	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
-	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-	     | sym* | kopensolaris* | plan9* \
-	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
-	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-	     | knetbsd* | mirbsd* | netbsd* \
-	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
-	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
-	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
-	     | chorusrdb* | cegcc* | glidix* \
-	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
-	     | linux-newlib* | linux-musl* | linux-uclibc* \
-	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-	     | interix* | uwin* | mks* | rhapsody* | darwin* \
-	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
-	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
-	     | os2* | vos* | palmos* | uclinux* | nucleus* \
-	     | morphos* | superux* | rtmk* | windiss* \
-	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-	     | nsk* | powerunix* | genode*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
 	qnx*)
 	qnx*)
-		case $cpu in
-		    x86 | i*86)
-			;;
-		    *)
-			os=nto-$os
-			;;
-		esac
+		os=qnx
 		;;
 		;;
 	hiux*)
 	hiux*)
 		os=hiuxwe2
 		os=hiuxwe2
 		;;
 		;;
-	nto-qnx*)
-		;;
-	nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	sim | xray | os68k* | v88r* \
-	    | windows* | osx | abug | netware* | os9* \
-	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
-		;;
-	linux-dietlibc)
-		os=linux-dietlibc
-		;;
-	linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
 	lynx*178)
 	lynx*178)
 		os=lynxos178
 		os=lynxos178
 		;;
 		;;
 	lynx*5)
 	lynx*5)
 		os=lynxos5
 		os=lynxos5
 		;;
 		;;
+	lynxos*)
+		# don't get caught up in next wildcard
+		;;
 	lynx*)
 	lynx*)
 		os=lynxos
 		os=lynxos
 		;;
 		;;
-	mac*)
+	mac[0-9]*)
 		os=`echo "$os" | sed -e 's|mac|macos|'`
 		os=`echo "$os" | sed -e 's|mac|macos|'`
 		;;
 		;;
 	opened*)
 	opened*)
@@ -1475,18 +1454,12 @@ case $os in
 	sysvr4)
 	sysvr4)
 		os=sysv4
 		os=sysv4
 		;;
 		;;
-	# This must come after sysvr4.
-	sysv*)
-		;;
 	ose*)
 	ose*)
 		os=ose
 		os=ose
 		;;
 		;;
 	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
 	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
 		os=mint
 		os=mint
 		;;
 		;;
-	zvmoe)
-		os=zvmoe
-		;;
 	dicos*)
 	dicos*)
 		os=dicos
 		os=dicos
 		;;
 		;;
@@ -1503,19 +1476,11 @@ case $os in
 			;;
 			;;
 		esac
 		esac
 		;;
 		;;
-	nacl*)
-		;;
-	ios)
-		;;
-	none)
-		;;
-	*-eabi)
-		;;
 	*)
 	*)
-		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
-		exit 1
+		# No normalization, but not necessarily accepted, that comes below.
 		;;
 		;;
 esac
 esac
+
 else
 else
 
 
 # Here we handle the default operating systems that come with various machines.
 # Here we handle the default operating systems that come with various machines.
@@ -1528,6 +1493,7 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 # system, and we'll never get to this point.
 
 
+kernel=
 case $cpu-$vendor in
 case $cpu-$vendor in
 	score-*)
 	score-*)
 		os=elf
 		os=elf
@@ -1539,7 +1505,8 @@ case $cpu-$vendor in
 		os=riscix1.2
 		os=riscix1.2
 		;;
 		;;
 	arm*-rebel)
 	arm*-rebel)
-		os=linux
+		kernel=linux
+		os=gnu
 		;;
 		;;
 	arm*-semi)
 	arm*-semi)
 		os=aout
 		os=aout
@@ -1705,84 +1672,169 @@ case $cpu-$vendor in
 		os=none
 		os=none
 		;;
 		;;
 esac
 esac
+
 fi
 fi
 
 
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+	# Sometimes we do "kernel-abi", so those need to count as OSes.
+	musl* | newlib* | uclibc*)
+		;;
+	# Likewise for "kernel-libc"
+	eabi | eabihf | gnueabi | gnueabihf)
+		;;
+	# Now accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST end in a * to match a version number.
+	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
+	     | hiux* | abug | nacl* | netware* | windows* \
+	     | os9* | macos* | osx* | ios* \
+	     | mpw* | magic* | mmixware* | mon960* | lnews* \
+	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
+	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
+	     | chorusrdb* | cegcc* | glidix* \
+	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+	     | midipix* | mingw32* | mingw64* | mint* \
+	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+	     | interix* | uwin* | mks* | rhapsody* | darwin* \
+	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
+	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
+	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+	     | nsk* | powerunix* | genode* | zvmoe* | qnx* )
+		;;
+	# This one is extra strict with allowed versions
+	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		;;
+	none)
+		;;
+	*)
+		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+		;;
+	-dietlibc* | -newlib* | -musl* | -uclibc* )
+		# These are just libc implementations, not actual OSes, and thus
+		# require a kernel.
+		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+		exit 1
+		;;
+	kfreebsd*-gnu* | kopensolaris*-gnu*)
+		;;
+	nto-qnx*)
+		;;
+	*-eabi* | *-gnueabi*)
+		;;
+	-*)
+		# Blank kernel with real OS is always fine.
+		;;
+	*-*)
+		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+		exit 1
+		;;
+esac
+
 # Here we handle the case where we know the os, and the CPU type, but not the
 # Here we handle the case where we know the os, and the CPU type, but not the
 # manufacturer.  We pick the logical manufacturer.
 # manufacturer.  We pick the logical manufacturer.
 case $vendor in
 case $vendor in
 	unknown)
 	unknown)
-		case $os in
-			riscix*)
+		case $cpu-$os in
+			*-riscix*)
 				vendor=acorn
 				vendor=acorn
 				;;
 				;;
-			sunos*)
+			*-sunos*)
 				vendor=sun
 				vendor=sun
 				;;
 				;;
-			cnk*|-aix*)
+			*-cnk* | *-aix*)
 				vendor=ibm
 				vendor=ibm
 				;;
 				;;
-			beos*)
+			*-beos*)
 				vendor=be
 				vendor=be
 				;;
 				;;
-			hpux*)
+			*-hpux*)
 				vendor=hp
 				vendor=hp
 				;;
 				;;
-			mpeix*)
+			*-mpeix*)
 				vendor=hp
 				vendor=hp
 				;;
 				;;
-			hiux*)
+			*-hiux*)
 				vendor=hitachi
 				vendor=hitachi
 				;;
 				;;
-			unos*)
+			*-unos*)
 				vendor=crds
 				vendor=crds
 				;;
 				;;
-			dgux*)
+			*-dgux*)
 				vendor=dg
 				vendor=dg
 				;;
 				;;
-			luna*)
+			*-luna*)
 				vendor=omron
 				vendor=omron
 				;;
 				;;
-			genix*)
+			*-genix*)
 				vendor=ns
 				vendor=ns
 				;;
 				;;
-			clix*)
+			*-clix*)
 				vendor=intergraph
 				vendor=intergraph
 				;;
 				;;
-			mvs* | opened*)
+			*-mvs* | *-opened*)
+				vendor=ibm
+				;;
+			*-os400*)
 				vendor=ibm
 				vendor=ibm
 				;;
 				;;
-			os400*)
+			s390-* | s390x-*)
 				vendor=ibm
 				vendor=ibm
 				;;
 				;;
-			ptx*)
+			*-ptx*)
 				vendor=sequent
 				vendor=sequent
 				;;
 				;;
-			tpf*)
+			*-tpf*)
 				vendor=ibm
 				vendor=ibm
 				;;
 				;;
-			vxsim* | vxworks* | windiss*)
+			*-vxsim* | *-vxworks* | *-windiss*)
 				vendor=wrs
 				vendor=wrs
 				;;
 				;;
-			aux*)
+			*-aux*)
 				vendor=apple
 				vendor=apple
 				;;
 				;;
-			hms*)
+			*-hms*)
 				vendor=hitachi
 				vendor=hitachi
 				;;
 				;;
-			mpw* | macos*)
+			*-mpw* | *-macos*)
 				vendor=apple
 				vendor=apple
 				;;
 				;;
-			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
 				vendor=atari
 				vendor=atari
 				;;
 				;;
-			vos*)
+			*-vos*)
 				vendor=stratus
 				vendor=stratus
 				;;
 				;;
 		esac
 		esac
 		;;
 		;;
 esac
 esac
 
 
-echo "$cpu-$vendor-$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
 exit
 exit
 
 
 # Local variables:
 # Local variables: