[binutils-gdb] [ARC] Fix parsing leave_s and enter_s mnemonics.

Claudiu Zissulescu claziss@sourceware.org
Thu Oct 6 15:08:00 GMT 2016


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=08ec958fe088c7a226bb35bd2993254ff21228a3

commit 08ec958fe088c7a226bb35bd2993254ff21228a3
Author: Claudiu Zissulescu <claziss@synopsys.com>
Date:   Wed Sep 28 12:27:41 2016 +0200

    [ARC] Fix parsing leave_s and enter_s mnemonics.
    
    gas/
    2016-10-06  Claudiu Zissulescu  <claziss@synopsys.com>
    
    	* 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.

Diff:
---
 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(-)

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  <claziss@synopsys.com>
+
+	* 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  <amodra@gmail.com>
 
 	* 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]+ <r0>:
+   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:



More information about the Binutils-cvs mailing list