From 851feff8738f722820d25f7e90fc58babc5421be Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Wed, 29 Aug 2007 20:03:43 +0000 Subject: [PATCH] * dwarf2dbg.c (dwarf2_directive_loc): Emit duplicate .loc directives. * gas/lns/lns-duplicate.d, gas/lns/lns-duplicate.s: New. * gas/lns/lns.exp: Run lns-duplicate. --- gas/ChangeLog | 4 ++++ gas/dwarf2dbg.c | 5 +++++ gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/lns/lns-duplicate.d | 10 ++++++++++ gas/testsuite/gas/lns/lns-duplicate.s | 5 +++++ gas/testsuite/gas/lns/lns.exp | 2 ++ 6 files changed, 31 insertions(+) create mode 100644 gas/testsuite/gas/lns/lns-duplicate.d create mode 100644 gas/testsuite/gas/lns/lns-duplicate.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 21aaf0d88ef..271643f28fb 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2007-08-29 Daniel Jacobowitz + + * dwarf2dbg.c (dwarf2_directive_loc): Emit duplicate .loc directives. + 2007-08-28 Daniel Jacobowitz * doc/c-arc.texi: Fix typo. diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 93b5f480b06..39e434c012f 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -570,6 +570,11 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED) { offsetT filenum, line; + /* If we see two .loc directives in a row, force the first one to be + output now. */ + if (loc_directive_seen) + dwarf2_emit_insn (0); + filenum = get_absolute_expression (); SKIP_WHITESPACE (); line = get_absolute_expression (); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 8127ac80ec5..39c07f04e0e 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-08-29 Daniel Jacobowitz + + * gas/lns/lns-duplicate.d, gas/lns/lns-duplicate.s: New. + * gas/lns/lns.exp: Run lns-duplicate. + 2007-08-29 H.J. Lu * gas/i386/i386.exp: Run x86-64-reg and x86-64-reg-intel. diff --git a/gas/testsuite/gas/lns/lns-duplicate.d b/gas/testsuite/gas/lns/lns-duplicate.d new file mode 100644 index 00000000000..badf1a2e12b --- /dev/null +++ b/gas/testsuite/gas/lns/lns-duplicate.d @@ -0,0 +1,10 @@ +#readelf: -wl +#name: lns-duplicate +Dump of debug contents of section \.debug_line: +#... + Line Number Statements: + Extended opcode 2: set Address to .* + Copy + Set basic block + .* by 1 to 2 +#pass diff --git a/gas/testsuite/gas/lns/lns-duplicate.s b/gas/testsuite/gas/lns/lns-duplicate.s new file mode 100644 index 00000000000..9fea2fec973 --- /dev/null +++ b/gas/testsuite/gas/lns/lns-duplicate.s @@ -0,0 +1,5 @@ + .loc_mark_labels 1 + .file 1 "foo.s" + .loc 1 1 0 + .loc 1 2 0 +.Llabel: diff --git a/gas/testsuite/gas/lns/lns.exp b/gas/testsuite/gas/lns/lns.exp index 2373290e842..a1923614868 100644 --- a/gas/testsuite/gas/lns/lns.exp +++ b/gas/testsuite/gas/lns/lns.exp @@ -4,6 +4,8 @@ if ![is_elf_format] then { run_list_test "lns-diag-1" "" +run_dump_test "lns-duplicate" + # ??? Won't work on targets that don't have a bare "nop" insn. # Perhaps we could arrange for an include file or something that # defined a macro... -- 2.30.2