diff options
author | Alan Modra <amodra@gmail.com> | 2022-08-11 09:51:03 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-08-11 12:03:05 +0930 |
commit | 4d74aab7aa562fe79d4669cdad0c32610531cbc0 (patch) | |
tree | 5dc95ed8fd4fc55c369c21cc9942b210b3a47350 /gas/testsuite/config | |
parent | 5291ecf9720c97e2a82e8766a642e33529f890d1 (diff) | |
download | fsf-binutils-gdb-4d74aab7aa562fe79d4669cdad0c32610531cbc0.zip fsf-binutils-gdb-4d74aab7aa562fe79d4669cdad0c32610531cbc0.tar.gz fsf-binutils-gdb-4d74aab7aa562fe79d4669cdad0c32610531cbc0.tar.bz2 |
PR29466, APP/NO_APP with .linefile
Commit 53f2b36a54b9 exposed a bug in sb_scrub_and_add_sb that could
result in losing input. If scrubbing results in expansion past the
holding capacity of do_scrub_chars output buffer, then do_scrub_chars
stashes the extra input for the next call. That call never came
because sb_scrub_and_add_sb wrongly decided it was done. Fix that by
allowing sb_scrub_and_add_sb to see whether there is pending input.
Also allow a little extra space so that in most cases we won't need
to resize the output buffer.
sb_scrub_and_add_sb also limited output to the size of the input,
rather than the actual output buffer size. Fixing that resulted in a
fail of gas/testsuite/macros/dot with an extra warning: "end of file
not at end of a line; newline inserted". OK, so the macro in dot.s
really does finish without end-of-line. Apparently the macro
expansion code relied on do_scrub_chars returning early. So fix that
too by adding a newline if needed in macro_expand_body.
PR 29466
* app.c (do_scrub_pending): New function.
* as.h: Declare it.
* input-scrub.c (input_scrub_include_sb): Add extra space for
two .linefile directives.
* sb.c (sb_scrub_and_add_sb): Take into account pending input.
Allow output to max.
* macro.c (macro_expand_body): Add terminating newline.
* testsuite/config/default.exp (SIZE, SIZEFLAGS): Define.
* testsuite/gas/macros/app5.d,
* testsuite/gas/macros/app5.s: New test.
* testsuite/gas/macros/macros.exp: Run it.
Diffstat (limited to 'gas/testsuite/config')
-rw-r--r-- | gas/testsuite/config/default.exp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gas/testsuite/config/default.exp b/gas/testsuite/config/default.exp index 5a3dda9..21859d9 100644 --- a/gas/testsuite/config/default.exp +++ b/gas/testsuite/config/default.exp @@ -52,6 +52,14 @@ if ![info exists NMFLAGS] then { set NMFLAGS {} } +if ![info exists SIZE] then { + set SIZE [findfile $base_dir/size] +} + +if ![info exists SIZEFLAGS] then { + set SIZEFLAGS "" +} + if ![info exists OBJCOPY] then { set OBJCOPY [findfile $base_dir/../../binutils/objcopy] } |