When reading string arguments for the assembler's string directives treat space separ...
authorNick Clifton <nickc@redhat.com>
Tue, 17 Nov 2020 15:45:01 +0000 (15:45 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 17 Nov 2020 15:45:01 +0000 (15:45 +0000)
* read.c (stringer): Treat space separated, quote enclosed strings
as a single string.
* doc/as.texi (asciz): Mention this behaviour in the description
of the asciz directive.
* testsuite/gas/all/asciz.s: New test.
* testsuite/gas/all/asciz.d: New test driver.
* testsuite/gas/all/gas.exp: Run the new test.

gas/doc/as.texi
gas/read.c
gas/testsuite/gas/all/asciz.d [new file with mode: 0644]
gas/testsuite/gas/all/asciz.s [new file with mode: 0644]
gas/testsuite/gas/all/gas.exp

index 4d5294552add60ab2395d78d9c2eba609e179864..278de41afc6b9ef4fe399b6ea45eb56e8c917adc 100644 (file)
@@ -4662,7 +4662,9 @@ trailing zero byte) into consecutive addresses.
 @cindex zero-terminated strings
 @cindex null-terminated strings
 @code{.asciz} is just like @code{.ascii}, but each string is followed by
-a zero byte.  The ``z'' in @samp{.asciz} stands for ``zero''.
+a zero byte.  The ``z'' in @samp{.asciz} stands for ``zero''.  Note that
+multiple string arguments not separated by commas will be concatenated
+together and only one final zero byte will be stored.
 
 @node Attach_to_group
 @section @code{.attach_to_group @var{name}}
index 7fd9af05fad7e6669d82e78f764d1a6114a1f9a2..9ba61cd96f4473f413ca80a5e876e38f525f5fcf 100644 (file)
@@ -5468,6 +5468,11 @@ stringer (int bits_appendzero)
          while (is_a_char (c = next_char_of_string ()))
            stringer_append_char (c, bitsize);
 
+         /* Treat "a" "b" as "ab".  Even if we are appending zeros.  */
+         SKIP_ALL_WHITESPACE ();
+         if (*input_line_pointer == '"')
+           break;
+
          if (append_zero)
            stringer_append_char (0, bitsize);
 
diff --git a/gas/testsuite/gas/all/asciz.d b/gas/testsuite/gas/all/asciz.d
new file mode 100644 (file)
index 0000000..afba96b
--- /dev/null
@@ -0,0 +1,10 @@
+#objdump: -s -j .data -j "\$DATA\$"
+#name: Generation of NUL terminated strings
+# The TIC4x and TIC5x assemblers do not support the concatenation of space separated strings.
+#xfail: tic4*-* tic5*-*
+
+.*: +file format .*
+
+Contents of section (\.data|\$DATA\$):
+.*ab\.cd\..*
+#pass
diff --git a/gas/testsuite/gas/all/asciz.s b/gas/testsuite/gas/all/asciz.s
new file mode 100644 (file)
index 0000000..eb66ee6
--- /dev/null
@@ -0,0 +1,2 @@
+       .data
+       .asciz "a" "b", "c"   "d"
index af9cb61e3f8d2f9368f2b393618675868d1dca42..47515bf769e116d102552ac51eb61acb2ef6dd58 100644 (file)
@@ -473,3 +473,4 @@ run_dump_test "fill-1"
 gas_test "pr23938.s" "" "" ".xstabs"
 
 run_dump_test "nop"
+run_dump_test "asciz"