diff options
author | Nick Clifton <nickc@redhat.com> | 2020-11-17 15:45:01 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-11-17 15:45:01 +0000 |
commit | 3d955acb36f483c05724181da5ffba46b1303c43 (patch) | |
tree | 995b5e0ade78938225f697971674875ebc114858 /gas | |
parent | 811bdca093965e857e4f4473fbf336da2a93518a (diff) | |
download | gdb-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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/doc/as.texi | 4 | ||||
-rw-r--r-- | gas/read.c | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/all/asciz.d | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/all/asciz.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/all/gas.exp | 1 |
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}} @@ -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" |