This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: don't read coff line number unless we have symbols too
- From: Jim Blandy <jimb at redhat dot com>
- To: Hilfinger at otisco dot mckusick dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: 26 Jun 2002 14:57:43 -0500
- Subject: Re: RFA: don't read coff line number unless we have symbols too
- References: <200206241932.MAA19971@otisco.McKusick.COM>
"Paul N. Hilfinger" <hilfingr@otisco.mckusick.com> writes:
> 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?
See the comment from the patch:
! /* 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. */