From: Robert Suchanek <robert.sucha...@imgtec.com>

Remove single-float and short-double axes from multilib spec.

The single-float/short-double combination is not immediately supportable
from GCC 6 as the -fshort-double option has been removed and we do not
have backend logic to implement a direct replacement. If/when we do this
then it needs appropriate ABI markers to describe the additional
variant.

Remove final remnant of single/short config.

Add the mips32r2 mips16 little endian soft-float multilib.

Add big-endian, MIPS64R6, soft-float, N32/N64 Linux libs.

Add MIPS32R1 HF LE Linux libraries.

Add big endian microMIPSr2 hard/soft float support.

Disable microMIPSr6 multilib configs.

Cherry-picked 2b2481cc71284ad9db3dff60bd6cab2be678e87e,
0e3416279af1417b85d1a09b1e74327c31899a5d,
e50ab07265fd8188bd4275c14b744ed2dc39116d,
32f7098d7d5bee9754c7728639a0e1cdb24d63f7,
24e261b2c9a9bea1c205cfab761c218ad50f938e, and
796ddebed418e953ba7cd5de1da42311fb1fe096
from https://github.com/MIPS/gcc

Signed-off-by: Robert Suchanek <robert.sucha...@imgtec.com>
Signed-off-by: Matthew Fortune <matthew.fort...@imgtec.com>
Signed-off-by: Chao-ying Fu <c...@mips.com>
Signed-off-by: Faraz Shahbazker <fshahbaz...@wavecomp.com>
Signed-off-by: Aleksandar Rakic <aleksandar.ra...@htecgroup.com>
---
 config-ml.in                 |  25 ++-
 configure                    |  25 +++
 configure.ac                 |  25 +++
 gcc/Makefile.in              |  20 ++
 gcc/config.gcc               |  12 +-
 gcc/config/mips/ml-img-elf   |  12 +
 gcc/config/mips/ml-img-linux |  10 +
 gcc/config/mips/ml-mti-elf   |  31 +++
 gcc/config/mips/ml-mti-linux |  27 +++
 gcc/config/mips/mti-elf.h    |   2 +
 gcc/config/mips/mti-linux.h  |   2 +
 gcc/config/mips/t-img-elf    |  33 ---
 gcc/config/mips/t-img-linux  |  38 ----
 gcc/config/mips/t-mips-multi | 409 +++++++++++++++++++++++++++++++++++
 gcc/config/mips/t-mti-elf    |  48 ----
 gcc/config/mips/t-mti-linux  | 158 --------------
 gcc/configure                |   8 +-
 gcc/configure.ac             |   3 +
 gcc/genmultilib              |   3 -
 19 files changed, 604 insertions(+), 287 deletions(-)
 create mode 100644 gcc/config/mips/ml-img-elf
 create mode 100644 gcc/config/mips/ml-img-linux
 create mode 100644 gcc/config/mips/ml-mti-elf
 create mode 100644 gcc/config/mips/ml-mti-linux
 delete mode 100644 gcc/config/mips/t-img-elf
 delete mode 100644 gcc/config/mips/t-img-linux
 create mode 100644 gcc/config/mips/t-mips-multi
 delete mode 100644 gcc/config/mips/t-mti-elf
 delete mode 100644 gcc/config/mips/t-mti-linux

diff --git a/config-ml.in b/config-ml.in
index 645cac822fd..44bfd616f62 100644
--- a/config-ml.in
+++ b/config-ml.in
@@ -382,6 +382,23 @@ mips*-*-*)
            esac
          done
        fi
+       if [ x$with_multi_buildlist != x ]
+       then
+         old_multidirs="${multidirs}"
+         if [ ! -f $with_multi_buildlist ]
+         then
+           echo "config-ml.in: Failed to find $with_multi_buildlist"
+           exit 1
+         fi
+         multidirs=""
+         for x in ${old_multidirs}; do
+           found=`grep "^${x}$" $with_multi_buildlist`
+           if [ -n "$found" ]
+           then
+             multidirs="${multidirs} ${x}"
+           fi
+         done
+       fi
        ;;
 msp430-*-*)
        if [ x$enable_no_exceptions = xno ]
@@ -597,7 +614,8 @@ else
 fi
 
 if [ -z "${with_multisubdir}" ]; then
-  ml_subdir=
+  ml_top_subdir=`${CC-gcc} --print-multi-directory 2>/dev/null`
+  ml_subdir=/$ml_top_subdir
   ml_builddotdot=
   : # ml_srcdotdot= # already set
 else
@@ -676,6 +694,11 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; 
then
 
   for ml_dir in ${multidirs}; do
 
+    if [ "${ml_dir}" == "${ml_top_subdir}" ]; then
+      echo "Skipping configure in multilib subdir ${ml_dir}"
+      continue
+    fi
+
     if [ "${ml_verbose}" = --verbose ]; then
       echo "Running configure in multilib subdir ${ml_dir}"
       echo "pwd: `${PWDCMD-pwd}`"
diff --git a/configure b/configure
index a2e86731b08..c84ce115bea 100755
--- a/configure
+++ b/configure
@@ -11338,6 +11338,31 @@ if test x${enable_multilib} = x ; then
   target_configargs="--enable-multilib ${target_configargs}"
 fi
 
+# Select default multilib build variants
+if test x${with_multi_buildlist} = x ; then
+  case "$target" in
+    mips*-img-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-linux ;;
+    mips*-mti-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-linux ;;
+    mips*-img-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-elf ;;
+    mips*-mti-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-elf ;;
+  esac
+  # Verify the file exists before using it in case the gcc component is not
+  # present in the tree.
+  if test -f "${multi_buildlist}" ; then
+    with_multi_buildlist=$multi_buildlist
+  fi
+fi
+
+# Pass through with_multi_buildlist to host and target.  'gcc' needs it for the
+# fixed includes which are multilib'd and target libraries need it as they use
+# config-ml.in.
+if test x${with_multi_buildlist} != x ; then
+  target_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+  ${target_configargs}"
+  host_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+  ${host_configargs}"
+fi
+
 # Pass --with-newlib if appropriate.  Note that target_configdirs has
 # changed from the earlier setting of with_newlib.
 if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " 
newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then
diff --git a/configure.ac b/configure.ac
index 25419a1d2ab..091707ab6bf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3577,6 +3577,31 @@ if test x${enable_multilib} = x ; then
   target_configargs="--enable-multilib ${target_configargs}"
 fi
 
+# Select default multilib build variants
+if test x${with_multi_buildlist} = x ; then
+  case "$target" in
+    mips*-img-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-linux ;;
+    mips*-mti-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-linux ;;
+    mips*-img-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-elf ;;
+    mips*-mti-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-elf ;;
+  esac
+  # Verify the file exists before using it in case the gcc component is not
+  # present in the tree.
+  if test -f "${multi_buildlist}" ; then
+    with_multi_buildlist=$multi_buildlist
+  fi
+fi
+
+# Pass through with_multi_buildlist to host and target.  'gcc' needs it for the
+# fixed includes which are multilib'd and target libraries need it as they use
+# config-ml.in.
+if test x${with_multi_buildlist} != x ; then
+  target_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+  ${target_configargs}"
+  host_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+  ${host_configargs}"
+fi
+
 # Pass --with-newlib if appropriate.  Note that target_configdirs has
 # changed from the earlier setting of with_newlib.
 if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " 
newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index e8b2a38c8b3..e1a515504ab 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -642,6 +642,9 @@ else
   endif
 endif
 
+# Multilib control
+with_multi_buildlist = @with_multi_buildlist@
+
 # ------------------------
 # Installation directories
 # ------------------------
@@ -3383,10 +3386,27 @@ fixinc_list: s-fixinc_list; @true
 s-fixinc_list : $(GCC_PASSES)
 # Build up a list of multilib directories and corresponding sysroot
 # suffixes, in form sysroot;multilib.
+# Use a filtered multilib list if requested.
        if $(GCC_FOR_TARGET) -print-sysroot-headers-suffix > /dev/null 2>&1; 
then \
          set -e; for ml in `$(GCC_FOR_TARGET) -print-multi-lib`; do \
            multi_dir=`echo $${ml} | sed -e 's/;.*$$//'`; \
            flags=`echo $${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+           case "$(target)" in \
+           mips*-*-*) \
+             if [ x$(with_multi_buildlist) != x ]; then \
+               if [ ! -f $(with_multi_buildlist) ]; then \
+                 echo "fixinc_list: Failed to find $(with_multi_buildlist)"; \
+                 exit 1; \
+               fi; \
+               set +e; \
+               found=`grep "^$${multi_dir}$$" $(with_multi_buildlist)`; \
+               set -e; \
+               if [ -z "$$found" ]; then \
+                 continue; \
+               fi; \
+             fi; \
+             ;; \
+           esac; \
            sfx=`$(GCC_FOR_TARGET) $${flags} -print-sysroot-headers-suffix`; \
            if [ "$${multi_dir}" = "." ]; \
              then multi_dir=""; \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 9b616bd6e1f..9ec3001527a 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -2625,22 +2625,24 @@ mips*-*-netbsd*)                        # NetBSD/mips, 
either endian.
 mips*-img-linux*)
        tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h 
${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
        extra_options="${extra_options} linux-android.opt"
-       tmake_file="${tmake_file} mips/t-img-linux"
+       tmake_file="${tmake_file} mips/t-mips-multi"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 
MIPS_ABI_DEFAULT=ABI_32"
        with_arch_32="mips32r6"
        with_arch_64="mips64r6"
        gnu_ld=yes
        gas=yes
+       TM_MULTILIB_EXCEPTIONS_CONFIG="*mclib=*"
        ;;
 mips*-mti-linux*)
        tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h 
${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
        extra_options="${extra_options} linux-android.opt"
-       tmake_file="${tmake_file} mips/t-mti-linux"
+       tmake_file="${tmake_file} mips/t-mips-multi"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 
MIPS_ABI_DEFAULT=ABI_32"
        with_arch_32="mips32r2"
        with_arch_64="mips64r2"
        gnu_ld=yes
        gas=yes
+       TM_MULTILIB_EXCEPTIONS_CONFIG="*mclib=*"
        ;;
 mips*-*-linux*)                                # Linux MIPS, either endian.
        tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h 
${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
@@ -2705,17 +2707,19 @@ mips*-*-linux*)                         # Linux MIPS, 
either endian.
        ;;
 mips*-mti-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h 
mips/sde.h mips/mti-elf.h"
-       tmake_file="mips/t-mti-elf"
+       tmake_file="mips/t-mips-multi"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 
MIPS_ABI_DEFAULT=ABI_32"
        with_arch_32="mips32r2"
        with_arch_64="mips64r2"
+       TM_MULTILIB_EXCEPTIONS_CONFIG="*mglibc* *muclibc*"
        ;;
 mips*-img-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h 
mips/sde.h mips/mti-elf.h"
-       tmake_file="mips/t-img-elf"
+       tmake_file="mips/t-mips-multi"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 
MIPS_ABI_DEFAULT=ABI_32"
        with_arch_32="mips32r6"
        with_arch_64="mips64r6"
+       TM_MULTILIB_EXCEPTIONS_CONFIG="*mglibc* *muclibc* *mandroid*"
        ;;
 mips*-sde-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h 
mips/sde.h"
diff --git a/gcc/config/mips/ml-img-elf b/gcc/config/mips/ml-img-elf
new file mode 100644
index 00000000000..91204f825ed
--- /dev/null
+++ b/gcc/config/mips/ml-img-elf
@@ -0,0 +1,12 @@
+mips-r6-hard-newlib/lib
+mips-r6-hard-newlib/lib32
+mips-r6-hard-newlib/lib64
+mips-r6-soft-newlib/lib
+mips-r6-soft-newlib/lib32
+mips-r6-soft-newlib/lib64
+mipsel-r6-hard-newlib/lib
+mipsel-r6-hard-newlib/lib32
+mipsel-r6-hard-newlib/lib64
+mipsel-r6-soft-newlib/lib
+mipsel-r6-soft-newlib/lib32
+mipsel-r6-soft-newlib/lib64
diff --git a/gcc/config/mips/ml-img-linux b/gcc/config/mips/ml-img-linux
new file mode 100644
index 00000000000..c9a58272f55
--- /dev/null
+++ b/gcc/config/mips/ml-img-linux
@@ -0,0 +1,10 @@
+mips-r6-hard/lib
+mips-r6-soft/lib
+mips-r6-hard/lib32
+mips-r6-soft/lib32
+mips-r6-hard/lib64
+mips-r6-soft/lib64
+mipsel-r6-hard/lib
+mipsel-r6-soft/lib
+mipsel-r6-hard/lib32
+mipsel-r6-hard/lib64
diff --git a/gcc/config/mips/ml-mti-elf b/gcc/config/mips/ml-mti-elf
new file mode 100644
index 00000000000..ba61eb3efa6
--- /dev/null
+++ b/gcc/config/mips/ml-mti-elf
@@ -0,0 +1,31 @@
+mips-r2-hard-newlib/lib
+mips-r2-hard-newlib/lib32
+mips-r2-hard-newlib/lib64
+mips-r2-hard-nan2008-newlib/lib
+mips-r2-soft-newlib/lib
+mips-r2-soft-newlib/lib32
+mips-r2-soft-newlib/lib64
+mipsel-r2-hard-newlib/lib
+mipsel-r2-hard-newlib/lib32
+mipsel-r2-hard-newlib/lib64
+mipsel-r2-soft-newlib/lib
+mipsel-r2-soft-newlib/lib32
+mipsel-r2-soft-newlib/lib64
+mipsel-r2-mips16-soft-newlib/lib
+mipsel-r2-hard-nan2008-newlib/lib
+micromips-r2-hard-nan2008-newlib/lib
+micromips-r2-soft-newlib/lib
+micromipsel-r2-hard-nan2008-newlib/lib
+micromipsel-r2-soft-newlib/lib
+mips-r6-hard-newlib/lib
+mips-r6-hard-newlib/lib32
+mips-r6-hard-newlib/lib64
+mips-r6-soft-newlib/lib
+mips-r6-soft-newlib/lib32
+mips-r6-soft-newlib/lib64
+mipsel-r6-hard-newlib/lib
+mipsel-r6-hard-newlib/lib32
+mipsel-r6-hard-newlib/lib64
+mipsel-r6-soft-newlib/lib
+mipsel-r6-soft-newlib/lib32
+mipsel-r6-soft-newlib/lib64
diff --git a/gcc/config/mips/ml-mti-linux b/gcc/config/mips/ml-mti-linux
new file mode 100644
index 00000000000..aabd81bceb9
--- /dev/null
+++ b/gcc/config/mips/ml-mti-linux
@@ -0,0 +1,27 @@
+mips-r2-hard/lib
+mips-r2-soft/lib
+mips-r2-hard/lib32
+mips-r2-hard/lib64
+mips-r2-hard-nan2008/lib
+mipsel-r1-hard/lib
+mipsel-r2-hard/lib
+mipsel-r2-soft/lib
+mipsel-r2-hard/lib32
+mipsel-r2-hard/lib64
+mipsel-r2-hard-nan2008/lib
+micromipsel-r2-hard-nan2008/lib
+micromipsel-r2-soft/lib
+mips-r2-hard-uclibc/lib
+mips-r2-hard-nan2008-uclibc/lib
+mipsel-r2-hard-uclibc/lib
+mipsel-r2-hard-nan2008-uclibc/lib
+mips-r6-hard/lib
+mips-r6-soft/lib
+mips-r6-hard/lib32
+mips-r6-soft/lib32
+mips-r6-hard/lib64
+mips-r6-soft/lib64
+mipsel-r6-hard/lib
+mipsel-r6-soft/lib
+mipsel-r6-hard/lib32
+mipsel-r6-hard/lib64
diff --git a/gcc/config/mips/mti-elf.h b/gcc/config/mips/mti-elf.h
index 5dd7e2f4f5a..5cd1d30f245 100644
--- a/gcc/config/mips/mti-elf.h
+++ b/gcc/config/mips/mti-elf.h
@@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public 
License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
+#undef MULTILIB_DEFAULTS
+
 #undef DRIVER_SELF_SPECS
 #define DRIVER_SELF_SPECS                                              \
   /* Set the ISA for the default multilib.  */                         \
diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h
index a6698d3ad97..eac4228b1c0 100644
--- a/gcc/config/mips/mti-linux.h
+++ b/gcc/config/mips/mti-linux.h
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
    mips64r3, and mips64r5 will all default to 'r2'.  See MULTILIB_MATCHES
    definition in t-mti-linux.  */
 
+#undef MULTILIB_DEFAULTS
+
 #define MIPS_SYSVERSION_SPEC \
     "%{mips32|mips64:r1;mips32r6|mips64r6:r6;:r2}%{mips16:-mips16}"
 
diff --git a/gcc/config/mips/t-img-elf b/gcc/config/mips/t-img-elf
deleted file mode 100644
index 25d33eda9fb..00000000000
--- a/gcc/config/mips/t-img-elf
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2014-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r6, hard-float big-endian.
-# A multilib for mips32r6+LE
-# A multilib for mips64r6
-# A multilib for mips64r6+LE
-
-MULTILIB_OPTIONS = mips64r6 mabi=64 EL msoft-float/msingle-float
-MULTILIB_DIRNAMES = mips64r6 64 el sof sgl
-MULTILIB_MATCHES = EL=mel EB=meb
-
-# Don't build 64r6 with single-float
-MULTILIB_EXCEPTIONS += mips64r6/*msingle-float*
-
-MULTILIB_EXCEPTIONS += mabi=64*
-MULTILIB_EXCEPTIONS += msingle-float*
-MULTILIB_EXCEPTIONS += *msingle-float
diff --git a/gcc/config/mips/t-img-linux b/gcc/config/mips/t-img-linux
deleted file mode 100644
index b899080cd37..00000000000
--- a/gcc/config/mips/t-img-linux
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2014-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r6, hard-float big-endian.  Add mips64r6,
-# 64-bit ABI and little-endian variations.
-
-MULTILIB_OPTIONS = mips64r6 mabi=64 EL
-MULTILIB_DIRNAMES = mips64r6 64 el
-MULTILIB_MATCHES = EL=mel EB=meb
-
-MULTILIB_REQUIRED =
-MULTILIB_OSDIRNAMES = .=mips-r6-hard/lib
-MULTILIB_REQUIRED += mips64r6
-MULTILIB_OSDIRNAMES += mips64r6=!mips-r6-hard/lib32
-MULTILIB_REQUIRED += mips64r6/mabi=64
-MULTILIB_OSDIRNAMES += mips64r6/mabi.64=!mips-r6-hard/lib64
-
-MULTILIB_REQUIRED += EL
-MULTILIB_OSDIRNAMES += EL=!mipsel-r6-hard/lib
-MULTILIB_REQUIRED += mips64r6/EL
-MULTILIB_OSDIRNAMES += mips64r6/EL=!mipsel-r6-hard/lib32
-MULTILIB_REQUIRED += mips64r6/mabi=64/EL
-MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL=!mipsel-r6-hard/lib64
diff --git a/gcc/config/mips/t-mips-multi b/gcc/config/mips/t-mips-multi
new file mode 100644
index 00000000000..b6797a98811
--- /dev/null
+++ b/gcc/config/mips/t-mips-multi
@@ -0,0 +1,409 @@
+# Copyright (C) 2024 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# There is no default build in this multilib setup.  This
+# unfortunately does not prevent config-ml.in from building a default
+# but this can be removed via post install scripts.
+#
+# All possible MIPS multilibs are shown in this file.  They are
+# limited via a file that lists required multilibs for each vendor/OS
+# combination which can be overridden at build time as well.
+#
+# The benefit to describing all multilibs is that the compiler driver
+# can use any multilib if it is present and therefore additional
+# library variants can be added to an installation after initial
+# build.  This could be achieved by building all libraries and
+# removing the ones we don't want to ship but this would massively
+# increase build times in situations where only a few are required
+# immediately.
+
+MULTILIB_OPTIONS = mclib=small/mclib=tiny/muclibc \
+                  mips32/mips32r2/mips32r6/mips64/mips64r2/mips64r6 \
+                                  mips16/mmicromips \
+                                  mabi=32/mabi=n32/mabi=64 \
+                                  EB/EL \
+                                  msoft-float \
+                                  mnan=2008
+MULTILIB_DIRNAMES = small tiny uclibc mips32 mips32r2 mips32r6 mips64 \
+                   mips64r2 mips64r6 mips16 micromips 32 n32 64 \
+                                       eb el sof nan2008
+MULTILIB_MATCHES = EL=mel EB=meb \
+                  mips32r2=mips32r3 mips32r2=mips32r5 \
+                                  mips64r2=mips64r3 mips64r2=mips64r5
+
+# Allow the exceptions list to be controlled by configure time options
+MULTILIB_EXCEPTIONS = $(TM_MULTILIB_EXCEPTIONS_CONFIG)
+
+# Determine if this is a bare metal target with a newlib default library
+is_newlib = $(if $(filter elf, $(lastword $(subst -, ,$(target)))),-newlib)
+
+MULTILIB_EXCLUSIONS := !mclib=small/!mclib=tiny/!muclibc/!mips32/!mips32r2
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mips32r6/!mips64/!mips64r2
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mips64r6/!mips16/!mmicromips
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mabi=32/!mabi=n32/!mabi=64/!EB
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!EL/!msoft-float/!mnan=2008
+
+# MIPS32R6/MIPS64R6
+MULTILIB_REQUIRED   = mips32r6/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES = mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib
+MULTILIB_REUSE      = mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED   += mips64r6/mabi=n32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r6/mabi=64/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r6/mabi=32/EB/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EB/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r6/mabi.32/EB/msoft-float/mnan.2008=mips64r6
+MULTILIB_REUSE      := $(MULTILIB_REUSE)/mabi.32/EB/msoft-float/mnan.2008
+MULTILIB_REQUIRED   += mips64r6/mabi=n32/EB/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EB/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r6/mabi=64/EB/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EB/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r6/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED   += mips64r6/mabi=n32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r6/mabi=64/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r6/mabi=32/EL/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EL/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES :=$(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r6/mabi.32/EL/msoft-float/mnan.2008=mips64r6
+MULTILIB_REUSE      := $(MULTILIB_REUSE)/mabi.32/EL/msoft-float/mnan.2008
+MULTILIB_REQUIRED   += mips64r6/mabi=n32/EL/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EL/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r6/mabi=64/EL/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib64
+
+# MIPS32R2/MIPS64R2
+MULTILIB_REQUIRED   += mips32r2/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB=!mips-r2-hard$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r2/mabi.32/EB=mips64r2/mabi.32/EB
+MULTILIB_REQUIRED   += mips64r2/mabi=n32/EB
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB=!mips-r2-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r2/mabi=64/EB
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB=!mips-r2-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB/mnan.2008=!mips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED   += mips64r2/mabi=n32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB/mnan.2008=!mips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r2/mabi=64/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB/mnan.2008=!mips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r2/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED   += mips64r2/mabi=n32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r2/mabi=64/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r2/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL=!mipsel-r2-hard$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r2/mabi.32/EL=mips64r2/mabi.32/EL
+MULTILIB_REQUIRED   += mips64r2/mabi=n32/EL
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL=!mipsel-r2-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r2/mabi=64/EL
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL=!mipsel-r2-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL/mnan.2008=!mipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED   += mips64r2/mabi=n32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL/mnan.2008=!mipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r2/mabi=64/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/mnan.2008=!mipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32r2/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib
+MULTILIB_REUSE      += mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float
+MULTILIB_REQUIRED   += mips64r2/mabi=n32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64r2/mabi=64/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib64
+
+# MIPS16 - We will not include any 64 bit mips16 combinations.
+MULTILIB_REQUIRED   += mips32r2/mips16/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB=!mips-r2-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32r2/mips16/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-mips16-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32r2/mips16/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+MULTILIB_REQUIRED   += mips32r2/mips16/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32r2/mips16/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32r2/mips16/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+# microMIPS32R3 - We will not include any 64 bit microMIPS combinations
+MULTILIB_REQUIRED   += mips32r2/mmicromips/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32r2/mmicromips/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft$(is_newlib)/lib
+
+MULTILIB_REQUIRED   += mips32r2/mmicromips/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32r2/mmicromips/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+# Version 1 multilibs
+
+MULTILIB_REQUIRED   += mips32/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EB=!mips-r1-hard$(is_newlib)/lib
+MULTILIB_REUSE      += mips32/mabi.32/EB=mips64/mabi.32/EB
+MULTILIB_REQUIRED   += mips64/mabi=n32/EB
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EB=!mips-r1-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64/mabi=64/EB
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EB=!mips-r1-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib
+MULTILIB_REUSE      += mips32/mabi.32/EB/msoft-float=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED   += mips64/mabi=n32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64/mabi=64/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EL=!mipsel-r1-hard$(is_newlib)/lib
+MULTILIB_REUSE      += mips32/mabi.32/EL=mips64/mabi.32/EL
+MULTILIB_REQUIRED   += mips64/mabi=n32/EL
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EL=!mipsel-r1-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64/mabi=64/EL
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EL=!mipsel-r1-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED   += mips32/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib
+MULTILIB_REUSE      += mips32/mabi.32/EL/msoft-float=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64/mabi.32/EL/msoft-float
+MULTILIB_REQUIRED   += mips64/mabi=n32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED   += mips64/mabi=64/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib64
+
+# We will not include any 64 bit mips16 combinations.
+MULTILIB_REQUIRED   += mips32/mips16/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EB=!mips-r1-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32/mips16/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += 
mips32/mips16/mabi.32/EB/msoft-float=!mips-r1-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+MULTILIB_REQUIRED   += mips32/mips16/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EL=!mipsel-r1-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED   += mips32/mips16/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+# Uclibc variants
+MULTILIB_REQUIRED   += muclibc/mips32r2/mabi=32/EB
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EB=!mips-r2-hard-uclibc/lib
+MULTILIB_REUSE      += muclibc/mips32r2/mabi.32/EB=muclibc/mips64r2/mabi.32/EB
+MULTILIB_REQUIRED   += muclibc/mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-uclibc/lib
+MULTILIB_REUSE      += muclibc/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)muclibc/mips64r2/mabi.32/EB/mnan.2008
+
+MULTILIB_REQUIRED   += muclibc/mips32r2/mabi=32/EL
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EL=!mipsel-r2-hard-uclibc/lib
+MULTILIB_REUSE      += muclibc/mips32r2/mabi.32/EL=muclibc/mips64r2/mabi.32/EL
+MULTILIB_REQUIRED   += muclibc/mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-uclibc/lib
+MULTILIB_REUSE      += muclibc/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE      := $(MULTILIB_REUSE)muclibc/mips64r2/mabi.32/EL/mnan.2008
+
+# MIPS Small/Tiny C library variants
+MULTILIB_REQUIRED   += mclib=small/mips32r6/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r6/mabi.32/EB/mnan.2008=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED   += mclib=small/mips32r6/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r6/mabi.32/EL/mnan.2008=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED   += mclib=small/mips32r6/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r6/mabi.32/EB/msoft-float=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED   += mclib=small/mips32r6/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r6/mabi.32/EL/msoft-float=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/msoft-float
+
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r2/mabi.32/EB/mnan.2008=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r2/mabi.32/EL/mnan.2008=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r2/mabi.32/EB/msoft-float=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft-small/lib
+MULTILIB_REUSE      += mclib.small/mips32r2/mabi.32/EL/msoft-float=mclib.small/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float
+
+MULTILIB_REQUIRED   += mclib=tiny/mips32r6/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE      := 
$(MULTILIB_REUSE)mclib.tiny/mips64r6/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED   += mclib=tiny/mips32r6/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE      := 
$(MULTILIB_REUSE)mclib.tiny/mips64r6/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED   += mclib=tiny/mips32r6/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r6/mabi.32/EB/msoft-float=mclib.tiny/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED   += mclib=tiny/mips32r6/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r6/mabi.32/EL/msoft-float=mclib.tiny/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/msoft-float
+
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE      := 
$(MULTILIB_REUSE)mclib.tiny/mips64r2/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE      := 
$(MULTILIB_REUSE)mclib.tiny/mips64r2/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r2/mabi.32/EB/msoft-float=mclib.tiny/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft-tiny/lib
+MULTILIB_REUSE      += mclib.tiny/mips32r2/mabi.32/EL/msoft-float=mclib.tiny/
+MULTILIB_REUSE      := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float
+
+# microMIPS Small/Tiny C library variants
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mmicromips/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008-small
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mmicromips/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008-small
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mmicromips/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft-small/lib
+MULTILIB_REQUIRED   += mclib=small/mips32r2/mmicromips/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft-small/lib
+
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mmicromips/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := 
$(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008-tiny/lib
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mmicromips/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008-tiny
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mmicromips/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft-tiny/lib
+MULTILIB_REQUIRED   += mclib=tiny/mips32r2/mmicromips/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft-tiny/lib
diff --git a/gcc/config/mips/t-mti-elf b/gcc/config/mips/t-mti-elf
deleted file mode 100644
index 9655397e4de..00000000000
--- a/gcc/config/mips/t-mti-elf
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2012-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r2, hard-float big-endian.  Add mips32,
-# soft-float, and little-endian variations.
-
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL 
msoft-float mnan=2008
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008
-MULTILIB_MATCHES = EL=mel EB=meb mips32r2=mips32r3 mips32r2=mips32r5 
mips64r2=mips64r3 mips64r2=mips64r5
-
-# The 64 bit ABI is not supported on the mips32 architecture.
-MULTILIB_EXCEPTIONS += *mips32*/*mabi=64*
-
-# The 64 bit ABI is not supported on the mips32r2 architecture.
-# Because mips32r2 is the default we can't use that flag to trigger
-# the exception so we check for mabi=64 with no specific mips
-# architecture flag instead.
-MULTILIB_EXCEPTIONS += mabi=64*
-
-# We do not want to build mips16 versions of mips64* architectures.
-MULTILIB_EXCEPTIONS += *mips64*/*mips16*
-MULTILIB_EXCEPTIONS += *mips16/mabi=64*
-
-# We only want micromips for mips32r2 architecture.
-MULTILIB_EXCEPTIONS += *mips32/mmicromips*
-MULTILIB_EXCEPTIONS += *mips64*/mmicromips*
-MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*
-
-# We do not want nan2008 libraries for soft-float,
-# mips32[r1], or mips64[r1].
-MULTILIB_EXCEPTIONS += *msoft-float*/*mnan=2008*
-MULTILIB_EXCEPTIONS += *mips32/*mnan=2008*
-MULTILIB_EXCEPTIONS += *mips64/*mnan=2008*
diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux
deleted file mode 100644
index 4919fd9bc45..00000000000
--- a/gcc/config/mips/t-mti-linux
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright (C) 2012-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r2, hard-float big-endian.  Add mips32,
-# soft-float, and little-endian variations.
-
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL 
msoft-float mnan=2008
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008
-MULTILIB_MATCHES = EL=mel EB=meb mips32r2=mips32r3 mips32r2=mips32r5 
mips64r2=mips64r3 mips64r2=mips64r5
-
-MULTILIB_REQUIRED    =
-MULTILIB_OSDIRNAMES  = .=mips-r2-hard/lib
-MULTILIB_REQUIRED   += mips64r2
-MULTILIB_OSDIRNAMES += mips64r2=!mips-r2-hard/lib32
-MULTILIB_REQUIRED   += mips64r2/mabi=64
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64=!mips-r2-hard/lib64
-
-MULTILIB_REQUIRED   += mnan=2008
-MULTILIB_OSDIRNAMES += mnan.2008=!mips-r2-hard-nan2008/lib
-MULTILIB_REQUIRED   += mips64r2/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/mnan.2008=!mips-r2-hard-nan2008/lib32
-MULTILIB_REQUIRED   += mips64r2/mabi=64/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/mnan.2008=!mips-r2-hard-nan2008/lib64
-
-MULTILIB_REQUIRED   += msoft-float
-MULTILIB_OSDIRNAMES += msoft-float=!mips-r2-soft/lib
-MULTILIB_REQUIRED   += mips64r2/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/msoft-float=!mips-r2-soft/lib32
-MULTILIB_REQUIRED   += mips64r2/mabi=64/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/msoft-float=!mips-r2-soft/lib64
-
-#MULTILIB_REQUIRED   += msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib
-#MULTILIB_REQUIRED   += mips64r2/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mips64r2/msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib32
-#MULTILIB_REQUIRED   += mips64r2/mabi=64/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mips64r2/mabi.64/msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib64
-
-MULTILIB_REQUIRED   += EL
-MULTILIB_OSDIRNAMES += EL=!mipsel-r2-hard/lib
-MULTILIB_REQUIRED   += mips64r2/EL
-MULTILIB_OSDIRNAMES += mips64r2/EL=!mipsel-r2-hard/lib32
-MULTILIB_REQUIRED   += mips64r2/mabi=64/EL
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL=!mipsel-r2-hard/lib64
-
-MULTILIB_REQUIRED   += EL/mnan=2008
-MULTILIB_OSDIRNAMES += EL/mnan.2008=!mipsel-r2-hard-nan2008/lib
-MULTILIB_REQUIRED   += mips64r2/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/EL/mnan.2008=!mipsel-r2-hard-nan2008/lib32
-MULTILIB_REQUIRED   += mips64r2/mabi=64/EL/mnan=2008
-MULTILIB_OSDIRNAMES += 
mips64r2/mabi.64/EL/mnan.2008=!mipsel-r2-hard-nan2008/lib64
-
-MULTILIB_REQUIRED   += EL/msoft-float
-MULTILIB_OSDIRNAMES += EL/msoft-float=!mipsel-r2-soft/lib
-MULTILIB_REQUIRED   += mips64r2/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/EL/msoft-float=!mipsel-r2-soft/lib32
-MULTILIB_REQUIRED   += mips64r2/mabi=64/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float=!mipsel-r2-soft/lib64
-
-#MULTILIB_REQUIRED   += EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib
-#MULTILIB_REQUIRED   += mips64r2/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mips64r2/EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib32
-#MULTILIB_REQUIRED   += mips64r2/mabi=64/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mips64r2/mabi.64/EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib64
-
-# We will not include any 64 bit mips16 combinations.
-MULTILIB_REQUIRED   += mips16
-MULTILIB_OSDIRNAMES += mips16=!mips-r2-mips16-hard/lib
-MULTILIB_REQUIRED   += mips16/mnan=2008
-MULTILIB_OSDIRNAMES += mips16/mnan.2008=!mips-r2-mips16-hard-nan2008/lib
-MULTILIB_REQUIRED   += mips16/msoft-float
-MULTILIB_OSDIRNAMES += mips16/msoft-float=!mips-r2-mips16-soft/lib
-#MULTILIB_REQUIRED   += mips16/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mips16/msoft-float/mnan.2008=!mips-r2-mips16-soft-nan2008/lib
-
-MULTILIB_REQUIRED   += mips16/EL
-MULTILIB_OSDIRNAMES += mips16/EL=!mipsel-r2-mips16-hard/lib
-MULTILIB_REQUIRED   += mips16/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mips16/EL/mnan.2008=!mipsel-r2-mips16-hard-nan2008/lib
-MULTILIB_REQUIRED   += mips16/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips16/EL/msoft-float=!mipsel-r2-mips16-soft/lib
-#MULTILIB_REQUIRED   += mips16/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mips16/EL/msoft-float/mnan.2008=!mipsel-r2-mips16-soft-nan2008/lib
-
-MULTILIB_REQUIRED   += mmicromips
-MULTILIB_OSDIRNAMES += mmicromips=!micromips-r2-hard/lib
-MULTILIB_REQUIRED   += mmicromips/mnan=2008
-MULTILIB_OSDIRNAMES += mmicromips/mnan.2008=!micromips-r2-hard-nan2008/lib
-MULTILIB_REQUIRED   += mmicromips/msoft-float
-MULTILIB_OSDIRNAMES += mmicromips/msoft-float=!micromips-r2-soft/lib
-#MULTILIB_REQUIRED   += mmicromips/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mmicromips/msoft-float/mnan.2008=!micromips-r2-soft-nan2008/lib
-
-MULTILIB_REQUIRED   += mmicromips/EL
-MULTILIB_OSDIRNAMES += mmicromips/EL=!micromipsel-r2-hard/lib
-MULTILIB_REQUIRED   += mmicromips/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mmicromips/EL/mnan.2008=!micromipsel-r2-hard-nan2008/lib
-MULTILIB_REQUIRED   += mmicromips/EL/msoft-float
-MULTILIB_OSDIRNAMES += mmicromips/EL/msoft-float=!micromipsel-r2-soft/lib
-#MULTILIB_REQUIRED   += mmicromips/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += 
mmicromips/EL/msoft-float/mnan.2008=!micromipsel-r2-soft-nan2008/lib
-
-# Version 1 multilibs
-
-MULTILIB_REQUIRED   += mips32
-MULTILIB_OSDIRNAMES += mips32=!mips-r1-hard/lib
-MULTILIB_REQUIRED   += mips64
-MULTILIB_OSDIRNAMES += mips64=!mips-r1-hard/lib32
-MULTILIB_REQUIRED   += mips64/mabi=64
-MULTILIB_OSDIRNAMES += mips64/mabi.64=!mips-r1-hard/lib64
-
-MULTILIB_REQUIRED   += mips32/msoft-float
-MULTILIB_OSDIRNAMES += mips32/msoft-float=!mips-r1-soft/lib
-MULTILIB_REQUIRED   += mips64/msoft-float
-MULTILIB_OSDIRNAMES += mips64/msoft-float=!mips-r1-soft/lib32
-MULTILIB_REQUIRED   += mips64/mabi=64/msoft-float
-MULTILIB_OSDIRNAMES += mips64/mabi.64/msoft-float=!mips-r1-soft/lib64
-
-MULTILIB_REQUIRED   += mips32/EL
-MULTILIB_OSDIRNAMES += mips32/EL=!mipsel-r1-hard/lib
-MULTILIB_REQUIRED   += mips64/EL
-MULTILIB_OSDIRNAMES += mips64/EL=!mipsel-r1-hard/lib32
-MULTILIB_REQUIRED   += mips64/mabi=64/EL
-MULTILIB_OSDIRNAMES += mips64/mabi.64/EL=!mipsel-r1-hard/lib64
-
-MULTILIB_REQUIRED   += mips32/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips32/EL/msoft-float=!mipsel-r1-soft/lib
-MULTILIB_REQUIRED   += mips64/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64/EL/msoft-float=!mipsel-r1-soft/lib32
-MULTILIB_REQUIRED   += mips64/mabi=64/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64/mabi.64/EL/msoft-float=!mipsel-r1-soft/lib64
-
-# We will not include any 64 bit mips16 combinations.
-MULTILIB_REQUIRED   += mips32/mips16
-MULTILIB_OSDIRNAMES += mips32/mips16=!mips-r1-mips16-hard/lib
-MULTILIB_REQUIRED   += mips32/mips16/msoft-float
-MULTILIB_OSDIRNAMES += mips32/mips16/msoft-float=!mips-r1-mips16-soft/lib
-
-MULTILIB_REQUIRED   += mips32/mips16/EL
-MULTILIB_OSDIRNAMES += mips32/mips16/EL=!mipsel-r1-mips16-hard/lib
-MULTILIB_REQUIRED   += mips32/mips16/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips32/mips16/EL/msoft-float=!mipsel-r1-mips16-soft/lib
diff --git a/gcc/configure b/gcc/configure
index 150ab616414..1341e1cbd3f 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -853,6 +853,7 @@ enable_fixed_point
 enable_decimal_float
 DEFAULT_INSNEMIT_PARTITIONS
 DEFAULT_MATCHPD_PARTITIONS
+with_multi_buildlist
 with_float
 with_cpu
 enable_multiarch
@@ -7870,6 +7871,9 @@ $as_echo "$enable_multiarch$ma_msg_suffix" >&6; }
 
 
 
+# needed for restricting the fixedincludes multilibs that we install
+
+
 # default stack clash protection guard size as power of twos in bytes.
 # Please keep these in sync with params.def.
 stk_clash_min=12
@@ -21454,7 +21458,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 21457 "configure"
+#line 21461 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -21560,7 +21564,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 21563 "configure"
+#line 21567 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index bdb22d53e2c..ee98191411e 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -877,6 +877,9 @@ AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
 AC_SUBST(with_cpu)
 AC_SUBST(with_float)
 
+# needed for restricting the fixedincludes multilibs that we install
+AC_SUBST(with_multi_buildlist)
+
 # default stack clash protection guard size as power of twos in bytes.
 # Please keep these in sync with params.def.
 stk_clash_min=12
diff --git a/gcc/genmultilib b/gcc/genmultilib
index 85b241cd72a..5df8148e031 100644
--- a/gcc/genmultilib
+++ b/gcc/genmultilib
@@ -500,9 +500,6 @@ for rrule in ${multilib_reuse}; do
       echo "The rule ${rrule} contains an option absent from 
MULTILIB_OPTIONS." >&2
       exit 1
     fi
-  else
-    echo "The rule ${rrule} is trying to reuse nonexistent multilib." >&2
-    exit 1
   fi
 done
 
-- 
2.34.1

Reply via email to