From 08ec958fe088c7a226bb35bd2993254ff21228a3 Mon Sep 17 00:00:00 2001 From: Claudiu Zissulescu Date: Wed, 28 Sep 2016 12:27:41 +0200 Subject: [ARC] Fix parsing leave_s and enter_s mnemonics. gas/ 2016-10-06 Claudiu Zissulescu * testsuite/gas/arc/leave_enter.d: New file. * testsuite/gas/arc/leave_enter.s: Likewise. * testsuite/gas/arc/regnames.d: Likewise. * testsuite/gas/arc/regnames.s: Likewise. * config/tc-arc.c (arc_parse_name): Don't match reg names against confirmed symbol names. --- gas/ChangeLog | 9 +++++++++ gas/config/tc-arc.c | 3 +-- gas/testsuite/gas/arc/leave_enter.d | 21 +++++++++++++++++++++ gas/testsuite/gas/arc/leave_enter.s | 16 ++++++++++++++++ gas/testsuite/gas/arc/regnames.d | 13 +++++++++++++ gas/testsuite/gas/arc/regnames.s | 8 ++++++++ 6 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 gas/testsuite/gas/arc/leave_enter.d create mode 100644 gas/testsuite/gas/arc/leave_enter.s create mode 100644 gas/testsuite/gas/arc/regnames.d create mode 100644 gas/testsuite/gas/arc/regnames.s (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index c88f70f..29b9cf6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2016-10-06 Claudiu Zissulescu + + * testsuite/gas/arc/leave_enter.d: New file. + * testsuite/gas/arc/leave_enter.s: Likewise. + * testsuite/gas/arc/regnames.d: Likewise. + * testsuite/gas/arc/regnames.s: Likewise. + * config/tc-arc.c (arc_parse_name): Don't match reg names against + confirmed symbol names. + 2016-10-06 Alan Modra * app.c (do_scrub_chars): Move fall through comment. diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c index f28abf4..f18ed1b 100644 --- a/gas/config/tc-arc.c +++ b/gas/config/tc-arc.c @@ -3331,8 +3331,7 @@ arc_parse_name (const char *name, if (!assembling_insn) return FALSE; - /* Handle only registers and address types. */ - if (e->X_op != O_absent) + if (e->X_op == O_symbol) return FALSE; sym = hash_find (arc_reg_hash, name); diff --git a/gas/testsuite/gas/arc/leave_enter.d b/gas/testsuite/gas/arc/leave_enter.d new file mode 100644 index 0000000..5eb1aef --- /dev/null +++ b/gas/testsuite/gas/arc/leave_enter.d @@ -0,0 +1,21 @@ +#objdump: -dr + +.*: +file format .*arc.* + + +Disassembly of section .text: + +[0-9a-f]+ <.text>: + 0: c0c2 leave_s \[r13-r13\] + 2: c4dc leave_s \[r13-gp,pcl\] + 4: c1dc leave_s \[r13-gp,fp\] + 6: c2dc leave_s \[r13-gp,blink\] + 8: c3dc leave_s \[r13-gp,fp,blink\] + a: c5dc leave_s \[r13-gp,fp,pcl\] + c: c6dc leave_s \[r13-gp,blink,pcl\] + e: c7dc leave_s \[r13-gp,fp,blink,pcl\] + 10: 1100 0000 ld r0,\[r1\] + 14: c0e2 enter_s \[r13-r13\] + 16: c1fc enter_s \[r13-gp,fp\] + 18: c2fc enter_s \[r13-gp,blink\] + 1a: c3fc enter_s \[r13-gp,fp,blink\] diff --git a/gas/testsuite/gas/arc/leave_enter.s b/gas/testsuite/gas/arc/leave_enter.s new file mode 100644 index 0000000..1bdcc06 --- /dev/null +++ b/gas/testsuite/gas/arc/leave_enter.s @@ -0,0 +1,16 @@ + .cpu HS + leave_s {r13-r13} + leave_s {r13-r26,pcl} + leave_s {r13-r26,fp} + leave_s {r13-r26,blink} + leave_s {r13-r26,fp,blink} + leave_s {r13-r26,fp,pcl} + leave_s {r13-r26,blink,pcl} + leave_s {r13-r26,fp,blink,pcl} + + ld r0,[r1] + + enter_s {r13-r13} + enter_s {r13-r26,fp} + enter_s {r13-r26,blink} + enter_s {r13-r26,fp,blink} diff --git a/gas/testsuite/gas/arc/regnames.d b/gas/testsuite/gas/arc/regnames.d new file mode 100644 index 0000000..5928a5e --- /dev/null +++ b/gas/testsuite/gas/arc/regnames.d @@ -0,0 +1,13 @@ +#objdump: -dr + +.*: +file format .*arc.* + + +Disassembly of section .text: + +[0-9a-f]+ : + 0: 200a 0f80 0000 0014 mov r0,0x14 + 8: 2000 0f80 0000 0000 add r0,r0,0 + c: R_ARC_32_ME gp + 10: 1a00 3080 st r2,\[gp\] + 10: R_ARC_SDA_LDST .text\+0x14 diff --git a/gas/testsuite/gas/arc/regnames.s b/gas/testsuite/gas/arc/regnames.s new file mode 100644 index 0000000..aaea270 --- /dev/null +++ b/gas/testsuite/gas/arc/regnames.s @@ -0,0 +1,8 @@ +;;; Check if assembler can discriminate between labels having the same +;;; name as a register + +r0: + mov r0,@r1-@r0 + add r0,r0,@gp + st r2,[gp,@r1@sda] +r1: -- cgit v1.1