From e3bccb5b97b7d2a15e31e8520539d8d6a58ad820 Mon Sep 17 00:00:00 2001 From: Yufeng Zhang Date: Tue, 12 Feb 2013 14:39:55 +0000 Subject: [PATCH] Fix the incorrect diagnosics on illegal system registers. gas/ * config/tc-aarch64.c (parse_operands): Change to compare the result of function call 'parse_sys_reg' with 'PARSE_FAIL' instead of 'FALSE'. gas/testsuite/ * gas/aarch64/diagnostic.s: Add test. * gas/aarch64/diagnostic.l: Update. --- gas/ChangeLog | 5 +++++ gas/config/tc-aarch64.c | 9 ++++++--- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/aarch64/diagnostic.l | 1 + gas/testsuite/gas/aarch64/diagnostic.s | 1 + 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index d08861f6a1a..b2de7ae05a6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2013-02-12 Yufeng Zhang + + * config/tc-aarch64.c (parse_operands): Change to compare the result + of function call 'parse_sys_reg' with 'PARSE_FAIL' instead of 'FALSE'. + 2013-01-29 Roland McGrath * config/tc-arm.c (md_apply_fix): Use as_bad_where for "bad diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index b62bd7a788b..0ec40e7dad2 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -1,6 +1,7 @@ /* tc-aarch64.c -- Assemble for the AArch64 ISA - Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Copyright 2009, 2010, 2011, 2012, 2013 + Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GAS. @@ -5003,7 +5004,8 @@ parse_operands (char *str, const aarch64_opcode *opcode) break; case AARCH64_OPND_SYSREG: - if ((val = parse_sys_reg (&str, aarch64_sys_regs_hsh, 1)) == FALSE) + if ((val = parse_sys_reg (&str, aarch64_sys_regs_hsh, 1)) + == PARSE_FAIL) { set_syntax_error (_("unknown or missing system register name")); goto failure; @@ -5012,7 +5014,8 @@ parse_operands (char *str, const aarch64_opcode *opcode) break; case AARCH64_OPND_PSTATEFIELD: - if ((val = parse_sys_reg (&str, aarch64_pstatefield_hsh, 0)) == FALSE) + if ((val = parse_sys_reg (&str, aarch64_pstatefield_hsh, 0)) + == PARSE_FAIL) { set_syntax_error (_("unknown or missing PSTATE field name")); goto failure; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index ecaf9e651da..e6553639fc0 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-12 Yufeng Zhang + + * gas/aarch64/diagnostic.s: Add test. + * gas/aarch64/diagnostic.l: Update. + 2013-02-12 Yufeng Zhang * gas/aarch64/int-insns.d: Update. diff --git a/gas/testsuite/gas/aarch64/diagnostic.l b/gas/testsuite/gas/aarch64/diagnostic.l index 714a2f0514c..cd8b3e2b753 100644 --- a/gas/testsuite/gas/aarch64/diagnostic.l +++ b/gas/testsuite/gas/aarch64/diagnostic.l @@ -85,3 +85,4 @@ [^:]*:87: Error: immediate offset out of range -256 to 252 at operand 3 -- `ldnp w7,w15,\[x3,#256\]' [^:]*:88: Error: shift is not permitted at operand 2 -- `movi v1.2d,4294967295,lsl#0' [^:]*:89: Error: shift amount non-zero at operand 2 -- `movi v1.8b,97,lsl#8' +[^:]*:90: Error: unknown or missing system register name at operand 1 -- `msr dummy,x1' diff --git a/gas/testsuite/gas/aarch64/diagnostic.s b/gas/testsuite/gas/aarch64/diagnostic.s index 2b1c01c00e0..1fa1b7426f3 100644 --- a/gas/testsuite/gas/aarch64/diagnostic.s +++ b/gas/testsuite/gas/aarch64/diagnostic.s @@ -87,3 +87,4 @@ ldnp w7, w15, [x3, #256] movi v1.2d, 4294967295, lsl #0 movi v1.8b, 97, lsl #8 + msr dummy, x1 -- 2.47.2