From be13be5b687ff0c31eacb0bdd0ab90c329476ed1 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 29 Mar 2022 08:18:14 +0200 Subject: [PATCH] gas/Dwarf: special-case .linefile only for macros Restrict the PR gas/16908 workaround to just macros, matching the original intention as well as the comment there. For constructs like .irp or .rept the reasoning doesn't apply, as there's no separate "invocation" point which may be of interest to record (for, as said there, short macros). --- gas/macro.c | 3 ++- gas/testsuite/gas/elf/dwarf-5-irp.d | 20 ++++++++++++++++++++ gas/testsuite/gas/elf/dwarf-5-irp.s | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/gas/macro.c b/gas/macro.c index 2228f5b5404..0d143dc5046 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -234,7 +234,8 @@ buffer_and_nest (const char *from, const char *to, sb *ptr, number when expanding the macro), and since for short macros we clearly prefer reporting the point of expansion anyway, there's not an obviously better fix here. */ - if (len >= 8 && strncasecmp (ptr->ptr + i, "linefile", 8) == 0) + if (from != NULL && strcasecmp (from, "MACRO") == 0 + && len >= 8 && strncasecmp (ptr->ptr + i, "linefile", 8) == 0) { char saved_eol_char = ptr->ptr[ptr->len]; diff --git a/gas/testsuite/gas/elf/dwarf-5-irp.d b/gas/testsuite/gas/elf/dwarf-5-irp.d index c305c8dc276..d43a66057ff 100644 --- a/gas/testsuite/gas/elf/dwarf-5-irp.d +++ b/gas/testsuite/gas/elf/dwarf-5-irp.d @@ -52,6 +52,22 @@ Raw dump of debug contents .* .*Advance PC by .* .*Extended opcode 1: End of Sequence +.*Set File Name to entry 4 .* +.*Extended opcode 2: .* +.*Advance Line by 35 to 36 +.*Copy +.*Special opcode .* and Line by 1 to 37 +.*Advance PC by .* +.*Extended opcode 1: End of Sequence + +.*Set File Name to entry 4 .* +.*Extended opcode 2: .* +.*Advance Line by 35 to 36 +.*Copy +.*Special opcode .* and Line by 1 to 37 +.*Advance PC by .* +.*Extended opcode 1: End of Sequence + Contents of the \.debug_aranges section: @@ -66,6 +82,8 @@ Contents of the \.debug_aranges section: 0+ [0-9a-f]+ ? 0+ [0-9a-f]+ ? 0+ [0-9a-f]+ ? + 0+ [0-9a-f]+ ? + 0+ [0-9a-f]+ ? 0+ 0+ ? Contents of the \.debug_rnglists section: @@ -75,6 +93,8 @@ Contents of the \.debug_rnglists section: [0-9a-f]+ 0+ [0-9a-f]+ ? [0-9a-f]+ 0+ [0-9a-f]+ ? [0-9a-f]+ 0+ [0-9a-f]+ ? + [0-9a-f]+ 0+ [0-9a-f]+ ? + [0-9a-f]+ 0+ [0-9a-f]+ ? [0-9a-f]+ #pass diff --git a/gas/testsuite/gas/elf/dwarf-5-irp.s b/gas/testsuite/gas/elf/dwarf-5-irp.s index e9e874699f6..b133cfd4fa9 100644 --- a/gas/testsuite/gas/elf/dwarf-5-irp.s +++ b/gas/testsuite/gas/elf/dwarf-5-irp.s @@ -29,3 +29,10 @@ _start: .nop n = n - 1 .endr + + .irp n, cd, nm +# 35 "irp.s" + .section .text.\n, "ax" + .nop + .nop + .endr -- 2.30.2