aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2020-11-17 15:45:01 +0000
committerNick Clifton <nickc@redhat.com>2020-11-17 15:45:01 +0000
commit3d955acb36f483c05724181da5ffba46b1303c43 (patch)
tree995b5e0ade78938225f697971674875ebc114858
parent811bdca093965e857e4f4473fbf336da2a93518a (diff)
downloadgdb-3d955acb36f483c05724181da5ffba46b1303c43.zip
gdb-3d955acb36f483c05724181da5ffba46b1303c43.tar.gz
gdb-3d955acb36f483c05724181da5ffba46b1303c43.tar.bz2
When reading string arguments for the assembler's string directives treat space separated strings as a single entity.
* 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.
-rw-r--r--gas/doc/as.texi4
-rw-r--r--gas/read.c5
-rw-r--r--gas/testsuite/gas/all/asciz.d10
-rw-r--r--gas/testsuite/gas/all/asciz.s2
-rw-r--r--gas/testsuite/gas/all/gas.exp1
5 files changed, 21 insertions, 1 deletions
diff --git a/gas/doc/as.texi b/gas/doc/as.texi
index 4d52945..278de41 100644
--- a/gas/doc/as.texi
+++ b/gas/doc/as.texi
@@ -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}}
diff --git a/gas/read.c b/gas/read.c
index 7fd9af0..9ba61cd 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -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
index 0000000..afba96b
--- /dev/null
+++ b/gas/testsuite/gas/all/asciz.d
@@ -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
index 0000000..eb66ee6
--- /dev/null
+++ b/gas/testsuite/gas/all/asciz.s
@@ -0,0 +1,2 @@
+ .data
+ .asciz "a" "b", "c" "d"
diff --git a/gas/testsuite/gas/all/gas.exp b/gas/testsuite/gas/all/gas.exp
index af9cb61..47515bf 100644
--- a/gas/testsuite/gas/all/gas.exp
+++ b/gas/testsuite/gas/all/gas.exp
@@ -473,3 +473,4 @@ run_dump_test "fill-1"
gas_test "pr23938.s" "" "" ".xstabs"
run_dump_test "nop"
+run_dump_test "asciz"