diff mbox

config/tc-aarch64.c: Avoid trying to parse a vector mov as immediate.

Message ID 5272F55A.5020408@linaro.org
State Superseded
Headers show

Commit Message

Will Newton Nov. 1, 2013, 12:27 a.m. UTC
Parsing a vector mov instruction currently leads to a phantom undefined
symbol being added to the symbol table. e.g.:

       .text
       mov     x0, v0.D[0]

Produces an undefined symbol called "v0.D".

2013-10-31  Will Newton  <will.newton@linaro.org>

	* config/tc-aarch64.c (parse_operands): Avoid trying to
	parse a vector register as an immediate.
---
 gas/config/tc-aarch64.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Yufeng Zhang Nov. 1, 2013, 9:41 a.m. UTC | #1
Hi Will,

Thanks for fixing this.  Can you please add a gas test for it?

Thanks,
Yufeng

On 11/01/13 00:27, Will Newton wrote:
>
> Parsing a vector mov instruction currently leads to a phantom undefined
> symbol being added to the symbol table. e.g.:
>
>         .text
>         mov     x0, v0.D[0]
>
> Produces an undefined symbol called "v0.D".
>
> 2013-10-31  Will Newton<will.newton@linaro.org>
>
> 	* config/tc-aarch64.c (parse_operands): Avoid trying to
> 	parse a vector register as an immediate.
> ---
>   gas/config/tc-aarch64.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
> index 14ffdad..02fe4de 100644
> --- a/gas/config/tc-aarch64.c
> +++ b/gas/config/tc-aarch64.c
> @@ -4810,7 +4810,8 @@ parse_operands (char *str, const aarch64_opcode *opcode)
>   	case AARCH64_OPND_IMM_MOV:
>   	  {
>   	    char *saved = str;
> -	    if (reg_name_p (str, REG_TYPE_R_Z_SP))
> +	    if (reg_name_p (str, REG_TYPE_R_Z_SP) ||
> +		reg_name_p (str, REG_TYPE_VN))
>   	      goto failure;
>   	    str = saved;
>   	    po_misc_or_fail (my_get_expression (&inst.reloc.exp,&str,
diff mbox

Patch

diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 14ffdad..02fe4de 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -4810,7 +4810,8 @@  parse_operands (char *str, const aarch64_opcode *opcode)
 	case AARCH64_OPND_IMM_MOV:
 	  {
 	    char *saved = str;
-	    if (reg_name_p (str, REG_TYPE_R_Z_SP))
+	    if (reg_name_p (str, REG_TYPE_R_Z_SP) ||
+		reg_name_p (str, REG_TYPE_VN))
 	      goto failure;
 	    str = saved;
 	    po_misc_or_fail (my_get_expression (&inst.reloc.exp, &str,