Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* RFA: don't read coff line number unless we have symbols too
@ 2002-03-06 15:58 Jim Blandy
  2002-06-20 11:26 ` Jim Blandy
  0 siblings, 1 reply; 14+ messages in thread
From: Jim Blandy @ 2002-03-06 15:58 UTC (permalink / raw)
  To: gdb-patches


2002-03-06  Jim Blandy  <jimb@redhat.com>

	* coffread.c (coff_symfile_read): Don't try to read the line
	number table from disk if the image file doesn't have a symbol
	table; we'll never actually look at the info anyway, and Windows
	ships DLL's with bogus file offsets for the line number data.

Index: gdb/coffread.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gdb/coffread.c,v
retrieving revision 1.182
diff -c -r1.182 coffread.c
*** gdb/coffread.c	2001/09/25 02:35:52	1.182
--- gdb/coffread.c	2002/03/06 23:12:00
***************
*** 622,637 ****
  
  /* End of warning */
  
!   /* Read the line number table, all at once.  */
!   info->min_lineno_offset = 0;
!   info->max_lineno_offset = 0;
!   bfd_map_over_sections (abfd, find_linenos, (PTR) info);
  
!   make_cleanup (free_linetab_cleanup, 0 /*ignore*/);
!   val = init_lineno (abfd, info->min_lineno_offset,
! 		     info->max_lineno_offset - info->min_lineno_offset);
!   if (val < 0)
!     error ("\"%s\": error reading line numbers\n", name);
  
    /* Now read the string table, all at once.  */
  
--- 622,654 ----
  
  /* End of warning */
  
!   /* Only read line number information if we have symbols.
  
!      On Windows NT, some of the system's DLL's have sections with
!      PointerToLinenumbers fields that are non-zero, but point at
!      random places within the image file.  (In the case I found,
!      KERNEL32.DLL's .text section has a line number info pointer that
!      points into the middle of the string `lib\\i386\kernel32.dll'.)
! 
!      However, these DLL's also have no symbols.  The line number
!      tables are meaningless without symbols.  And in fact, GDB never
!      uses the line number information unless there are symbols.  So we
!      can avoid spurious error messages (and maybe run a little
!      faster!) by not even reading the line number table unless we have
!      symbols.  */
!   if (num_symbols > 0)
!     {
!       /* Read the line number table, all at once.  */
!       info->min_lineno_offset = 0;
!       info->max_lineno_offset = 0;
!       bfd_map_over_sections (abfd, find_linenos, (PTR) info);
! 
!       make_cleanup (free_linetab_cleanup, 0 /*ignore*/);
!       val = init_lineno (abfd, info->min_lineno_offset,
!                          info->max_lineno_offset - info->min_lineno_offset);
!       if (val < 0)
!         error ("\"%s\": error reading line numbers\n", name);
!     }
  
    /* Now read the string table, all at once.  */
  


^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: RFA: don't read coff line number unless we have symbols too
@ 2002-06-24 12:32 Paul N. Hilfinger
  2002-06-26 12:57 ` Jim Blandy
  0 siblings, 1 reply; 14+ messages in thread
From: Paul N. Hilfinger @ 2002-06-24 12:32 UTC (permalink / raw)
  To: Jim Blandy; +Cc: gdb-patches


Jim Blandy wrote :
> 
> Ping to the COFF maintainer: this patch needs review.
> 
> Jim Blandy <jimb@redhat.com> writes:
> 
> > 2002-03-06  Jim Blandy  <jimb@redhat.com>
> > 
> >     * coffread.c (coff_symfile_read): Don't try to read the line
> >     number table from disk if the image file doesn't have a symbol
> >     table; we'll never actually look at the info anyway, and Windows
> >     ships DLL's with bogus file offsets for the line number data.

But apparently, on Interix, you can get files with valid line numbers and 
no symbols when all the .o's come from VC and are linked by ld.  So the 
line-number info is perhaps not entirely useless.  Is this change a 
space-saving move, or a fix for a more serious problem?

Paul


^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: RFA: don't read coff line number unless we have symbols too
@ 2002-06-24 19:30 Paul N. Hilfinger
  2002-06-25 15:07 ` Jim Blandy
  0 siblings, 1 reply; 14+ messages in thread
From: Paul N. Hilfinger @ 2002-06-24 19:30 UTC (permalink / raw)
  To: Jim Blandy; +Cc: gdb-patches


OK. Further investigation (by Donn Terry) indicates that this change is
not a problem.    In the cases on Interix that we were worried about, there
is still a linker symbol table with non-debugging symbols, and so the line
numbers aren't tossed after all.

Paul Hilfinger



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2002-08-22  5:52 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-03-06 15:58 RFA: don't read coff line number unless we have symbols too Jim Blandy
2002-06-20 11:26 ` Jim Blandy
2002-06-20 11:39   ` Daniel Jacobowitz
2002-06-20 13:47     ` Jim Blandy
2002-06-24  5:57   ` Philippe De Muyter
2002-06-24 12:10     ` Joel Brobecker
2002-06-25 15:03       ` Jim Blandy
2002-06-26  1:03         ` Philippe De Muyter
2002-06-26 11:22           ` Jim Blandy
2002-08-21 22:52             ` Jim Blandy
2002-06-24 12:32 Paul N. Hilfinger
2002-06-26 12:57 ` Jim Blandy
2002-06-24 19:30 Paul N. Hilfinger
2002-06-25 15:07 ` Jim Blandy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox