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]

Re: RFA: dbxread patch


J. Johnston writes:
 > Jim Blandy wrote:
 > > Yes, looks good.
 > > 
 > > Please add a comment briefly explaining why the check is needed
 > > (hand-generated stabs that contain N_FUN stabs but no N_SLINE stabs).
 > > 
 > 
 > I have attached a new patch with a comment.
 > 
 > > Elena suggested the change, right?  She should be credited in the
 > > ChangeLog entry.
 > > 
 > 
 > You are correct - thanks for spotting this oversight.
 > 
 > 2003-02-25  Jeff Johnston  <jjohnstn at redhat dot com>
 > 
 > 	From Elena Zannoni  <ezannoni at redhat dot com>
 > 	* dbxread.c (process_one_symbol): Only record line 0 if one or more sline
 > 	entries have been seen for the function.
 > 
 > 
 > Ok now?


Yes.
Elena


 > 
 > -- Jeff J.
 > 
 > > "J. Johnston" <jjohnstn at redhat dot com> writes:
 > > 
 > > 
 > >>The following patch fixes a problem when the stabs debug info
 > >>for a file does not contain sline entries.  This happens, for
 > >>example with the glibc syscall code which is generated assembler
 > >>code.  In process_one_symbol in dbxread.c, a line 0 is recorded for the
 > >>end of the function.  When there are no other line numbers, we end up finding this
 > >>line 0 as our alt_symtab in symtab:find_pc_sect_line() and we end up
 > >>subtracting one resulting in line -1.  This problem manifests itself
 > >>when we attempt to break at the generated glibc functions such as
 > >>kill.
 > >>
 > >>The patch changes process_one_symbol() to only record line 0 if sline info
 > >>has been found for the function.
 > >>
 > >>Ok to commit?
 > >>
 > >>-- Jeff J.
 > >>
 > >>
 > Index: dbxread.c
 > ===================================================================
 > RCS file: /cvs/src/src/gdb/dbxread.c,v
 > retrieving revision 1.43
 > diff -u -r1.43 dbxread.c
 > --- dbxread.c	20 Feb 2003 18:31:14 -0000	1.43
 > +++ dbxread.c	25 Feb 2003 23:12:07 -0000
 > @@ -2831,7 +2831,13 @@
 >   	      break;
 >   	    }
 >  
 > -	  record_line (current_subfile, 0, last_function_start + valu);
 > +	  /* The following check is added before recording line 0 at
 > +	     end of function so as to handle hand-generated stabs
 > +	     which may have an N_FUN stabs at the end of the function, but
 > +	     no N_SLINE stabs.  */
 > +	  if (sline_found_in_function)
 > +	    record_line (current_subfile, 0, last_function_start + valu);
 > +
 >  	  within_function = 0;
 >  	  new = pop_context ();
 >  


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