diff options
author | John Gilmore <gnu@cygnus> | 1991-12-06 09:22:33 +0000 |
---|---|---|
committer | John Gilmore <gnu@cygnus> | 1991-12-06 09:22:33 +0000 |
commit | 7b2a87cab2884bec54b51082e409c46f3d94d912 (patch) | |
tree | aca7073a4275c1ecdae29f7e2b55bc6fd39f7fcb /gdb/symtab.c | |
parent | 1cca172985962a849c34d4c676fe64ca7a27a772 (diff) | |
download | gdb-7b2a87cab2884bec54b51082e409c46f3d94d912.zip gdb-7b2a87cab2884bec54b51082e409c46f3d94d912.tar.gz gdb-7b2a87cab2884bec54b51082e409c46f3d94d912.tar.bz2 |
* symtab.c (decode_line_1): If SKIP_PROLOGUE leaves us in
mid-line, be more careful about possibly advancing to the next line.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r-- | gdb/symtab.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c index a03f758..cd5c289 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -2114,7 +2114,16 @@ decode_line_1 (argptr, funfirstline, default_symtab, default_line) /* Convex: no need to suppress code on first line, if any */ val.pc = pc; #else - val.pc = (val.end && val.pc != pc) ? val.end : pc; + /* If SKIP_PROLOGUE left us in mid-line, and the next line is still + part of the same function: + advance to next line, + recalculate its line number (might not be N+1). */ + if (val.pc != pc && val.end && + find_pc_misc_function (pc) == find_pc_misc_function (val.end)) { + pc = val.end; /* First pc of next line */ + val = find_pc_line (pc, 0); + } + val.pc = pc; #endif values.sals = (struct symtab_and_line *)xmalloc (sizeof (struct symtab_and_line)); values.sals[0] = val; |