From: Daniel Jacobowitz Date: Wed, 29 Aug 2007 20:03:43 +0000 (+0000) Subject: * dwarf2dbg.c (dwarf2_directive_loc): Emit duplicate .loc directives. X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=851feff8738f722820d25f7e90fc58babc5421be;p=deliverable%2Fbinutils-gdb.git * 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 21aaf0d88e..271643f28f 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 93b5f480b0..39e434c012 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 8127ac80ec..39c07f04e0 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 0000000000..badf1a2e12 --- /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 0000000000..9fea2fec97 --- /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 2373290e84..a192361486 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...