summaryrefslogtreecommitdiff
path: root/gas/dwarf2dbg.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1999-08-26 12:13:01 +0000
committerNick Clifton <nickc@redhat.com>1999-08-26 12:13:01 +0000
commit4915531fd98843f67d6577f50b02bc22ed2ab961 (patch)
tree1515f75c5cfff3390176210a27e60b43e52b7575 /gas/dwarf2dbg.c
parent9494e36219487df57b32fff424cbc6b3994d9563 (diff)
downloadbinutils-redhat-4915531fd98843f67d6577f50b02bc22ed2ab961.tar.gz
This makes the line number info for the end of a function match what the
standard specifies. The current code could confuse a debugger.
Diffstat (limited to 'gas/dwarf2dbg.c')
-rw-r--r--gas/dwarf2dbg.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 230e189d87..c45d598ffc 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -341,9 +341,15 @@ out_end_sequence ()
}
else
{
- delta = addr - ls.sm.addr;
+ delta = (addr - ls.sm.addr) / DWARF2_LINE_MIN_INSN_LENGTH;
if (delta > 0)
- gen_addr_line (0, delta / DWARF2_LINE_MIN_INSN_LENGTH);
+ {
+ /* Advance address without updating the line-debug
+ matrix---the end_sequence entry is used only to tell
+ the debugger the end of the sequence.*/
+ out_opcode (DW_LNS_advance_pc);
+ out_uleb128 (delta);
+ }
}
}
else