aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>2002-02-22 00:17:13 +0000
committerFred Fish <fnf@specifix.com>2002-02-22 00:17:13 +0000
commite8717518fcdbb494188cbbfeb57037be3fe7bc11 (patch)
treeedcfe13a8489f62884f395ffd22663c3e848178c
parentb78c3c1808ccc5ac50423f61c4225cca2e0f7d66 (diff)
downloadgdb-e8717518fcdbb494188cbbfeb57037be3fe7bc11.zip
gdb-e8717518fcdbb494188cbbfeb57037be3fe7bc11.tar.gz
gdb-e8717518fcdbb494188cbbfeb57037be3fe7bc11.tar.bz2
Approved by Jim Blandy (jimb@redhat.com).
2002-02-21 Fred Fish <fnf@redhat.com> * dbxread.c (process_one_symbol): When finding an N_FUN symbol that marks the end of the range of a function, enter a line number entry that has a line number of zero and a PC offset that matches the end of the function. This starts a range of PC's for which no line number information is known. * symtab.c (find_pc_sect_line): If our best fit is in a range of PC's for which no line number info is found (line number is zero) then we didn't find any valid line information. * symtab.h: Document use of zero line number entry.
-rw-r--r--gdb/ChangeLog12
-rw-r--r--gdb/dbxread.c1
-rw-r--r--gdb/symtab.c7
-rw-r--r--gdb/symtab.h5
4 files changed, 24 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d1385a2..4a1808e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2002-02-21 Fred Fish <fnf@redhat.com>
+
+ * dbxread.c (process_one_symbol): When finding an N_FUN symbol
+ that marks the end of the range of a function, enter a line number
+ entry that has a line number of zero and a PC offset that matches
+ the end of the function. This starts a range of PC's for which no
+ line number information is known.
+ * symtab.c (find_pc_sect_line): If our best fit is in a range of
+ PC's for which no line number info is found (line number is zero)
+ then we didn't find any valid line information.
+ * symtab.h: Document use of zero line number entry.
+
2002-02-21 Elena Zannoni <ezannoni@redhat.com>
* ppc-linux-nat.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS): Define.
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index e9c2a85..26be70c 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -2741,6 +2741,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
{
/* This N_FUN marks the end of a function. This closes off the
current block. */
+ record_line (current_subfile, 0, function_start_offset + valu);
within_function = 0;
new = pop_context ();
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 743253f..d03a7c9 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1823,6 +1823,13 @@ find_pc_sect_line (CORE_ADDR pc, struct sec *section, int notcurrent)
val.end = alt->pc;
}
}
+ else if (best->line == 0)
+ {
+ /* If our best fit is in a range of PC's for which no line
+ number info is available (line number is zero) then we didn't
+ find any valid line information. */
+ val.pc = pc;
+ }
else
{
val.symtab = best_symtab;
diff --git a/gdb/symtab.h b/gdb/symtab.h
index f01cbbe..75470e6 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -801,7 +801,10 @@ struct linetable_entry
30 0x300
10 0x400 - for the increment part of a for stmt.
- */
+ If an entry has a line number of zero, it marks the start of a PC
+ range for which no line number information is available. It is
+ acceptable, though wasteful of table space, for such a range to be
+ zero length. */
struct linetable
{