This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fixes a bug in the ARM port of GAS when parsing inverted register lists.


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

commit 5e0d7f77b20d74d2866e41b72697581c39f3197b
Author: Michael Perkins <perkinsmg75@yahoo.co.uk>
Date:   Tue Mar 10 11:47:46 2015 +0000

    Fixes a bug in the ARM port of GAS when parsing inverted register lists.
    
    	* config/tc-arm.c (parse_operands): Fix bug setting writeback
    	values for '^' on OP_REGLSTs.
    	(do_push_pop): Add new writeback constraint.

Diff:
---
 gas/ChangeLog       | 6 ++++++
 gas/config/tc-arm.c | 4 +++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 992eee5..0a6a4b9 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-10  Michael Perkins  <perkinsmg75@yahoo.co.uk>
+
+	* config/tc-arm.c (parse_operands): Fix bug setting writeback
+	values for '^' on OP_REGLSTs.
+	(do_push_pop): Add new writeback constraint.
+
 2015-03-10  Renlin Li  <renlin.li@arm.com>
 
 	* config/tc-arm.c (mapping_state): Remove first MAP_DATA emitting code.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index ded989a..1f15116 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -7038,7 +7038,7 @@ parse_operands (char *str, const unsigned int *pattern, bfd_boolean thumb)
 	  val = parse_reg_list (&str);
 	  if (*str == '^')
 	    {
-	      inst.operands[1].writeback = 1;
+	      inst.operands[i].writeback = 1;
 	      str++;
 	    }
 	  break;
@@ -9036,6 +9036,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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]