[patch] Fix to processing end of function stab in dbxread.c

Jim Ingham jingham@apple.com
Wed Jul 10 19:08:00 GMT 2002


Index: dbxread.c
===================================================================
RCS file: /cvs/src/src/gdb/dbxread.c,v
retrieving revision 1.33
diff -c -w -r1.33 dbxread.c
*** dbxread.c   10 May 2002 07:32:50 -0000      1.33
--- dbxread.c   11 Jul 2002 01:58:29 -0000
***************
Hi, all...

Fred added an extra record_line call which closes off the last SLINE in 
a function when we come across the end of function N_FUN stab.  This 
was a good thing, but unfortunately, he used function_start_offset, 
which on most systems is just the offset to the TEXT section (the 
exception being Solaris, where is actually is the real function start). 
  He really meant to use last_function_start, which is the real address 
of the last N_FUN stab seen.

I also fixed the comment before sline_found_in_function to accord with 
its current usage, since the old comment is wrong.  We set 
sline_found_in_function = 0 at the same time we set 
last_function_start, but then we set it to 1 when we see the FIRST 
SLINE in a function, but last_function_start is still good after that.  
And nobody ever checks it to see if they should use last_function_start 
or not...

*** 2761,2768 ****
     static CORE_ADDR last_function_start;

     /* If this is nonzero, we've seen an N_SLINE since the start of the 
current
!      function.  Initialized to nonzero to assure that 
last_function_start
!      is never used uninitialized.  */
     static int sline_found_in_function = 1;

     /* If this is nonzero, we've seen a non-gcc N_OPT symbol for this 
source
--- 2761,2768 ----
     static CORE_ADDR last_function_start;

     /* If this is nonzero, we've seen an N_SLINE since the start of the 
current
!      function.  We use this to tell us to move the first sline to the 
beginning
!      of the function regardless of what its given value is. */
     static int sline_found_in_function = 1;

     /* If this is nonzero, we've seen a non-gcc N_OPT symbol for this 
source
***************
*** 2799,2805 ****
         {
           /* 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 ();

--- 2799,2805 ----
         {
           /* This N_FUN marks the end of a function.  This closes off 
the
              current block.  */
!         record_line (current_subfile, 0, last_function_start + valu);
           within_function = 0;
           new = pop_context ();

Jim
--
Jim Ingham                                   jingham@apple.com
Developer Tools - gdb
Apple Computer



More information about the Gdb-patches mailing list