This is the mail archive of the binutils@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]

Re: [RX] Fix for Bug 22737


Hi,

This is the updated patch now with GAS test case and ChangeLog entry.

Tested with "make check" before and after the patch to make sure that
the testcase actually works.

Cheers,
Oleg

gas/ChangeLog:
	PR 22737
	* config/tc-rx.c (rx_start_line): Handle escaped double-quote character.
	* testsuite/gas/rx/pr22737.s: New test.
	* testsuite/gas/rx/pr22737.d: Likewise.
	* testsuite/gas/rx/rx.exp: Likewise.
diff --git a/gas/config/tc-rx.c b/gas/config/tc-rx.c
index 8e49ddd..6c8befe 100644
--- a/gas/config/tc-rx.c
+++ b/gas/config/tc-rx.c
@@ -2681,6 +2681,7 @@ rx_start_line (void)
   int in_single_quote = 0;
   int done = 0;
   char * p = input_line_pointer;
+  char prev_char = 0;
 
   /* Scan the line looking for question marks.  Skip past quote enclosed regions.  */
   do
@@ -2693,7 +2694,9 @@ rx_start_line (void)
 	  break;
 
 	case '"':
-	  in_double_quote = ! in_double_quote;
+	  /* Handle escaped double quote \" inside a string.  */
+	  if (prev_char != '\\')
+	    in_double_quote = ! in_double_quote;
 	  break;
 
 	case '\'':
@@ -2722,7 +2725,7 @@ rx_start_line (void)
 	  break;
 	}
 
-      p ++;
+      prev_char = *p++;
     }
   while (! done);
 }
diff --git a/gas/testsuite/gas/rx/pr22737.d b/gas/testsuite/gas/rx/pr22737.d
new file mode 100644
index 0000000..3705408
--- /dev/null
+++ b/gas/testsuite/gas/rx/pr22737.d
@@ -0,0 +1,15 @@
+#objdump: -dr
+
+dump.o:     file format elf32-rx-le
+
+
+Disassembly of section .*:
+
+00000000 <.*>:
+   0:	ff 16.*
+   2:	c8 1f 68 22.*
+   6:	d0 64.*
+   8:	a0 3f.*
+   a:	3a e1 4f.*
+   d:	da 0e 8c b6 c6 9c.*
+.*
diff --git a/gas/testsuite/gas/rx/pr22737.s b/gas/testsuite/gas/rx/pr22737.s
new file mode 100644
index 0000000..74b29f0
--- /dev/null
+++ b/gas/testsuite/gas/rx/pr22737.s
@@ -0,0 +1 @@
+.ascii	"\377\026\310\037h\"\320d\240?:\341O\332\016\214\266\306\234."
diff --git a/gas/testsuite/gas/rx/rx.exp b/gas/testsuite/gas/rx/rx.exp
index d8cca78..e6d21dda 100644
--- a/gas/testsuite/gas/rx/rx.exp
+++ b/gas/testsuite/gas/rx/rx.exp
@@ -35,3 +35,4 @@ foreach test [lsort [glob $srcdir/$subdir/*.sm]] {
 run_dump_test "rx-asm-good"
 # run_list_test "rx-asm-bad" "" "Generation of error messages with bogus Renesas assembler directives"
 run_dump_test "pr19665"
+run_dump_test "pr22737"

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