struct environment
Andrew Cagney
ac131313@ges.redhat.com
Tue Sep 17 08:59:00 GMT 2002
> On Tue, Sep 17, 2002 at 03:47:36AM -0400, Andrew Cagney wrote:
>
>> Btw, try ``struct nametab''? These are just tables for mapping a name
>> onto a symbol?
>
>
> Hmm..
>
>
>> Having also gone over the original thread, two things come to mind:
>>
>> - what effect will this have on GDB's foot print? The original proposal
>> was to put these things everwhere (structs, unions, ...). I don't think
>> that is necessary and would cause serious bloat. Instead, initially, I
>> think these tables could be simple linear lists (that is what ``struct
>> block'' currently implements so it can't be any worse :-) (just the
>> global / final table is special :-).
>
>
> Why do you think this will cause any bloat? This is why David
> suggested a model of block with a linear list implementation.
That is good news, the early discussion was describing a totally generic
implementation being applied to everything. Can I assume that no one
has immediate plans for adding this to the type system?
>> - Am I correct to think that the objective is to create a directed
>> acyclic graph of nametabs and have lookups search through each in turn.
>
>
> Well, sort of. It won't be a DAG necessarily (I think that mutual
> "using" statements are legal in C++; I remember a GCC bug involving
> them was fixed not long ago), and it will be somewhat complicated
> figuring out which ones to look up (namespace links are different than
> block scope links).
Don't forget that GDB doesn't need to model the language. Just the
namespace behavior at a given PC. The effect of "using" would be to
just grow a nametab in someway.
>> In terms of operations, I would concentrate on determing exactly GDB
>> needs (rather than you think it needs) GDB is 15 years old so chance
>> has it the operations have been identified already. I know of two
>> operations off hand:
>> print foo
>> which gets turned into struct symbol *lookup("foo",``block'') and,
>> print foo<tab>
>> which turns into ``const char **tabexpand("foo", ``block'')''. Any others?
>
>
> At least iterate over all, search regexp.
Yes (iterate over would come from things like ``info locals''). Regex
(I know it's used somewhere)?
Andrew
More information about the Gdb
mailing list