gas: mips: fix segfault with invalid default cpu strings

If you configure gas for a mips32el-* target, the default cpu calculation
gets mangled, and we end up passing and invalid value as the default cpu.

If you try executing gas after that, it segfaults.  This is because it
assumes that the default cpu value is always valid.
$ ./gas/as-new
Assembler messages:
Error: Bad value (2) for default CPU
Segmentation fault (core dumped)

I'm not debating that the target tuple is valid, just that gas shouldn't
crash.  So add a friendly assert to avoid that.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger 2012-05-22 01:55:16 +00:00
parent 99fd6accc4
commit 95bfe26e6b
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2012-05-21 Mike Frysinger <vapier@gentoo.org>
* config/tc-mips.c (mips_after_parse_args): Assert that arch_info
is non-NULL.
2012-05-19 Alan Modra <amodra@gmail.com>
* config/obj-elf.c (obj_elf_section): Cater for TC_KEEP_OPERAND_SPACES

View File

@ -15005,7 +15005,10 @@ mips_after_parse_args (void)
}
if (arch_info == 0)
arch_info = mips_parse_cpu ("default CPU", MIPS_CPU_STRING_DEFAULT);
{
arch_info = mips_parse_cpu ("default CPU", MIPS_CPU_STRING_DEFAULT);
gas_assert (arch_info);
}
if (ABI_NEEDS_64BIT_REGS (mips_abi) && !ISA_HAS_64BIT_REGS (arch_info->isa))
as_bad (_("-march=%s is not compatible with the selected ABI"),