The value of default_mips_arch will be always used for -march by default, no matter what value is given to -mabi. It will produce abnormal elf file like: ELF 32-bit LSB relocatable, MIPS, MIPS64 rel2 version 1 (SYSV)
So we use with_arch_32 and with_arch_64 instead of default_mips_arch for all mipsisa[32,64]rN triples. gcc/ChangeLog: * config.gcc: use with_arch_32 and with_arch_64 instead of default_mips_arch for mipsisa[32,64]rN triples. --- gcc/config.gcc | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index f0958e1c959..0b6d093d847 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -2518,13 +2518,16 @@ mips*-*-linux*) # Linux MIPS, either endian. extra_options="${extra_options} linux-android.opt" case ${target} in mipsisa32r6*) - default_mips_arch=mips32r6 + with_arch_32="mips32r6" + with_arch_64="mips64r6" ;; mipsisa32r2*) - default_mips_arch=mips32r2 + with_arch_32="mips32r2" + with_arch_64="mips64r2" ;; mipsisa32*) - default_mips_arch=mips32 + with_arch_32="mips32" + with_arch_64="mips64" ;; mips64el-st-linux-gnu) default_mips_abi=n32 @@ -2540,22 +2543,26 @@ mips*-*-linux*) # Linux MIPS, either endian. ;; mipsisa64r6*-*-linux-gnuabi64) default_mips_abi=64 - default_mips_arch=mips64r6 + with_arch_32="mips32r6" + with_arch_64="mips64r6" enable_mips_multilibs="yes" ;; mipsisa64r6*-*-linux*) default_mips_abi=n32 - default_mips_arch=mips64r6 + with_arch_32="mips32r6" + with_arch_64="mips64r6" enable_mips_multilibs="yes" ;; mipsisa64r2*-*-linux-gnuabi64) default_mips_abi=64 - default_mips_arch=mips64r2 + with_arch_32="mips32r2" + with_arch_64="mips64r2" enable_mips_multilibs="yes" ;; mipsisa64r2*-*-linux*) default_mips_abi=n32 - default_mips_arch=mips64r2 + with_arch_32="mips32r2" + with_arch_64="mips64r2" enable_mips_multilibs="yes" ;; mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64) -- 2.30.2