Update config.guess and config.sub
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 21 Apr 2021 14:02:03 +0000 (16:02 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Wed, 21 Apr 2021 14:33:40 +0000 (16:33 +0200)
config/config.guess
config/config.sub

index 11fda528bc7b15f6a8a963a20c06cd9a6dbe5d6b..1972fda8eb05d040c1390495644252fc92fa2d10 100644 (file)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
+#   Copyright 1992-2021 Free Software Foundation, Inc.
 
-timestamp='2020-04-26'
+timestamp='2021-01-25'
 
 # 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
@@ -27,12 +27,12 @@ timestamp='2020-04-26'
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
 
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
 
 usage="\
 Usage: $0 [OPTION]
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -103,7 +103,7 @@ set_cc_for_build() {
     test "$tmp" && return 0
     : "${TMPDIR=/tmp}"
     # shellcheck disable=SC2039
-    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+    { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
    { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
    { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
    { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
@@ -131,16 +131,14 @@ if test -f /.attbin/uname ; then
    PATH=$PATH:/.attbin ; export PATH
 fi
 
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
+UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
+UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
+UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
 
 case "$UNAME_SYSTEM" in
 Linux|GNU|GNU/*)
-   # If the system lacks a compiler, then just pick glibc.
-   # We could probably try harder.
-   LIBC=gnu
+   LIBC=unknown
 
    set_cc_for_build
    cat <<-EOF > "$dummy.c"
@@ -149,17 +147,29 @@ Linux|GNU|GNU/*)
    LIBC=uclibc
    #elif defined(__dietlibc__)
    LIBC=dietlibc
-   #else
+   #elif defined(__GLIBC__)
    LIBC=gnu
+   #else
+   #include <stdarg.h>
+   /* First heuristic to detect musl libc.  */
+   #ifdef __DEFINED_va_list
+   LIBC=musl
+   #endif
    #endif
    EOF
-   eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+   eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
 
-   # If ldd exists, use it to detect musl libc.
-   if command -v ldd >/dev/null && \
-       ldd --version 2>&1 | grep -q ^musl
-   then
-       LIBC=musl
+   # Second heuristic to detect musl libc.
+   if [ "$LIBC" = unknown ] &&
+      command -v ldd >/dev/null &&
+      ldd --version 2>&1 | grep -q ^musl; then
+       LIBC=musl
+   fi
+
+   # If the system lacks a compiler, then just pick glibc.
+   # We could probably try harder.
+   if [ "$LIBC" = unknown ]; then
+       LIBC=gnu
    fi
    ;;
 esac
@@ -178,20 +188,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    #
    # Note: NetBSD doesn't particularly care about the vendor
    # portion of the name.  We always set it to "unknown".
-   sysctl="sysctl -n hw.machine_arch"
-   UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-       "/sbin/$sysctl" 2>/dev/null || \
-       "/usr/sbin/$sysctl" 2>/dev/null || \
-       echo unknown)`
+   UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
+       /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+       /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+       echo unknown))
    case "$UNAME_MACHINE_ARCH" in
+       aarch64eb) machine=aarch64_be-unknown ;;
        armeb) machine=armeb-unknown ;;
        arm*) machine=arm-unknown ;;
        sh3el) machine=shl-unknown ;;
        sh3eb) machine=sh-unknown ;;
        sh5el) machine=sh5le-unknown ;;
        earmv*)
-       arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-       endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+       arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
+       endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
        machine="${arch}${endian}"-unknown
        ;;
        *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
@@ -222,7 +232,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    case "$UNAME_MACHINE_ARCH" in
        earm*)
        expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-       abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+       abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
        ;;
    esac
    # The OS release
@@ -235,7 +245,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        release='-gnu'
        ;;
        *)
-       release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+       release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
        ;;
    esac
    # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
@@ -244,15 +254,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    echo "$machine-${os}${release}${abi-}"
    exit ;;
     *:Bitrig:*:*)
-   UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+   UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
    echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
    exit ;;
     *:OpenBSD:*:*)
-   UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+   UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
    echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
    exit ;;
     *:LibertyBSD:*:*)
-   UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+   UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
    echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
    exit ;;
     *:MidnightBSD:*:*)
@@ -288,17 +298,17 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     alpha:OSF1:*:*)
    case $UNAME_RELEASE in
    *4.0)
-       UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+       UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
        ;;
    *5.*)
-       UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+       UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
        ;;
    esac
    # According to Compaq, /usr/sbin/psrinfo has been available on
    # OSF/1 and Tru64 systems produced since 1995.  I hope that
    # covers most systems running today.  This code pipes the CPU
    # types through head -n 1, so we only detect the type of CPU 0.
-   ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+   ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1)
    case "$ALPHA_CPU_TYPE" in
        "EV4 (21064)")
        UNAME_MACHINE=alpha ;;
@@ -336,7 +346,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    # A Tn.n version is a released field test version.
    # A Xn.n version is an unreleased experimental baselevel.
    # 1.2 uses "1.2" for uname -r.
-   echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
+   echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
    # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
    exitcode=$?
    trap '' 0
@@ -370,7 +380,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    exit ;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
    # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-   if test "`(/bin/universe) 2>/dev/null`" = att ; then
+   if test "$( (/bin/universe) 2>/dev/null)" = att ; then
        echo pyramid-pyramid-sysv3
    else
        echo pyramid-pyramid-bsd
@@ -383,17 +393,17 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    echo sparc-icl-nx6
    exit ;;
     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-   case `/usr/bin/uname -p` in
+   case $(/usr/bin/uname -p) in
        sparc) echo sparc-icl-nx7; exit ;;
    esac ;;
     s390x:SunOS:*:*)
-   echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+   echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
    exit ;;
     sun4H:SunOS:5.*:*)
-   echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+   echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
    exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-   echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+   echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
    exit ;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
    echo i386-pc-auroraux"$UNAME_RELEASE"
@@ -404,7 +414,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.
    # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
    # 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') | \
        (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
        grep IS_64BIT_ARCH >/dev/null
@@ -412,30 +422,30 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        SUN_ARCH=x86_64
        fi
    fi
-   echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+   echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
    exit ;;
     sun4*:SunOS:6*:*)
    # According to config.sub, this is the proper way to canonicalize
    # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
    # it's likely to be more like Solaris than SunOS4.
-   echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+   echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
    exit ;;
     sun4*:SunOS:*:*)
-   case "`/usr/bin/arch -k`" in
+   case "$(/usr/bin/arch -k)" in
        Series*|S4*)
-       UNAME_RELEASE=`uname -v`
+       UNAME_RELEASE=$(uname -v)
        ;;
    esac
    # Japanese Language versions have a version number like `4.1.3-JL'.
-   echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
+   echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
    exit ;;
     sun3*:SunOS:*:*)
    echo m68k-sun-sunos"$UNAME_RELEASE"
    exit ;;
     sun*:*:4.2BSD:*)
-   UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+   UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
    test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-   case "`/bin/arch`" in
+   case "$(/bin/arch)" in
        sun3)
        echo m68k-sun-sunos"$UNAME_RELEASE"
        ;;
@@ -515,8 +525,8 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
    }
 EOF
    $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-     dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-     SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+     dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
+     SYSTEM_NAME=$("$dummy" "$dummyarg") &&
        { echo "$SYSTEM_NAME"; exit; }
    echo mips-mips-riscos"$UNAME_RELEASE"
    exit ;;
@@ -543,11 +553,11 @@ EOF
    exit ;;
     AViiON:dgux:*:*)
    # DG/UX returns AViiON for all architectures
-   UNAME_PROCESSOR=`/usr/bin/uname -p`
-   if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+   UNAME_PROCESSOR=$(/usr/bin/uname -p)
+   if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
    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
        echo m88k-dg-dgux"$UNAME_RELEASE"
        else
@@ -571,17 +581,17 @@ EOF
    echo m68k-tektronix-bsd
    exit ;;
     *:IRIX*:*:*)
-   echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
+   echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
    exit ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
    echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-   exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+   exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
     i*86:AIX:*:*)
    echo i386-ibm-aix
    exit ;;
     ia64:AIX:*:*)
-   if [ -x /usr/bin/oslevel ] ; then
-       IBM_REV=`/usr/bin/oslevel`
+   if test -x /usr/bin/oslevel ; then
+       IBM_REV=$(/usr/bin/oslevel)
    else
        IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
    fi
@@ -601,7 +611,7 @@ EOF
            exit(0);
            }
 EOF
-       if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+       if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
        then
            echo "$SYSTEM_NAME"
        else
@@ -614,15 +624,15 @@ EOF
    fi
    exit ;;
     *:AIX:*:[4567])
-   IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+   IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
    if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
        IBM_ARCH=rs6000
    else
        IBM_ARCH=powerpc
    fi
-   if [ -x /usr/bin/lslpp ] ; then
-       IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-              awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+   if test -x /usr/bin/lslpp ; then
+       IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
+              awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
    else
        IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
    fi
@@ -650,14 +660,14 @@ EOF
    echo m68k-hp-bsd4.4
    exit ;;
     9000/[34678]??:HP-UX:*:*)
-   HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+   HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
    case "$UNAME_MACHINE" in
        9000/31?)            HP_ARCH=m68000 ;;
        9000/[34]??)         HP_ARCH=m68k ;;
        9000/[678][0-9][0-9])
-       if [ -x /usr/bin/getconf ]; then
-           sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-           sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+       if test -x /usr/bin/getconf; then
+           sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
+           sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
            case "$sc_cpu_version" in
              523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
              528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
@@ -669,7 +679,7 @@ EOF
            esac ;;
            esac
        fi
-       if [ "$HP_ARCH" = "" ]; then
+       if test "$HP_ARCH" = ""; then
            set_cc_for_build
            sed 's/^        //' << EOF > "$dummy.c"
 
@@ -704,11 +714,11 @@ EOF
            exit (0);
        }
 EOF
-           (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
+           (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
            test -z "$HP_ARCH" && HP_ARCH=hppa
        fi ;;
    esac
-   if [ "$HP_ARCH" = hppa2.0w ]
+   if test "$HP_ARCH" = hppa2.0w
    then
        set_cc_for_build
 
@@ -732,7 +742,7 @@ EOF
    echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
    exit ;;
     ia64:HP-UX:*:*)
-   HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+   HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
    echo ia64-hp-hpux"$HPUX_REV"
    exit ;;
     3050*:HI-UX:*:*)
@@ -762,7 +772,7 @@ EOF
      exit (0);
    }
 EOF
-   $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+   $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
        { echo "$SYSTEM_NAME"; exit; }
    echo unknown-hitachi-hiuxwe2
    exit ;;
@@ -782,7 +792,7 @@ EOF
    echo hppa1.0-hp-osf
    exit ;;
     i*86:OSF1:*:*)
-   if [ -x /usr/sbin/sysversion ] ; then
+   if test -x /usr/sbin/sysversion ; then
        echo "$UNAME_MACHINE"-unknown-osf1mk
    else
        echo "$UNAME_MACHINE"-unknown-osf1
@@ -831,14 +841,14 @@ EOF
    echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
    exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-   FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-   FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-   FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+   FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
+   FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+   FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
    echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
    exit ;;
     5000:UNIX_System_V:4.*:*)
-   FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-   FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+   FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+   FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
    echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
    exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -851,25 +861,25 @@ EOF
    echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
    exit ;;
     arm:FreeBSD:*:*)
-   UNAME_PROCESSOR=`uname -p`
+   UNAME_PROCESSOR=$(uname -p)
    set_cc_for_build
    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
        | grep -q __ARM_PCS_VFP
    then
-       echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+       echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
    else
-       echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+       echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
    fi
    exit ;;
     *:FreeBSD:*:*)
-   UNAME_PROCESSOR=`/usr/bin/uname -p`
+   UNAME_PROCESSOR=$(/usr/bin/uname -p)
    case "$UNAME_PROCESSOR" in
        amd64)
        UNAME_PROCESSOR=x86_64 ;;
        i386)
        UNAME_PROCESSOR=i586 ;;
    esac
-   echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+   echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
    exit ;;
     i*:CYGWIN*:*)
    echo "$UNAME_MACHINE"-pc-cygwin
@@ -905,15 +915,15 @@ EOF
    echo x86_64-pc-cygwin
    exit ;;
     prep*:SunOS:5.*:*)
-   echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+   echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
    exit ;;
     *:GNU:*:*)
    # the GNU system
-   echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
+   echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
    exit ;;
     *:GNU/*:*:*)
    # other systems with GNU libc and userland
-   echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
+   echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
    exit ;;
     *:Minix:*:*)
    echo "$UNAME_MACHINE"-unknown-minix
@@ -926,7 +936,7 @@ EOF
    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
    exit ;;
     alpha:Linux:*:*)
-   case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
+   case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
      EV5)   UNAME_MACHINE=alphaev5 ;;
      EV56)  UNAME_MACHINE=alphaev56 ;;
      PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -985,6 +995,9 @@ EOF
     k1om:Linux:*:*)
    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
    exit ;;
+    loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+   echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+   exit ;;
     m32r*:Linux:*:*)
    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
    exit ;;
@@ -1035,7 +1048,7 @@ EOF
    #endif
    #endif
 EOF
-   eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+   eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
    test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
    ;;
     mips64el:Linux:*:*)
@@ -1055,7 +1068,7 @@ EOF
    exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
    # Look for CPU level
-   case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+   case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
      PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
      PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
      *)    echo hppa-unknown-linux-"$LIBC" ;;
@@ -1073,7 +1086,7 @@ EOF
     ppcle:Linux:*:*)
    echo powerpcle-unknown-linux-"$LIBC"
    exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
+    riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
    exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
@@ -1095,7 +1108,17 @@ EOF
    echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
    exit ;;
     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 ;;
     xtensa*:Linux:*:*)
    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1135,7 +1158,7 @@ EOF
    echo "$UNAME_MACHINE"-pc-msdosdjgpp
    exit ;;
     i*86:*:4.*:*)
-   UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+   UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
    if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
        echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
    else
@@ -1144,7 +1167,7 @@ EOF
    exit ;;
     i*86:*:5:[678]*)
    # UnixWare 7.x, OpenUNIX and OpenServer 6.
-   case `/bin/uname -X | grep "^Machine"` in
+   case $(/bin/uname -X | grep "^Machine") in
        *486*)       UNAME_MACHINE=i486 ;;
        *Pentium)        UNAME_MACHINE=i586 ;;
        *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
@@ -1153,10 +1176,10 @@ EOF
    exit ;;
     i*86:*:3.2:*)
    if test -f /usr/options/cb.name; then
-       UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+       UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
        echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
    elif /bin/uname -X 2>/dev/null >/dev/null ; then
-       UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+       UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
        (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
        (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
            && UNAME_MACHINE=i586
@@ -1206,7 +1229,7 @@ EOF
     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
    OS_REL=''
    test -r /etc/.relid \
-   && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+   && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
    /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
      && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
    /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1217,7 +1240,7 @@ EOF
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
    OS_REL='.3'
    test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
    /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
        && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
    /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1250,7 +1273,7 @@ EOF
    exit ;;
     *:SINIX-*:*:*)
    if uname -p 2>/dev/null >/dev/null ; then
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       UNAME_MACHINE=$( (uname -p) 2>/dev/null)
        echo "$UNAME_MACHINE"-sni-sysv4
    else
        echo ns32k-sni-sysv
@@ -1284,7 +1307,7 @@ EOF
    echo mips-sony-newsos6
    exit ;;
     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"
    else
        echo mips-unknown-sysv"$UNAME_RELEASE"
@@ -1332,8 +1355,11 @@ EOF
     *:Rhapsody:*:*)
    echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
    exit ;;
+    arm64:Darwin:*:*)
+   echo aarch64-apple-darwin"$UNAME_RELEASE"
+   exit ;;
     *:Darwin:*:*)
-   UNAME_PROCESSOR=`uname -p`
+   UNAME_PROCESSOR=$(uname -p)
    case $UNAME_PROCESSOR in
        unknown) UNAME_PROCESSOR=powerpc ;;
    esac
@@ -1346,7 +1372,7 @@ EOF
    else
        set_cc_for_build
    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') | \
           (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
           grep IS_64BIT_ARCH >/dev/null
@@ -1370,7 +1396,7 @@ EOF
    echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
    exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
-   UNAME_PROCESSOR=`uname -p`
+   UNAME_PROCESSOR=$(uname -p)
    if test "$UNAME_PROCESSOR" = x86; then
        UNAME_PROCESSOR=i386
        UNAME_MACHINE=pc
@@ -1438,10 +1464,10 @@ EOF
    echo mips-sei-seiux"$UNAME_RELEASE"
    exit ;;
     *:DragonFly:*:*)
-   echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+   echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
    exit ;;
     *:*VMS:*:*)
-   UNAME_MACHINE=`(uname -p) 2>/dev/null`
+   UNAME_MACHINE=$( (uname -p) 2>/dev/null)
    case "$UNAME_MACHINE" in
        A*) echo alpha-dec-vms ; exit ;;
        I*) echo ia64-dec-vms ; exit ;;
@@ -1451,13 +1477,13 @@ EOF
    echo i386-pc-xenix
    exit ;;
     i*86:skyos:*:*)
-   echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
+   echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
    exit ;;
     i*86:rdos:*:*)
    echo "$UNAME_MACHINE"-pc-rdos
    exit ;;
-    i*86:AROS:*:*)
-   echo "$UNAME_MACHINE"-pc-aros
+    *:AROS:*:*)
+   echo "$UNAME_MACHINE"-unknown-aros
    exit ;;
     x86_64:VMkernel:*:*)
    echo "$UNAME_MACHINE"-unknown-esx
@@ -1509,7 +1535,7 @@ main ()
 #define __ARCHITECTURE__ "m68k"
 #endif
   int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
   if (version < 4)
     printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
   else
@@ -1601,7 +1627,7 @@ main ()
 }
 EOF
 
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
    { echo "$SYSTEM_NAME"; exit; }
 
 # Apollos put the system type in the environment.
@@ -1626,14 +1652,14 @@ This script (version $timestamp), has failed to recognize the
 operating system you are using. If your script is old, overwrite *all*
 copies of config.guess and config.sub with the latest versions from:
 
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 EOF
 
-year=`echo $timestamp | sed 's,-.*,,'`
+year=$(echo $timestamp | sed 's,-.*,,')
 # shellcheck disable=SC2003
-if test "`expr "\`date +%Y\`" - "$year"`" -lt 3 ; then
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
    cat >&2 <<EOF
 
 If $0 has already been updated, send the following data and any
@@ -1642,20 +1668,20 @@ provide the necessary information to handle your system.
 
 config.guess timestamp = $timestamp
 
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
 
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+hostinfo               = $( (hostinfo) 2>/dev/null)
+/bin/universe          = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch              = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
 
 UNAME_MACHINE = "$UNAME_MACHINE"
 UNAME_RELEASE = "$UNAME_RELEASE"
index a0d12275ac5f15f1fda9de7af7469807b1e18a64..7f7d0b055ac53ea6bfc7532e101395b8f4ef48c4 100644 (file)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2020 Free Software Foundation, Inc.
+#   Copyright 1992-2021 Free Software Foundation, Inc.
 
-timestamp='2020-04-24'
+timestamp='2021-03-10'
 
 # 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
@@ -33,7 +33,7 @@ timestamp='2020-04-24'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -50,7 +50,7 @@ timestamp='2020-04-24'
 #  CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
 
 usage="\
 Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -124,28 +124,27 @@ case $1 in
        ;;
    *-*-*-*)
        basic_machine=$field1-$field2
-       os=$field3-$field4
+       basic_os=$field3-$field4
        ;;
    *-*-*)
        # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
        # parts
        maybe_os=$field2-$field3
        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* \
            | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
            | storm-chaos* | os2-emx* | rtmk-nova*)
                basic_machine=$field1
-               os=$maybe_os
+               basic_os=$maybe_os
                ;;
            android-linux)
                basic_machine=$field1-unknown
-               os=linux-android
+               basic_os=linux-android
                ;;
            *)
                basic_machine=$field1-$field2
-               os=$field3
+               basic_os=$field3
                ;;
        esac
        ;;
@@ -154,7 +153,7 @@ case $1 in
        case $field1-$field2 in
            decstation-3100)
                basic_machine=mips-dec
-               os=
+               basic_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
                    sun*os*)
                        basic_machine=$field1
-                       os=$field2
+                       basic_os=$field2
                        ;;
                    # Manufacturers
                    dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
@@ -175,11 +174,11 @@ case $1 in
                    | microblaze* | sim | cisco \
                    | oki | wec | wrs | winbond)
                        basic_machine=$field1-$field2
-                       os=
+                       basic_os=
                        ;;
                    *)
                        basic_machine=$field1
-                       os=$field2
+                       basic_os=$field2
                        ;;
                esac
            ;;
@@ -191,447 +190,451 @@ case $1 in
        case $field1 in
            386bsd)
                basic_machine=i386-pc
-               os=bsd
+               basic_os=bsd
                ;;
            a29khif)
                basic_machine=a29k-amd
-               os=udi
+               basic_os=udi
                ;;
            adobe68k)
                basic_machine=m68010-adobe
-               os=scout
+               basic_os=scout
                ;;
            alliant)
                basic_machine=fx80-alliant
-               os=
+               basic_os=
                ;;
            altos | altos3068)
                basic_machine=m68k-altos
-               os=
+               basic_os=
                ;;
            am29k)
                basic_machine=a29k-none
-               os=bsd
+               basic_os=bsd
                ;;
            amdahl)
                basic_machine=580-amdahl
-               os=sysv
+               basic_os=sysv
                ;;
            amiga)
                basic_machine=m68k-unknown
-               os=
+               basic_os=
                ;;
            amigaos | amigados)
                basic_machine=m68k-unknown
-               os=amigaos
+               basic_os=amigaos
                ;;
            amigaunix | amix)
                basic_machine=m68k-unknown
-               os=sysv4
+               basic_os=sysv4
                ;;
            apollo68)
                basic_machine=m68k-apollo
-               os=sysv
+               basic_os=sysv
                ;;
            apollo68bsd)
                basic_machine=m68k-apollo
-               os=bsd
+               basic_os=bsd
                ;;
            aros)
                basic_machine=i386-pc
-               os=aros
+               basic_os=aros
                ;;
            aux)
                basic_machine=m68k-apple
-               os=aux
+               basic_os=aux
                ;;
            balance)
                basic_machine=ns32k-sequent
-               os=dynix
+               basic_os=dynix
                ;;
            blackfin)
                basic_machine=bfin-unknown
-               os=linux
+               basic_os=linux
                ;;
            cegcc)
                basic_machine=arm-unknown
-               os=cegcc
+               basic_os=cegcc
                ;;
            convex-c1)
                basic_machine=c1-convex
-               os=bsd
+               basic_os=bsd
                ;;
            convex-c2)
                basic_machine=c2-convex
-               os=bsd
+               basic_os=bsd
                ;;
            convex-c32)
                basic_machine=c32-convex
-               os=bsd
+               basic_os=bsd
                ;;
            convex-c34)
                basic_machine=c34-convex
-               os=bsd
+               basic_os=bsd
                ;;
            convex-c38)
                basic_machine=c38-convex
-               os=bsd
+               basic_os=bsd
                ;;
            cray)
                basic_machine=j90-cray
-               os=unicos
+               basic_os=unicos
                ;;
            crds | unos)
                basic_machine=m68k-crds
-               os=
+               basic_os=
                ;;
            da30)
                basic_machine=m68k-da30
-               os=
+               basic_os=
                ;;
            decstation | pmax | pmin | dec3100 | decstatn)
                basic_machine=mips-dec
-               os=
+               basic_os=
                ;;
            delta88)
                basic_machine=m88k-motorola
-               os=sysv3
+               basic_os=sysv3
                ;;
            dicos)
                basic_machine=i686-pc
-               os=dicos
+               basic_os=dicos
                ;;
            djgpp)
                basic_machine=i586-pc
-               os=msdosdjgpp
+               basic_os=msdosdjgpp
                ;;
            ebmon29k)
                basic_machine=a29k-amd
-               os=ebmon
+               basic_os=ebmon
                ;;
            es1800 | OSE68k | ose68k | ose | OSE)
                basic_machine=m68k-ericsson
-               os=ose
+               basic_os=ose
                ;;
            gmicro)
                basic_machine=tron-gmicro
-               os=sysv
+               basic_os=sysv
                ;;
            go32)
                basic_machine=i386-pc
-               os=go32
+               basic_os=go32
                ;;
            h8300hms)
                basic_machine=h8300-hitachi
-               os=hms
+               basic_os=hms
                ;;
            h8300xray)
                basic_machine=h8300-hitachi
-               os=xray
+               basic_os=xray
                ;;
            h8500hms)
                basic_machine=h8500-hitachi
-               os=hms
+               basic_os=hms
                ;;
            harris)
                basic_machine=m88k-harris
-               os=sysv3
+               basic_os=sysv3
                ;;
            hp300 | hp300hpux)
                basic_machine=m68k-hp
-               os=hpux
+               basic_os=hpux
                ;;
            hp300bsd)
                basic_machine=m68k-hp
-               os=bsd
+               basic_os=bsd
                ;;
            hppaosf)
                basic_machine=hppa1.1-hp
-               os=osf
+               basic_os=osf
                ;;
            hppro)
                basic_machine=hppa1.1-hp
-               os=proelf
+               basic_os=proelf
                ;;
            i386mach)
                basic_machine=i386-mach
-               os=mach
+               basic_os=mach
                ;;
            isi68 | isi)
                basic_machine=m68k-isi
-               os=sysv
+               basic_os=sysv
                ;;
            m68knommu)
                basic_machine=m68k-unknown
-               os=linux
+               basic_os=linux
                ;;
            magnum | m3230)
                basic_machine=mips-mips
-               os=sysv
+               basic_os=sysv
                ;;
            merlin)
                basic_machine=ns32k-utek
-               os=sysv
+               basic_os=sysv
                ;;
            mingw64)
                basic_machine=x86_64-pc
-               os=mingw64
+               basic_os=mingw64
                ;;
            mingw32)
                basic_machine=i686-pc
-               os=mingw32
+               basic_os=mingw32
                ;;
            mingw32ce)
                basic_machine=arm-unknown
-               os=mingw32ce
+               basic_os=mingw32ce
                ;;
            monitor)
                basic_machine=m68k-rom68k
-               os=coff
+               basic_os=coff
                ;;
            morphos)
                basic_machine=powerpc-unknown
-               os=morphos
+               basic_os=morphos
                ;;
            moxiebox)
                basic_machine=moxie-unknown
-               os=moxiebox
+               basic_os=moxiebox
                ;;
            msdos)
                basic_machine=i386-pc
-               os=msdos
+               basic_os=msdos
                ;;
            msys)
                basic_machine=i686-pc
-               os=msys
+               basic_os=msys
                ;;
            mvs)
                basic_machine=i370-ibm
-               os=mvs
+               basic_os=mvs
                ;;
            nacl)
                basic_machine=le32-unknown
-               os=nacl
+               basic_os=nacl
                ;;
            ncr3000)
                basic_machine=i486-ncr
-               os=sysv4
+               basic_os=sysv4
                ;;
            netbsd386)
                basic_machine=i386-pc
-               os=netbsd
+               basic_os=netbsd
                ;;
            netwinder)
                basic_machine=armv4l-rebel
-               os=linux
+               basic_os=linux
                ;;
            news | news700 | news800 | news900)
                basic_machine=m68k-sony
-               os=newsos
+               basic_os=newsos
                ;;
            news1000)
                basic_machine=m68030-sony
-               os=newsos
+               basic_os=newsos
                ;;
            necv70)
                basic_machine=v70-nec
-               os=sysv
+               basic_os=sysv
                ;;
            nh3000)
                basic_machine=m68k-harris
-               os=cxux
+               basic_os=cxux
                ;;
            nh[45]000)
                basic_machine=m88k-harris
-               os=cxux
+               basic_os=cxux
                ;;
            nindy960)
                basic_machine=i960-intel
-               os=nindy
+               basic_os=nindy
                ;;
            mon960)
                basic_machine=i960-intel
-               os=mon960
+               basic_os=mon960
                ;;
            nonstopux)
                basic_machine=mips-compaq
-               os=nonstopux
+               basic_os=nonstopux
                ;;
            os400)
                basic_machine=powerpc-ibm
-               os=os400
+               basic_os=os400
                ;;
            OSE68000 | ose68000)
                basic_machine=m68000-ericsson
-               os=ose
+               basic_os=ose
                ;;
            os68k)
                basic_machine=m68k-none
-               os=os68k
+               basic_os=os68k
                ;;
            paragon)
                basic_machine=i860-intel
-               os=osf
+               basic_os=osf
                ;;
            parisc)
                basic_machine=hppa-unknown
-               os=linux
+               basic_os=linux
+               ;;
+           psp)
+               basic_machine=mipsallegrexel-sony
+               basic_os=psp
                ;;
            pw32)
                basic_machine=i586-unknown
-               os=pw32
+               basic_os=pw32
                ;;
            rdos | rdos64)
                basic_machine=x86_64-pc
-               os=rdos
+               basic_os=rdos
                ;;
            rdos32)
                basic_machine=i386-pc
-               os=rdos
+               basic_os=rdos
                ;;
            rom68k)
                basic_machine=m68k-rom68k
-               os=coff
+               basic_os=coff
                ;;
            sa29200)
                basic_machine=a29k-amd
-               os=udi
+               basic_os=udi
                ;;
            sei)
                basic_machine=mips-sei
-               os=seiux
+               basic_os=seiux
                ;;
            sequent)
                basic_machine=i386-sequent
-               os=
+               basic_os=
                ;;
            sps7)
                basic_machine=m68k-bull
-               os=sysv2
+               basic_os=sysv2
                ;;
            st2000)
                basic_machine=m68k-tandem
-               os=
+               basic_os=
                ;;
            stratus)
                basic_machine=i860-stratus
-               os=sysv4
+               basic_os=sysv4
                ;;
            sun2)
                basic_machine=m68000-sun
-               os=
+               basic_os=
                ;;
            sun2os3)
                basic_machine=m68000-sun
-               os=sunos3
+               basic_os=sunos3
                ;;
            sun2os4)
                basic_machine=m68000-sun
-               os=sunos4
+               basic_os=sunos4
                ;;
            sun3)
                basic_machine=m68k-sun
-               os=
+               basic_os=
                ;;
            sun3os3)
                basic_machine=m68k-sun
-               os=sunos3
+               basic_os=sunos3
                ;;
            sun3os4)
                basic_machine=m68k-sun
-               os=sunos4
+               basic_os=sunos4
                ;;
            sun4)
                basic_machine=sparc-sun
-               os=
+               basic_os=
                ;;
            sun4os3)
                basic_machine=sparc-sun
-               os=sunos3
+               basic_os=sunos3
                ;;
            sun4os4)
                basic_machine=sparc-sun
-               os=sunos4
+               basic_os=sunos4
                ;;
            sun4sol2)
                basic_machine=sparc-sun
-               os=solaris2
+               basic_os=solaris2
                ;;
            sun386 | sun386i | roadrunner)
                basic_machine=i386-sun
-               os=
+               basic_os=
                ;;
            sv1)
                basic_machine=sv1-cray
-               os=unicos
+               basic_os=unicos
                ;;
            symmetry)
                basic_machine=i386-sequent
-               os=dynix
+               basic_os=dynix
                ;;
            t3e)
                basic_machine=alphaev5-cray
-               os=unicos
+               basic_os=unicos
                ;;
            t90)
                basic_machine=t90-cray
-               os=unicos
+               basic_os=unicos
                ;;
            toad1)
                basic_machine=pdp10-xkl
-               os=tops20
+               basic_os=tops20
                ;;
            tpf)
                basic_machine=s390x-ibm
-               os=tpf
+               basic_os=tpf
                ;;
            udi29k)
                basic_machine=a29k-amd
-               os=udi
+               basic_os=udi
                ;;
            ultra3)
                basic_machine=a29k-nyu
-               os=sym1
+               basic_os=sym1
                ;;
            v810 | necv810)
                basic_machine=v810-nec
-               os=none
+               basic_os=none
                ;;
            vaxv)
                basic_machine=vax-dec
-               os=sysv
+               basic_os=sysv
                ;;
            vms)
                basic_machine=vax-dec
-               os=vms
+               basic_os=vms
                ;;
            vsta)
                basic_machine=i386-pc
-               os=vsta
+               basic_os=vsta
                ;;
            vxworks960)
                basic_machine=i960-wrs
-               os=vxworks
+               basic_os=vxworks
                ;;
            vxworks68)
                basic_machine=m68k-wrs
-               os=vxworks
+               basic_os=vxworks
                ;;
            vxworks29k)
                basic_machine=a29k-wrs
-               os=vxworks
+               basic_os=vxworks
                ;;
            xbox)
                basic_machine=i686-pc
-               os=mingw32
+               basic_os=mingw32
                ;;
            ymp)
                basic_machine=ymp-cray
-               os=unicos
+               basic_os=unicos
                ;;
            *)
                basic_machine=$1
-               os=
+               basic_os=
                ;;
        esac
        ;;
@@ -683,17 +686,17 @@ case $basic_machine in
    bluegene*)
        cpu=powerpc
        vendor=ibm
-       os=cnk
+       basic_os=cnk
        ;;
    decsystem10* | dec10*)
        cpu=pdp10
        vendor=dec
-       os=tops10
+       basic_os=tops10
        ;;
    decsystem20* | dec20*)
        cpu=pdp10
        vendor=dec
-       os=tops20
+       basic_os=tops20
        ;;
    delta | 3300 | motorola-3300 | motorola-delta \
          | 3300-motorola | delta-motorola)
@@ -703,7 +706,7 @@ case $basic_machine in
    dpx2*)
        cpu=m68k
        vendor=bull
-       os=sysv3
+       basic_os=sysv3
        ;;
    encore | umax | mmax)
        cpu=ns32k
@@ -712,7 +715,7 @@ case $basic_machine in
    elxsi)
        cpu=elxsi
        vendor=elxsi
-       os=${os:-bsd}
+       basic_os=${basic_os:-bsd}
        ;;
    fx2800)
        cpu=i860
@@ -725,7 +728,7 @@ case $basic_machine in
    h3050r* | hiux*)
        cpu=hppa1.1
        vendor=hitachi
-       os=hiuxwe2
+       basic_os=hiuxwe2
        ;;
    hp3k9[0-9][0-9] | hp9[0-9][0-9])
        cpu=hppa1.0
@@ -766,38 +769,38 @@ case $basic_machine in
        vendor=hp
        ;;
    i*86v32)
-       cpu=`echo "$1" | sed -e 's/86.*/86/'`
+       cpu=$(echo "$1" | sed -e 's/86.*/86/')
        vendor=pc
-       os=sysv32
+       basic_os=sysv32
        ;;
    i*86v4*)
-       cpu=`echo "$1" | sed -e 's/86.*/86/'`
+       cpu=$(echo "$1" | sed -e 's/86.*/86/')
        vendor=pc
-       os=sysv4
+       basic_os=sysv4
        ;;
    i*86v)
-       cpu=`echo "$1" | sed -e 's/86.*/86/'`
+       cpu=$(echo "$1" | sed -e 's/86.*/86/')
        vendor=pc
-       os=sysv
+       basic_os=sysv
        ;;
    i*86sol2)
-       cpu=`echo "$1" | sed -e 's/86.*/86/'`
+       cpu=$(echo "$1" | sed -e 's/86.*/86/')
        vendor=pc
-       os=solaris2
+       basic_os=solaris2
        ;;
    j90 | j90-cray)
        cpu=j90
        vendor=cray
-       os=${os:-unicos}
+       basic_os=${basic_os:-unicos}
        ;;
    iris | iris4d)
        cpu=mips
        vendor=sgi
-       case $os in
+       case $basic_os in
            irix*)
            ;;
            *)
-           os=irix4
+           basic_os=irix4
            ;;
        esac
        ;;
@@ -808,26 +811,26 @@ case $basic_machine in
    *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
        cpu=m68k
        vendor=atari
-       os=mint
+       basic_os=mint
        ;;
    news-3600 | risc-news)
        cpu=mips
        vendor=sony
-       os=newsos
+       basic_os=newsos
        ;;
    next | m*-next)
        cpu=m68k
        vendor=next
-       case $os in
+       case $basic_os in
            openstep*)
                ;;
            nextstep*)
            ;;
            ns2*)
-             os=nextstep2
+             basic_os=nextstep2
            ;;
            *)
-             os=nextstep3
+             basic_os=nextstep3
            ;;
        esac
        ;;
@@ -838,12 +841,12 @@ case $basic_machine in
    op50n-* | op60c-*)
        cpu=hppa1.1
        vendor=oki
-       os=proelf
+       basic_os=proelf
        ;;
    pa-hitachi)
        cpu=hppa1.1
        vendor=hitachi
-       os=hiuxwe2
+       basic_os=hiuxwe2
        ;;
    pbd)
        cpu=sparc
@@ -880,12 +883,12 @@ case $basic_machine in
    sde)
        cpu=mipsisa32
        vendor=sde
-       os=${os:-elf}
+       basic_os=${basic_os:-elf}
        ;;
    simso-wrs)
        cpu=sparclite
        vendor=wrs
-       os=vxworks
+       basic_os=vxworks
        ;;
    tower | tower-32)
        cpu=m68k
@@ -902,7 +905,7 @@ case $basic_machine in
    w89k-*)
        cpu=hppa1.1
        vendor=winbond
-       os=proelf
+       basic_os=proelf
        ;;
    none)
        cpu=none
@@ -914,7 +917,7 @@ case $basic_machine in
        ;;
    leon-*|leon[3-9]-*)
        cpu=sparc
-       vendor=`echo "$basic_machine" | sed 's/-.*//'`
+       vendor=$(echo "$basic_machine" | sed 's/-.*//')
        ;;
 
    *-*)
@@ -955,11 +958,11 @@ case $cpu-$vendor in
    # some cases the only manufacturer, in others, it is the most popular.
    craynv-unknown)
        vendor=cray
-       os=${os:-unicosmp}
+       basic_os=${basic_os:-unicosmp}
        ;;
    c90-unknown | c90-cray)
        vendor=cray
-       os=${os:-unicos}
+       basic_os=${Basic_os:-unicos}
        ;;
    fx80-unknown)
        vendor=alliant
@@ -1003,7 +1006,7 @@ case $cpu-$vendor in
    dpx20-unknown | dpx20-bull)
        cpu=rs6000
        vendor=bull
-       os=${os:-bosx}
+       basic_os=${basic_os:-bosx}
        ;;
 
    # Here we normalize CPU types irrespective of the vendor
@@ -1012,7 +1015,7 @@ case $cpu-$vendor in
        ;;
    blackfin-*)
        cpu=bfin
-       os=linux
+       basic_os=linux
        ;;
    c54x-*)
        cpu=tic54x
@@ -1025,7 +1028,7 @@ case $cpu-$vendor in
        ;;
    e500v[12]-*)
        cpu=powerpc
-       os=$os"spe"
+       basic_os=${basic_os}"spe"
        ;;
    mips3*-*)
        cpu=mips64
@@ -1035,7 +1038,7 @@ case $cpu-$vendor in
        ;;
    m68knommu-*)
        cpu=m68k
-       os=linux
+       basic_os=linux
        ;;
    m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
        cpu=s12z
@@ -1045,7 +1048,7 @@ case $cpu-$vendor in
        ;;
    parisc-*)
        cpu=hppa
-       os=linux
+       basic_os=linux
        ;;
    pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
        cpu=i586
@@ -1081,7 +1084,7 @@ case $cpu-$vendor in
        cpu=mipsisa64sb1el
        ;;
    sh5e[lb]-*)
-       cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+       cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
        ;;
    spur-*)
        cpu=spur
@@ -1099,13 +1102,16 @@ case $cpu-$vendor in
        cpu=x86_64
        ;;
    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
    # company names they are paired with.
    cr16-*)
-       os=${os:-elf}
+       basic_os=${basic_os:-elf}
        ;;
    crisv32-* | etraxfs*-*)
        cpu=crisv32
@@ -1116,7 +1122,7 @@ case $cpu-$vendor in
        vendor=axis
        ;;
    crx-*)
-       os=${os:-elf}
+       basic_os=${basic_os:-elf}
        ;;
    neo-tandem)
        cpu=neo
@@ -1138,16 +1144,12 @@ case $cpu-$vendor in
        cpu=nsx
        vendor=tandem
        ;;
-   s390-*)
-       cpu=s390
-       vendor=ibm
-       ;;
-   s390x-*)
-       cpu=s390x
-       vendor=ibm
+   mipsallegrexel-sony)
+       cpu=mipsallegrexel
+       vendor=sony
        ;;
    tile*-*)
-       os=${os:-linux-gnu}
+       basic_os=${basic_os:-linux-gnu}
        ;;
 
    *)
@@ -1164,7 +1166,7 @@ case $cpu-$vendor in
            | am33_2.0 \
            | amdgcn \
            | arc | arceb \
-           | arm  | arm[lb]e | arme[lb] | armv* \
+           | arm | arm[lb]e | arme[lb] | armv* \
            | avr | avr32 \
            | asmjs \
            | ba \
@@ -1183,6 +1185,7 @@ case $cpu-$vendor in
            | k1om \
            | le32 | le64 \
            | lm32 \
+           | loongarch32 | loongarch64 | loongarchx32 \
            | m32c | m32r | m32rle \
            | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
            | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
@@ -1227,8 +1230,9 @@ case $cpu-$vendor in
            | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
            | pru \
            | pyramid \
-           | riscv | riscv32 | riscv64 \
+           | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
            | rl78 | romp | rs6000 | rx \
+           | s390 | s390x \
            | score \
            | sh | shl \
            | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
@@ -1238,6 +1242,7 @@ case $cpu-$vendor in
            | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
            | spu \
            | tahoe \
+           | thumbv7* \
            | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
            | tron \
            | ubicom32 \
@@ -1275,8 +1280,47 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if [ x$os != x ]
+if test x$basic_os != x
 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|')
+       ;;
+   os2-emx)
+       kernel=os2
+       os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+       ;;
+   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
    # First match some system type aliases that might get confused
    # with valid system types.
@@ -1288,7 +1332,7 @@ case $os in
        os=cnk
        ;;
    solaris1 | solaris1.*)
-       os=`echo $os | sed -e 's|solaris1|sunos4|'`
+       os=$(echo $os | sed -e 's|solaris1|sunos4|')
        ;;
    solaris)
        os=solaris2
@@ -1296,9 +1340,6 @@ case $os in
    unixware*)
        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*)
        os=ose
@@ -1320,12 +1361,9 @@ case $os in
        os=sco3.2v4
        ;;
    sco3.2.[4-9]*)
-       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.
+       os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
        ;;
-   scout)
+   sco*v* | scout)
        # Don't match below
        ;;
    sco*)
@@ -1334,79 +1372,26 @@ case $os in
    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*)
-   # Remember, each alternative MUST END IN *, to match a version number.
-       ;;
    qnx*)
-       case $cpu in
-           x86 | i*86)
-           ;;
-           *)
-           os=nto-$os
-           ;;
-       esac
+       os=qnx
        ;;
    hiux*)
        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)
        os=lynxos178
        ;;
    lynx*5)
        os=lynxos5
        ;;
+   lynxos*)
+       # don't get caught up in next wildcard
+       ;;
    lynx*)
        os=lynxos
        ;;
-   mac*)
-       os=`echo "$os" | sed -e 's|mac|macos|'`
+   mac[0-9]*)
+       os=$(echo "$os" | sed -e 's|mac|macos|')
        ;;
    opened*)
        os=openedition
@@ -1415,10 +1400,10 @@ case $os in
        os=os400
        ;;
    sunos5*)
-       os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+       os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
        ;;
    sunos6*)
-       os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+       os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
        ;;
    wince*)
        os=wince
@@ -1452,7 +1437,7 @@ case $os in
        ;;
    # Preserve the version number of sinix5.
    sinix5.*)
-       os=`echo $os | sed -e 's|sinix|sysv|'`
+       os=$(echo $os | sed -e 's|sinix|sysv|')
        ;;
    sinix*)
        os=sysv4
@@ -1475,18 +1460,12 @@ case $os in
    sysvr4)
        os=sysv4
        ;;
-   # This must come after sysvr4.
-   sysv*)
-       ;;
    ose*)
        os=ose
        ;;
    *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
        os=mint
        ;;
-   zvmoe)
-       os=zvmoe
-       ;;
    dicos*)
        os=dicos
        ;;
@@ -1503,19 +1482,11 @@ case $os in
            ;;
        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
+
 else
 
 # Here we handle the default operating systems that come with various machines.
@@ -1528,6 +1499,7 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 
+kernel=
 case $cpu-$vendor in
    score-*)
        os=elf
@@ -1539,7 +1511,8 @@ case $cpu-$vendor in
        os=riscix1.2
        ;;
    arm*-rebel)
-       os=linux
+       kernel=linux
+       os=gnu
        ;;
    arm*-semi)
        os=aout
@@ -1705,84 +1678,178 @@ case $cpu-$vendor in
        os=none
        ;;
 esac
+
 fi
 
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+   # Sometimes we do "kernel-libc", so those need to count as OSes.
+   musl* | newlib* | uclibc*)
+       ;;
+   # Likewise for "kernel-abi"
+   eabi* | gnueabi*)
+       ;;
+   # VxWorks passes extra cpu info in the 4th filed.
+   simlinux | simwindows | spe)
+       ;;
+   # 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* | serenity* \
+        | 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* | emx*)
+       ;;
+   # 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* )
+       ;;
+   uclinux-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*)
+       ;;
+   vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+       ;;
+   nto-qnx*)
+       ;;
+   os2-emx)
+       ;;
+   *-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
 # manufacturer.  We pick the logical manufacturer.
 case $vendor in
    unknown)
-       case $os in
-           riscix*)
+       case $cpu-$os in
+           *-riscix*)
                vendor=acorn
                ;;
-           sunos*)
+           *-sunos*)
                vendor=sun
                ;;
-           cnk*|-aix*)
+           *-cnk* | *-aix*)
                vendor=ibm
                ;;
-           beos*)
+           *-beos*)
                vendor=be
                ;;
-           hpux*)
+           *-hpux*)
                vendor=hp
                ;;
-           mpeix*)
+           *-mpeix*)
                vendor=hp
                ;;
-           hiux*)
+           *-hiux*)
                vendor=hitachi
                ;;
-           unos*)
+           *-unos*)
                vendor=crds
                ;;
-           dgux*)
+           *-dgux*)
                vendor=dg
                ;;
-           luna*)
+           *-luna*)
                vendor=omron
                ;;
-           genix*)
+           *-genix*)
                vendor=ns
                ;;
-           clix*)
+           *-clix*)
                vendor=intergraph
                ;;
-           mvs* | opened*)
+           *-mvs* | *-opened*)
+               vendor=ibm
+               ;;
+           *-os400*)
                vendor=ibm
                ;;
-           os400*)
+           s390-* | s390x-*)
                vendor=ibm
                ;;
-           ptx*)
+           *-ptx*)
                vendor=sequent
                ;;
-           tpf*)
+           *-tpf*)
                vendor=ibm
                ;;
-           vxsim* | vxworks* | windiss*)
+           *-vxsim* | *-vxworks* | *-windiss*)
                vendor=wrs
                ;;
-           aux*)
+           *-aux*)
                vendor=apple
                ;;
-           hms*)
+           *-hms*)
                vendor=hitachi
                ;;
-           mpw* | macos*)
+           *-mpw* | *-macos*)
                vendor=apple
                ;;
-           *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+           *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
                vendor=atari
                ;;
-           vos*)
+           *-vos*)
                vendor=stratus
                ;;
        esac
        ;;
 esac
 
-echo "$cpu-$vendor-$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
 exit
 
 # Local variables: