From: Michael Perkins Date: Tue, 10 Mar 2015 11:47:46 +0000 (+0000) Subject: Fixes a bug in the ARM port of GAS when parsing inverted register lists. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5e0d7f77b20d74d2866e41b72697581c39f3197b;p=binutils-gdb.git 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 992eee58b6d..0a6a4b92548 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-03-10 Michael Perkins + + * 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 * config/tc-arm.c (mapping_state): Remove first MAP_DATA emitting code. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index ded989aa390..1f1511637be 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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;