[PATCH][GAS][ARM] Fix for POP {regs}^ problem
Kyrill Tkachov
kyrylo.tkachov@arm.com
Fri Mar 6 16:34:00 GMT 2015
Hi Michael,
On 06/03/15 16:20, Michael Perkins wrote:
> Here is a diff for a patch to fix a problem with gas accepting the POP {reglist}^ instruction. It was encoding this in the same way as the POP {reglist} instruction. The patch rejects the POP {reglist}^ instruction in ARM mode (previously only rejected in THUMB mode).
>
> gas/ChangeLog:
>
> 2015-03-06 Michael Perkins <perkinsmg75@yahoo.co.uk>
>
> * config/tc-arm.c (parse_operands): Set inst.operands[i].writeback for '^' on OP_REGLSTs.
> (do_push_pop): New writeback constraint.
>
>
>
> diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
> index 08155ac..136e52c 100644
> --- a/gas/config/tc-arm.c
> +++ b/gas/config/tc-arm.c
> @@ -7042,7 +7042,7 @@ parse_operands (char *str, const
> unsigned int *pattern, bf
> val =
> parse_reg_list (&str);
> if (*str
> == '^')
> {
> - inst.operands[1].writeback = 1;
> + inst.operands[i].writeback = 1;
> str++;
> }
> break;
> @@ -9040,6 +9040,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;
Seems like your mail client or something else has munged the patch.
Can you please resend it as an attachment or ensure that the layout is
preserved?
Thanks,
Kyrill
More information about the Binutils
mailing list