diff options
author | Jan Beulich <jbeulich@suse.com> | 2025-02-14 09:33:18 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2025-02-14 09:33:18 +0100 |
commit | 69d68fbeb88aa12949838916a8f1b957a85097a1 (patch) | |
tree | 521eedcd6b0b2d422dd7eab15a17cc18e7c0e17d | |
parent | 298a68339718add09a0026aeda4c427df7924372 (diff) | |
download | binutils-69d68fbeb88aa12949838916a8f1b957a85097a1.zip binutils-69d68fbeb88aa12949838916a8f1b957a85097a1.tar.gz binutils-69d68fbeb88aa12949838916a8f1b957a85097a1.tar.bz2 |
gas: fix rs_fill_nop listing
In commit a0094f1a70e1 ("gas: make .nops output visible in listing") I
was wrongly assuming fr_fix would be zero for rs_fill_nop, when that's
only a side effect of listing_newline() inserting dummy frags, but only
when file/line did actually change from the previous invocation. This is
in particular not going to be true when the .nops directive isn't the
first statement on a line.
-rw-r--r-- | gas/listing.c | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/nop-7.l | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/nop-7.s | 6 |
4 files changed, 14 insertions, 2 deletions
diff --git a/gas/listing.c b/gas/listing.c index 11ae450..be71597 100644 --- a/gas/listing.c +++ b/gas/listing.c @@ -820,9 +820,8 @@ calc_hex (list_info_type *list) } else if (frag_ptr->fr_type == rs_fill_nop && frag_ptr->fr_opcode) { - gas_assert (!octet_in_frag); - /* Print as many bytes from fr_opcode as is sensible. */ + octet_in_frag = 0; while (octet_in_frag < (unsigned int) frag_ptr->fr_offset && data_buffer_size < MAX_BYTES - 3) { diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 34d0a2f..329efc7 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -638,6 +638,7 @@ if [gas_32_check] then { run_dump_test "nop-1-suffix" run_list_test "nop-1" "-aln" run_dump_test "nop-2" + run_list_test "nop-7" "-aln" run_dump_test "optimize-1" run_dump_test "optimize-1a" run_dump_test "optimize-2" diff --git a/gas/testsuite/gas/i386/nop-7.l b/gas/testsuite/gas/i386/nop-7.l new file mode 100644 index 0000000..2a74137 --- /dev/null +++ b/gas/testsuite/gas/i386/nop-7.l @@ -0,0 +1,6 @@ +[ ]*[0-9]+[ ]+\.text +[ ]*[0-9]+[ ]+nops: +[ ]*[0-9]+[ ]+.... F88D7426[ ]+clc; \.nops 4; stc +[ ]*[0-9]+[ ]+00F9 +[ ]*[0-9]+[ ]+.... C3[ ]+ret +#pass diff --git a/gas/testsuite/gas/i386/nop-7.s b/gas/testsuite/gas/i386/nop-7.s new file mode 100644 index 0000000..8018f21 --- /dev/null +++ b/gas/testsuite/gas/i386/nop-7.s @@ -0,0 +1,6 @@ + .text +nops: + clc; .nops 4; stc + ret + + .end |