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-Tag: gdb-7.10-release~1326 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5e0d7f77b20d74d2866e41b72697581c39f3197b;p=external%2Fbinutils.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 992eee5..0a6a4b9 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 ded989a..1f15116 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;