Re: RFC: printing pointers to global (data) variable on Windows...

Tom Tromey
2012-08-20T17:48:41Z

>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:

Joel> 1. I strongly dislike this patch. It feels like an intrusive change
Joel> to work around a heuristic that seems very fragile. I'd rather
Joel> get rid of the heuristic and accept the false matches.

I accept that, but there's another way of looking at it.

It is just a fact that some minimal symbol readers can supply size
information, while others cannot. Right now, this difference is
obscured in the gdb internals -- if you have a minimal symbol you can't
determine whether the size is "zero but valid" or "invalid".

So, supplying the flag makes gdb better model reality. In this sense it
is an improvement. Now, whether it is a *useful* improvement... :)

Joel> I am wondering what would happen if we changed the code such that:
Joel> If we find a function in the debugging info that matches our
Joel> address, then use that instead of trying to see if the minimal
Joel> symbol might be closer. When would that happen, anyway?

Yeah, I don't know.

Joel> After working on and off on this, I do not feel very confident that
Joel> I will be able to tune the filtering to something that would satisfy
Joel> me. So, rather than trying to do our best, I thought we might try
Joel> to do the simplest (removing the filtering of zero-sized data symbols).

It seems to me that the filter is correct: if you are on a platform
where minimal symbol sizes are valid, and you see a symbol of size zero,
it does not make sense to print such a symbol. It is, I think, a symbol
that doesn't name a whole object, but rather just some marker in the
assembly.

The code for the filter is actually somewhat goofier, allowing text
symbols through. That just corresponds to gdb's historical behavior; I
am not sure whether or not it is reasonable behavior, but it didn't make
sense to change it in the context of that patch. At least, the intent
is to have it provide the historical behavior; in the past I think
build_address_symbolic was only called for functions.

Joel> Another option is for the FSF version of GDB to remain as it is,
Joel> with its bias towards GNU/Linux, while we will change AdaCore's
Joel> version to turn "set print symbol" to "off" by default...

If you disable "set print symbol", how would that differ from leaving
the filter in place?

Tom