Approved by Jim Blandy (jimb@redhat.com).
authorFred Fish <fnf@specifix.com>
Fri, 22 Feb 2002 00:17:13 +0000 (00:17 +0000)
committerFred Fish <fnf@specifix.com>
Fri, 22 Feb 2002 00:17:13 +0000 (00:17 +0000)
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.

gdb/ChangeLog
gdb/dbxread.c
gdb/symtab.c
gdb/symtab.h

index d1385a2..4a1808e 100644 (file)
@@ -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.
index e9c2a85..26be70c 100644 (file)
@@ -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 ();
 
index 743253f..d03a7c9 100644 (file)
@@ -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;
index f01cbbe..75470e6 100644 (file)
@@ -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
   {