gas: further adjust file/line handling for .macro
authorJan Beulich <jbeulich@suse.com>
Tue, 12 Apr 2022 07:03:43 +0000 (09:03 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 12 Apr 2022 07:03:43 +0000 (09:03 +0200)
commit657edeab3857130ddc005a88104711dd9e339ff0
treeb4f040497736bddfd48df6a767b2c73ca0433762
parent2ee1792bec225ea19c71095cee5a3a9ae6df7c59
gas: further adjust file/line handling for .macro

Commit 7992631e8c0b ("gas/Dwarf: improve debug info generation from .irp
and alike blocks"), while dealing okay with actual assembly source files
not using .file/.line and alike outside but not inside of .macro, has
undue effects when the logical file/line pair was already overridden:
Line numbers would continuously increment while processing the expanded
macro, while the goal of the PR gas/16908 workaround is to keep the
expansion associated with the line invoking the macro. However, as soon
as enough state was overridden _inside_ the macro to cause as_where() to
no longer fall back top as_where_physical(), honor this by resuming the
bumping of the logical line number.

Note that from_sb_is_expansion's initializer was 1 for an unknown
reason. While renaming the variable and changing its type, also change
the initializer to "expanding_none", which would have been "0" in the
original code. Originally the initializer value itself wasn't ever used
anyway (requiring sb_index != -1), as it necessarily had changed in
input_scrub_include_sb() alongside setting sb_index to other than -1.

Strictly speaking input_scrub_insert_line() perhaps shouldn't use
expanding_none, yet none of the other enumerators fit there either. And
then strictly speaking that function probably shouldn't exist in the
first place. It's used only by tic54x.
gas/input-scrub.c
gas/read.c
gas/sb.h
gas/testsuite/gas/elf/line.l