This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]