Major debugging breakage
law@redhat.com
law@redhat.com
Thu Jan 3 13:05:00 GMT 2002
> Something has been hosed with line numbers for a long time; Geoff
> seemed to think he knew what it was.
Yea, it was broken before gcc-3.0, so it's been awhile. I've cc'd Geoff
directly in the hopes that he'll chime in.
> I do know that what CPP tells
> the front end is definitely correct; so something, from
> cb_file_change() in c-lex.c down to the guts of GCC, is not using
> "lineno" correctly or getting mucked up for some reason. Sadly, my
> knowledge of such parts of GCC is not good enough to suggest anything
> constructive.
Every time we parse a token we update LINENO to be equal to SRC_LINENO
(c_lex.c). LINENO is used to initialize the line numbers in NOTEs
that are used by the debug symbol routines. The comments in cb_line_change
seem to indicate that SRC_LINENO is meant to be used for diagnostic
line numbers. Maybe that is the root of our problem -- mixing the two
purposes.
SRC_LINENO is updated at the start of every non-empty line via cb_line_change.
> I can try and trace your example through GCC, but I have much less
> time for GCC than I used to (baby...).
I understand. I'll understand even more in a few months.
> There are still a couple of
> outstanding CPP things that need to be done (Cygwin mmap and the
> driver external CPP thing that I've not got round to) which I'd rather
> do first, seeing as how this line number thing has been around for
> ages, and others with better understanding than me have not been able
> to find it when they gave it a (quick?) go.
The Cygwin mmap issues are pretty serious too, so attacking that problem
makes a lot of sense. I'd like to see the debug problems solved before
the driver external CPP thingie, but that's just my preference.
jeff
More information about the Gcc
mailing list