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).
This commit is contained in:
Jan Beulich 2024-08-30 11:21:58 +02:00
parent 358ada8bc5
commit 4f14f47e0c
3 changed files with 14 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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
}

View File

@ -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