Fixes a bug in the ARM port of GAS when parsing inverted register lists.

* config/tc-arm.c (parse_operands): Fix bug setting writeback
	values for '^' on OP_REGLSTs.
	(do_push_pop): Add new writeback constraint.
This commit is contained in:
Michael Perkins 2015-03-10 11:47:46 +00:00 committed by Nick Clifton
parent 4e9aaefbd0
commit 5e0d7f77b2
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-03-10 Michael Perkins <perkinsmg75@yahoo.co.uk>
* config/tc-arm.c (parse_operands): Fix bug setting writeback
values for '^' on OP_REGLSTs.
(do_push_pop): Add new writeback constraint.
2015-03-10 Renlin Li <renlin.li@arm.com>
* config/tc-arm.c (mapping_state): Remove first MAP_DATA emitting code.

View File

@ -7038,7 +7038,7 @@ parse_operands (char *str, const unsigned int *pattern, bfd_boolean thumb)
val = parse_reg_list (&str);
if (*str == '^')
{
inst.operands[1].writeback = 1;
inst.operands[i].writeback = 1;
str++;
}
break;
@ -9036,6 +9036,8 @@ do_pli (void)
static void
do_push_pop (void)
{
constraint (inst.operands[0].writeback,
_("push/pop do not support {reglist}^"));
inst.operands[1] = inst.operands[0];
memset (&inst.operands[0], 0, sizeof inst.operands[0]);
inst.operands[0].isreg = 1;