aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2012-05-22 01:55:16 +0000
committerMike Frysinger <vapier@gentoo.org>2012-05-22 01:55:16 +0000
commit95bfe26e6b78a99478c0c518ac61ee12a44c1f62 (patch)
treee2274eda925f929919fd3a51c48d74a79a395e5c
parent99fd6accc4b12b8a788395218c46c0c4a6be8131 (diff)
downloadgdb-95bfe26e6b78a99478c0c518ac61ee12a44c1f62.zip
gdb-95bfe26e6b78a99478c0c518ac61ee12a44c1f62.tar.gz
gdb-95bfe26e6b78a99478c0c518ac61ee12a44c1f62.tar.bz2
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>
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-mips.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 116ba37..caef2ba 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index d6b8ecb..4760c05 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -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"),