diff options
-rw-r--r-- | gas/input-scrub.c | 3 | ||||
-rw-r--r-- | gas/macro.c | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/dwarf-5-macro-include.d | 17 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/dwarf-5-macro-include.inc | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/dwarf-5-macro-include.s | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/elf.exp | 1 |
6 files changed, 29 insertions, 5 deletions
diff --git a/gas/input-scrub.c b/gas/input-scrub.c index 6791ef2..c967fad 100644 --- a/gas/input-scrub.c +++ b/gas/input-scrub.c @@ -564,9 +564,6 @@ as_where (unsigned int *linep) do { - if (!saved->is_linefile) - break; - if (expansion != expanding_macro) /* Nothing. */; else if (saved->logical_input_file != NULL diff --git a/gas/macro.c b/gas/macro.c index c41b9c0..714fca5 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -120,8 +120,7 @@ buffer_and_nest (const char *from, const char *to, sb *ptr, size_t from_len; size_t to_len = strlen (to); int depth = 1; - size_t line_start = ptr->len; - size_t more = get_line (ptr); + size_t line_start, more; if (to_len == 4 && strcasecmp (to, "ENDR") == 0) { @@ -147,6 +146,8 @@ buffer_and_nest (const char *from, const char *to, sb *ptr, xfree (linefile); } + line_start = ptr->len; + more = get_line (ptr); while (more) { /* Try to find the first pseudo op on the line. */ diff --git a/gas/testsuite/gas/elf/dwarf-5-macro-include.d b/gas/testsuite/gas/elf/dwarf-5-macro-include.d new file mode 100644 index 0000000..32ea638 --- /dev/null +++ b/gas/testsuite/gas/elf/dwarf-5-macro-include.d @@ -0,0 +1,17 @@ +#as: --gdwarf-5 -I${srcdir}/$subdir +#name: line number entries for expansions of .macro coming from .include +#readelf: -W -wl +# The am33 cr16 crx ft32 mn10* msp430 nds32* and rl78 targets do not evaluate the subtraction of symbols at assembly time. +# The d30v target emits sufficiently different debug info, apparently also covering padding it inserts. +# The riscv targets do not support the subtraction of symbols. +#xfail: am33*-* cr16-* crx-* d30v-* ft32-* mn10*-* msp430-* nds32*-* riscv*-* rl78-* + +Raw dump of debug contents .* +#... + Line Number Statements: +.*Extended opcode 2: .* +.*Special opcode .* advance Address by 0 .* and Line by 2 to 3 +.*Special opcode .* and Line by 1 to 4 +.*Special opcode .* and Line by 1 to 5 +.*Advance PC by .* +.*Extended opcode 1: End of Sequence diff --git a/gas/testsuite/gas/elf/dwarf-5-macro-include.inc b/gas/testsuite/gas/elf/dwarf-5-macro-include.inc new file mode 100644 index 0000000..7322377 --- /dev/null +++ b/gas/testsuite/gas/elf/dwarf-5-macro-include.inc @@ -0,0 +1,3 @@ + .macro m1 args:vararg + .nop + .endm diff --git a/gas/testsuite/gas/elf/dwarf-5-macro-include.s b/gas/testsuite/gas/elf/dwarf-5-macro-include.s new file mode 100644 index 0000000..6b6832a --- /dev/null +++ b/gas/testsuite/gas/elf/dwarf-5-macro-include.s @@ -0,0 +1,5 @@ + .include "dwarf-5-macro-include.inc" + + m1 1 + m1 2 + m1 3 diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index 145814b..105708d 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -309,6 +309,7 @@ if { [is_elf_format] } then { run_dump_test "dwarf-5-nop-for-line-table" $dump_opts run_dump_test "dwarf-5-irp" $dump_opts run_dump_test "dwarf-5-macro" $dump_opts + run_dump_test "dwarf-5-macro-include" $dump_opts run_dump_test "dwarf-3-func" $dump_opts run_dump_test "dwarf-5-func" $dump_opts run_dump_test "dwarf-5-func-global" $dump_opts |