diff mbox series

RISC-V: Always define MULTILIB_DEFAULTS

Message ID 20201120083357.118470-1-kito.cheng@sifive.com
State New
Headers show
Series RISC-V: Always define MULTILIB_DEFAULTS | expand

Commit Message

Kito Cheng Nov. 20, 2020, 8:33 a.m. UTC
- Define MULTILIB_DEFAULTS can reduce the total number of multilib if
   the default arch and ABI are listed in the multilib config.

 - This also simplify the implementation of --with-multilib-list.

gcc/ChangeLog:

	* config.gcc (riscv*-*-*): Add TARGET_RISCV_DEFAULT_ABI and
	TARGET_RISCV_DEFAULT_ARCH to tm_defines.
	Remove including riscv/withmultilib.h for --with-multilib-list.
	* config/riscv/riscv.h (STRINGIZING): New.
	(__STRINGIZING): Ditto.
	(MULTILIB_DEFAULTS): Ditto.
	* config/riscv/withmultilib.h: Remove.
---
 gcc/config.gcc                  | 39 ++-----------------------
 gcc/config/riscv/riscv.h        |  9 ++++++
 gcc/config/riscv/withmultilib.h | 51 ---------------------------------
 3 files changed, 11 insertions(+), 88 deletions(-)
 delete mode 100644 gcc/config/riscv/withmultilib.h

Comments

Jim Wilson Nov. 20, 2020, 10:10 p.m. UTC | #1
On Fri, Nov 20, 2020 at 12:34 AM Kito Cheng <kito.cheng@sifive.com> wrote:

>  - Define MULTILIB_DEFAULTS can reduce the total number of multilib if
>    the default arch and ABI are listed in the multilib config.
>

It looks like a good idea, but it doesn't seem to work.  A toolchain
configured without specifying arch/abi gives me

rohan:2149$ riscv64-unknown-elf-gcc --print-multi-lib
.;
rv32i/ilp32;@march=rv32i@mabi=ilp32
rv32im/ilp32;@march=rv32im@mabi=ilp32
rv32iac/ilp32;@march=rv32iac@mabi=ilp32
rv32imac/ilp32;@march=rv32imac@mabi=ilp32
rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d

The rv64imafdc/lp64d is actually built twice, as it is the default and is
built explicitly.  But otherwise the list is correct.

If I configure a toolchain with the patch using --with-arch=rv32i
--with-abi=ilp32 --enable-multilib then I get

rohan:2151$ ./xgcc -B./ --print-multi-lib
.;
rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d

and notice that 3 multilibs have mysteriously disappeared.  We have four
multilibs with -mabi=ilp32.  The rv32i/ilp32 multilib is gone as it is now
the default, but the other 3 should still be there.

The gcc/multilib.h file in the gcc build dir looks correct.  I think that
there is something wrong with the processing of the default args against
the multilib list.  if you have just one default arg, and an entry matches
then obviously you don't build it.  But if you have two default args, then
both must match before you choose to not build it, and I think the code has
never supported this case.

This works for the --with-multilib-list case because we currently only
support one arch/abi with this configure option, so there can be no
confusion with matching multiple default arguments.

Jim
Kito Cheng Nov. 21, 2020, 6:37 a.m. UTC | #2
On Sat, Nov 21, 2020 at 6:12 AM Jim Wilson <jimw@sifive.com> wrote:
>
> On Fri, Nov 20, 2020 at 12:34 AM Kito Cheng <kito.cheng@sifive.com> wrote:
>
> >  - Define MULTILIB_DEFAULTS can reduce the total number of multilib if
> >    the default arch and ABI are listed in the multilib config.
> >
>
> It looks like a good idea, but it doesn't seem to work.  A toolchain
> configured without specifying arch/abi gives me
>
> rohan:2149$ riscv64-unknown-elf-gcc --print-multi-lib
> .;
> rv32i/ilp32;@march=rv32i@mabi=ilp32
> rv32im/ilp32;@march=rv32im@mabi=ilp32
> rv32iac/ilp32;@march=rv32iac@mabi=ilp32
> rv32imac/ilp32;@march=rv32imac@mabi=ilp32
> rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
> rv64imac/lp64;@march=rv64imac@mabi=lp64
> rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
>
> The rv64imafdc/lp64d is actually built twice, as it is the default and is
> built explicitly.  But otherwise the list is correct.
>
> If I configure a toolchain with the patch using --with-arch=rv32i
> --with-abi=ilp32 --enable-multilib then I get
>
> rohan:2151$ ./xgcc -B./ --print-multi-lib
> .;
> rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
> rv64imac/lp64;@march=rv64imac@mabi=lp64
> rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
>
> and notice that 3 multilibs have mysteriously disappeared.  We have four
> multilibs with -mabi=ilp32.  The rv32i/ilp32 multilib is gone as it is now
> the default, but the other 3 should still be there.
>
> The gcc/multilib.h file in the gcc build dir looks correct.  I think that
> there is something wrong with the processing of the default args against
> the multilib list.  if you have just one default arg, and an entry matches
> then obviously you don't build it.  But if you have two default args, then
> both must match before you choose to not build it, and I think the code has
> never supported this case.

Hmmm, thanks for catching this, this is really weird, I verified with
-print-multi-directory seems to work correctly but the output of
--print-multi-lib does not work as expected, let me investigate what
happened...

[kitoc@hsinchu02 t-build]$ ./install/bin/riscv64-elf-gcc --print-multi-lib
.;
rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
[kitoc@hsinchu02 t-build]$ ./install/bin/riscv64-elf-gcc
-print-multi-directory -march=rv32iac -mabi=ilp32
rv32iac/ilp32
[kitoc@hsinchu02 t-build]$ ./install/bin/riscv64-elf-gcc
-print-multi-directory -march=rv32i -mabi=ilp32
rv32i/ilp32
[kitoc@hsinchu02 t-build]$ ./install/bin/riscv64-elf-gcc
-print-multi-directory -march=rv32im -mabi=ilp32
rv32im/ilp32

> This works for the --with-multilib-list case because we currently only
> support one arch/abi with this configure option, so there can be no
> confusion with matching multiple default arguments.
>
> Jim
Jim Wilson Nov. 27, 2020, 11:48 p.m. UTC | #3
On Fri, Nov 20, 2020 at 10:38 PM Kito Cheng <kito.cheng@gmail.com> wrote:

> On Sat, Nov 21, 2020 at 6:12 AM Jim Wilson <jimw@sifive.com> wrote:
> > On Fri, Nov 20, 2020 at 12:34 AM Kito Cheng <kito.cheng@sifive.com>
> wrote:
> >
> > >  - Define MULTILIB_DEFAULTS can reduce the total number of multilib if
> > >    the default arch and ABI are listed in the multilib config.
> >
> > It looks like a good idea, but it doesn't seem to work.  A toolchain
> > configured without specifying arch/abi gives me
>
> Hmmm, thanks for catching this, this is really weird, I verified with
> -print-multi-directory seems to work correctly but the output of
> --print-multi-lib does not work as expected, let me investigate what
> happened...
>

With your fix for --print-multi-lib this MULTILIB_DEFAULTS patch now looks
OK to me.

Jim
Kito Cheng Nov. 30, 2020, 3:52 a.m. UTC | #4
Committed to trunk :)

On Sat, Nov 28, 2020 at 7:49 AM Jim Wilson <jimw@sifive.com> wrote:
>
> On Fri, Nov 20, 2020 at 10:38 PM Kito Cheng <kito.cheng@gmail.com> wrote:
>
> > On Sat, Nov 21, 2020 at 6:12 AM Jim Wilson <jimw@sifive.com> wrote:
> > > On Fri, Nov 20, 2020 at 12:34 AM Kito Cheng <kito.cheng@sifive.com>
> > wrote:
> > >
> > > >  - Define MULTILIB_DEFAULTS can reduce the total number of multilib if
> > > >    the default arch and ABI are listed in the multilib config.
> > >
> > > It looks like a good idea, but it doesn't seem to work.  A toolchain
> > > configured without specifying arch/abi gives me
> >
> > Hmmm, thanks for catching this, this is really weird, I verified with
> > -print-multi-directory seems to work correctly but the output of
> > --print-multi-lib does not work as expected, let me investigate what
> > happened...
> >
>
> With your fix for --print-multi-lib this MULTILIB_DEFAULTS patch now looks
> OK to me.
>
> Jim
Sebastian Huber Jan. 26, 2021, 6:11 a.m. UTC | #5
Hello Kito,

On 20/11/2020 09:33, Kito Cheng wrote:
>   - Define MULTILIB_DEFAULTS can reduce the total number of multilib if
>     the default arch and ABI are listed in the multilib config.
>
>   - This also simplify the implementation of --with-multilib-list.
>
> gcc/ChangeLog:
>
> 	* config.gcc (riscv*-*-*): Add TARGET_RISCV_DEFAULT_ABI and
> 	TARGET_RISCV_DEFAULT_ARCH to tm_defines.
> 	Remove including riscv/withmultilib.h for --with-multilib-list.
> 	* config/riscv/riscv.h (STRINGIZING): New.
> 	(__STRINGIZING): Ditto.
> 	(MULTILIB_DEFAULTS): Ditto.
> 	* config/riscv/withmultilib.h: Remove.

I think this change broke the multilib generation for RTEMS (git 
bisect). I had to apply this local patch to build 
a5ad5d5c478ee7bebf057161bb8715ee7d286875:

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6f1ee62f7fd..7449c470265 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -4612,7 +4612,6 @@ case "${target}" in
                         exit 1
                         ;;
                 esac
- with_arch=`${srcdir}/config/riscv/arch-canonicalize ${with_arch}`
                 tm_defines="${tm_defines} 
TARGET_RISCV_DEFAULT_ARCH=${with_arch}"

                 # Make sure --with-abi is valid.  If it was not specified,

With this commit we have:

./gcc/xgcc -print-multi-lib
.;
rv32i/ilp32;@march=rv32i@mabi=ilp32
rv32im/ilp32;@march=rv32im@mabi=ilp32
rv32iac/ilp32;@march=rv32iac@mabi=ilp32
rv32imac/ilp32;@march=rv32imac@mabi=ilp32
rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
rv64imafd/lp64d;@march=rv64imafd@mabi=lp64d
rv64imafd/lp64d/medany;@march=rv64imafd@mabi=lp64d@mcmodel=medany
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imac/lp64/medany;@march=rv64imac@mabi=lp64@mcmodel=medany
rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
rv64imafdc/lp64d/medany;@march=rv64imafdc@mabi=lp64d@mcmodel=medany

./gcc/xgcc -print-multi-directory -march=rv32imafd -mabi=ilp32d
rv32imafd/ilp32d

So for this option set it prints a multilib directory which is not 
listed. Also GCC seems to use this directory for the search paths and 
cannot find multilib specific C++ header files for example.

In the commit before (3a5d8ed231a0329822b7c032ba0834991732d2a0) we have:

./gcc/xgcc -print-multi-lib
.;
rv32i/ilp32;@march=rv32i@mabi=ilp32
rv32im/ilp32;@march=rv32im@mabi=ilp32
rv32imafd/ilp32d;@march=rv32imafd@mabi=ilp32d <-- HERE
rv32iac/ilp32;@march=rv32iac@mabi=ilp32
rv32imac/ilp32;@march=rv32imac@mabi=ilp32
rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
rv64imafd/lp64d;@march=rv64imafd@mabi=lp64d
rv64imafd/lp64d/medany;@march=rv64imafd@mabi=lp64d@mcmodel=medany
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imac/lp64/medany;@march=rv64imac@mabi=lp64@mcmodel=medany
rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
rv64imafdc/lp64d/medany;@march=rv64imafdc@mabi=lp64d@mcmodel=medany

./gcc/xgcc -print-multi-directory -march=rv32imafd -mabi=ilp32d
rv32imafd/ilp32d

I was not able to figure out what prevents the generation of the 
rv32imafd/ilp32d multilib in commit 
a5ad5d5c478ee7bebf057161bb8715ee7d286875. The gcc/tm.h contains this:

gcc/tm.h:#ifndef TARGET_RISCV_DEFAULT_ARCH
gcc/tm.h:# define TARGET_RISCV_DEFAULT_ARCH rv32gc
gcc/tm.h:#ifndef TARGET_RISCV_DEFAULT_ABI
gcc/tm.h:# define TARGET_RISCV_DEFAULT_ABI ilp32d
Kito Cheng Jan. 28, 2021, 4:18 a.m. UTC | #6
Hi Sebastian:

Thank for report this issue, I can reproduce that, I'll investigate what
happened today :)

Sebastian Huber <sebastian.huber@embedded-brains.de> 於 2021年1月26日 週二 14:13
寫道:

> Hello Kito,
>
> On 20/11/2020 09:33, Kito Cheng wrote:
> >   - Define MULTILIB_DEFAULTS can reduce the total number of multilib if
> >     the default arch and ABI are listed in the multilib config.
> >
> >   - This also simplify the implementation of --with-multilib-list.
> >
> > gcc/ChangeLog:
> >
> >       * config.gcc (riscv*-*-*): Add TARGET_RISCV_DEFAULT_ABI and
> >       TARGET_RISCV_DEFAULT_ARCH to tm_defines.
> >       Remove including riscv/withmultilib.h for --with-multilib-list.
> >       * config/riscv/riscv.h (STRINGIZING): New.
> >       (__STRINGIZING): Ditto.
> >       (MULTILIB_DEFAULTS): Ditto.
> >       * config/riscv/withmultilib.h: Remove.
>
> I think this change broke the multilib generation for RTEMS (git
> bisect). I had to apply this local patch to build
> a5ad5d5c478ee7bebf057161bb8715ee7d286875:
>
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 6f1ee62f7fd..7449c470265 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -4612,7 +4612,6 @@ case "${target}" in
>                          exit 1
>                          ;;
>                  esac
> - with_arch=`${srcdir}/config/riscv/arch-canonicalize ${with_arch}`
>                  tm_defines="${tm_defines}
> TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
>
>                  # Make sure --with-abi is valid.  If it was not specified,
>
> With this commit we have:
>
> ./gcc/xgcc -print-multi-lib
> .;
> rv32i/ilp32;@march=rv32i@mabi=ilp32
> rv32im/ilp32;@march=rv32im@mabi=ilp32
> rv32iac/ilp32;@march=rv32iac@mabi=ilp32
> rv32imac/ilp32;@march=rv32imac@mabi=ilp32
> rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
> rv64imafd/lp64d;@march=rv64imafd@mabi=lp64d
> rv64imafd/lp64d/medany;@march=rv64imafd@mabi=lp64d@mcmodel=medany
> rv64imac/lp64;@march=rv64imac@mabi=lp64
> rv64imac/lp64/medany;@march=rv64imac@mabi=lp64@mcmodel=medany
> rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
> rv64imafdc/lp64d/medany;@march=rv64imafdc@mabi=lp64d@mcmodel=medany
>
> ./gcc/xgcc -print-multi-directory -march=rv32imafd -mabi=ilp32d
> rv32imafd/ilp32d
>
> So for this option set it prints a multilib directory which is not
> listed. Also GCC seems to use this directory for the search paths and
> cannot find multilib specific C++ header files for example.
>
> In the commit before (3a5d8ed231a0329822b7c032ba0834991732d2a0) we have:
>
> ./gcc/xgcc -print-multi-lib
> .;
> rv32i/ilp32;@march=rv32i@mabi=ilp32
> rv32im/ilp32;@march=rv32im@mabi=ilp32
> rv32imafd/ilp32d;@march=rv32imafd@mabi=ilp32d <-- HERE
> rv32iac/ilp32;@march=rv32iac@mabi=ilp32
> rv32imac/ilp32;@march=rv32imac@mabi=ilp32
> rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
> rv64imafd/lp64d;@march=rv64imafd@mabi=lp64d
> rv64imafd/lp64d/medany;@march=rv64imafd@mabi=lp64d@mcmodel=medany
> rv64imac/lp64;@march=rv64imac@mabi=lp64
> rv64imac/lp64/medany;@march=rv64imac@mabi=lp64@mcmodel=medany
> rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d
> rv64imafdc/lp64d/medany;@march=rv64imafdc@mabi=lp64d@mcmodel=medany
>
> ./gcc/xgcc -print-multi-directory -march=rv32imafd -mabi=ilp32d
> rv32imafd/ilp32d
>
> I was not able to figure out what prevents the generation of the
> rv32imafd/ilp32d multilib in commit
> a5ad5d5c478ee7bebf057161bb8715ee7d286875. The gcc/tm.h contains this:
>
> gcc/tm.h:#ifndef TARGET_RISCV_DEFAULT_ARCH
> gcc/tm.h:# define TARGET_RISCV_DEFAULT_ARCH rv32gc
> gcc/tm.h:#ifndef TARGET_RISCV_DEFAULT_ABI
> gcc/tm.h:# define TARGET_RISCV_DEFAULT_ABI ilp32d
>
> --
> embedded brains GmbH
> Herr Sebastian HUBER
> Dornierstr. 4
> 82178 Puchheim
> Germany
> email: sebastian.huber@embedded-brains.de
> phone: +49-89-18 94 741 - 16
> fax:   +49-89-18 94 741 - 08
>
> Registergericht: Amtsgericht München
> Registernummer: HRB 157899
> Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
> Unsere Datenschutzerklärung finden Sie hier:
> https://embedded-brains.de/datenschutzerklaerung/
>
>
diff mbox series

Patch

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 0ae58482657..b12cf9b0f9d 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -4610,6 +4610,7 @@  case "${target}" in
 			exit 1
 			;;
 		esac
+		tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
 
 		# Make sure --with-abi is valid.  If it was not specified,
 		# pick a default based on the ISA, preferring soft-float
@@ -4631,6 +4632,7 @@  case "${target}" in
 			exit 1
 			;;
 		esac
+		tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
 
 		# Make sure ABI and ISA are compatible.
 		case "${with_abi},${with_arch}" in
@@ -4673,7 +4675,6 @@  case "${target}" in
 
 		# Handle --with-multilib-list.
 		if test "x${with_multilib_list}" != xdefault; then
-			tm_file="${tm_file} riscv/withmultilib.h"
 			tmake_file="${tmake_file} riscv/t-withmultilib"
 
 			case ${with_multilib_list} in
@@ -4685,42 +4686,6 @@  case "${target}" in
 				echo "--with-multilib-list=${with_multilib_list} not supported."
 				exit 1
 			esac
-
-			# Define macros to select the default multilib.
-			case ${with_arch} in
-			rv32gc)
-				tm_defines="${tm_defines} TARGET_MLIB_ARCH=1"
-				;;
-			rv64gc)
-				tm_defines="${tm_defines} TARGET_MLIB_ARCH=2"
-				;;
-			*)
-				echo "unsupported --with-arch for --with-multilib-list"
-				exit 1
-			esac
-			case ${with_abi} in
-			ilp32)
-				tm_defines="${tm_defines} TARGET_MLIB_ABI=1"
-				;;
-			ilp32f)
-				tm_defines="${tm_defines} TARGET_MLIB_ABI=2"
-				;;
-			ilp32d)
-				tm_defines="${tm_defines} TARGET_MLIB_ABI=3"
-				;;
-			lp64)
-				tm_defines="${tm_defines} TARGET_MLIB_ABI=4"
-				;;
-			lp64f)
-				tm_defines="${tm_defines} TARGET_MLIB_ABI=5"
-				;;
-			lp64d)
-				tm_defines="${tm_defines} TARGET_MLIB_ABI=6"
-				;;
-			*)
-				echo "unsupported --with-abi for --with-multilib"
-				exit 1
-			esac
 		fi
 		;;
 
diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h
index e71fbf31279..df3003fbaa0 100644
--- a/gcc/config/riscv/riscv.h
+++ b/gcc/config/riscv/riscv.h
@@ -76,6 +76,15 @@  extern const char *riscv_default_mtune (int argc, const char **argv);
 #define ASM_MISA_SPEC ""
 #endif
 
+/* Reference:
+     https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html#Stringizing  */
+#define STRINGIZING(s) __STRINGIZING(s)
+#define __STRINGIZING(s) #s
+
+#define MULTILIB_DEFAULTS \
+  {"march=" STRINGIZING (TARGET_RISCV_DEFAULT_ARCH), \
+   "mabi=" STRINGIZING (TARGET_RISCV_DEFAULT_ABI) }
+
 #undef ASM_SPEC
 #define ASM_SPEC "\
 %(subtarget_asm_debugging_spec) \
diff --git a/gcc/config/riscv/withmultilib.h b/gcc/config/riscv/withmultilib.h
deleted file mode 100644
index d022716d3b8..00000000000
--- a/gcc/config/riscv/withmultilib.h
+++ /dev/null
@@ -1,51 +0,0 @@ 
-/* MULTILIB_DEFAULTS definitions for --with-multilib-list.
-   Copyright (C) 2018-2020 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.
-
-   Under Section 7 of GPL version 3, you are granted additional
-   permissions described in the GCC Runtime Library Exception, version
-   3.1, as published by the Free Software Foundation.
-
-   You should have received a copy of the GNU General Public License and
-   a copy of the GCC Runtime Library Exception along with this program;
-   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if TARGET_MLIB_ARCH == 1
-
-# if TARGET_MLIB_ABI == 1
-#  define MULTILIB_DEFAULTS {"march=rv32gc", "mabi=ilp32" }
-# elif TARGET_MLIB_ABI == 2
-#  define MULTILIB_DEFAULTS {"march=rv32gc", "mabi=ilp32f" }
-# elif TARGET_MLIB_ABI == 3
-#  define MULTILIB_DEFAULTS {"march=rv32gc", "mabi=ilp32d" }
-# else
-#  error "unsupported TARGET_MLIB_ABI value for rv32gc"
-# endif
-
-#elif TARGET_MLIB_ARCH == 2
-
-# if TARGET_MLIB_ABI == 4
-#  define MULTILIB_DEFAULTS {"march=rv64gc", "mabi=lp64" }
-# elif TARGET_MLIB_ABI == 5
-#  define MULTILIB_DEFAULTS {"march=rv64gc", "mabi=lp64f" }
-# elif TARGET_MLIB_ABI == 6
-#  define MULTILIB_DEFAULTS {"march=rv64gc", "mabi=lp64d" }
-# else
-#  error "unsupported TARGET_MLIB_ABI value for rv64gc"
-# endif
-
-#else
-# error "unsupported TARGET_MLIB_ARCH value"
-#endif