From: Jan Beulich Date: Fri, 30 Aug 2024 09:21:58 +0000 (+0200) Subject: gas: generated code/data listing output vs .endr and alike X-Git-Tag: gdb-16-branchpoint~1031 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f14f47e0ce4c95f50f36fbf7b01ad1ecf136d38;p=thirdparty%2Fbinutils-gdb.git gas: generated code/data listing output vs .endr and alike These ending directives are swallowed by buffer_and_nest() and hence aren't seen by read_a_source_file(). Thus they also weren't announced to the listing subsystem. That was, when macro expansions are included, thus misguided to associate possible output resulting from the first line of the construct being expanded with both the .endr and that first line (i.e. showing it twice). --- diff --git a/gas/macro.c b/gas/macro.c index d0c90d30e47..8b376f7f490 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -220,6 +220,11 @@ buffer_and_nest (const char *from, const char *to, sb *ptr, { /* Reset the string to not include the ending rune. */ ptr->len = line_start; + + /* With the ending directive consumed here, announce the + line for macro-expanded listings. */ + if (listing & LISTING_MACEXP) + listing_newline (NULL); break; } } diff --git a/gas/testsuite/gas/macros/macros.exp b/gas/testsuite/gas/macros/macros.exp index 3e84902c65f..3ac199feaa5 100644 --- a/gas/testsuite/gas/macros/macros.exp +++ b/gas/testsuite/gas/macros/macros.exp @@ -29,6 +29,7 @@ run_dump_test test3 if { ![istarget *c54x*-*-*] && ![istarget *c4x*-*-*] && ![istarget "nds32*-*-*"] } { run_dump_test irp run_dump_test rept + run_list_test rept "-almn" run_dump_test repeat run_dump_test vararg } diff --git a/gas/testsuite/gas/macros/rept.l b/gas/testsuite/gas/macros/rept.l new file mode 100644 index 00000000000..626e9dc6117 --- /dev/null +++ b/gas/testsuite/gas/macros/rept.l @@ -0,0 +1,8 @@ +#... +[ ]*[1-9][0-9]*[ ]+\.rept 3 +[ ]*[1-9][0-9]*[ ]+\.long foo1 +[ ]*[1-9][0-9]*[ ]+\.endr +[ ]*[1-9][0-9]* 0000 [0 ]+> +\.long foo1 +[ ]*[1-9][0-9]* 000[48] [0 ]+> +\.long foo1 +[ ]*[1-9][0-9]* 00[01][08] [0 ]+> +\.long foo1 +#pass