[PATCH] call cp_lookup_symbol_namespace recursively to search symbols in C++ base classes

Liu, Lei lei.liu2@windriver.com
Wed Nov 3 01:41:00 GMT 2010


On 2010年11月03日 03:48, Tom Tromey wrote:
>>>>>> ">" == Liu, Lei<lei.liu2@windriver.com>  writes:
>
>>> This patch is trying to fix a bug in gdb.  The problem is found in
>>> following C++ test case.
>
> Thanks.
>
> This looks pretty reasonable overall.  In order for it to go in, we
> would need a couple things:
>
> * Copyright assignment forms filed with the FSF.  If you don't have this
>    already, one of us can get you started.

I don't have this yet. We can get start to do it.

>
> * A test case -- the one you have is fine, it just needs to be in the
>    form used by our test suite.

Right. I'll reform it.

>
>>> 2010-11-02  Lei Liu<lei.liu2@windriver.com>
>
>>>      * cp-namespace.c (cp_lookup_symbol_namespace): Recursively call
>>>      itself to search C++ base classes.
>
> It isn't 100% clear to me that cp_lookup_symbol_namespace is the right
> function.  That file is kind of spaghetti-ish right now :(

It seems to me that all the C++ specific symbol looking up code are located
in this file. I don't know where else I can put my code in.

>
>>> +  scope_sym = lookup_symbol (scope, NULL, VAR_DOMAIN, NULL);
>>> +  if (scope_sym == NULL)
>>> +    return NULL;
>>> +
>>> +  scope_type = SYMBOL_TYPE(scope_sym);
>>> +  if (scope_type == NULL)
>>> +    return NULL;
>
> I think lookup_typename is better here.

Well, I tried that first, but we must have a GDBARCH passed to it. I'm not
sure where can I get this.

>
>>> +  if (TYPE_CODE (scope_type) == TYPE_CODE_STRUCT)
>
> I think you should call check_typedef on scope_type before this check.

OK. I missed that.

>
> thanks,
> Tom
>

Thanks.
Lei



More information about the Gdb-patches mailing list