[RFA]: Clean up C++ type handling in linespec parsing

Fernando Nasser fnasser@redhat.com
Fri Mar 16 01:36:00 GMT 2001


OK with me.  Lets ask Elena.

Elena, I know that you would like to move this to some language land,
but maybe its better get it fixed anyway.

Fernando 


Jim Blandy wrote:
> 
> 2001-03-15  Jim Blandy  <jimb@redhat.com>
> 
>         * linespec.c (find_methods): Just call CHECK_TYPEDEF on t, rather
>         than asking for sym_class's type; that's circuitous.  Remove
>         sym_class, since the last use of it is gone.  (This is a minor
>         revision of a change from Dan Berlin.)
> 
> Index: gdb/linespec.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/linespec.c,v
> retrieving revision 1.6
> diff -c -c -r1.6 linespec.c
> *** gdb/linespec.c      2001/03/14 18:36:45     1.6
> --- gdb/linespec.c      2001/03/16 02:06:33
> ***************
> *** 104,126 ****
>   {
>     int i1 = 0;
>     int ibase;
> -   struct symbol *sym_class;
>     char *class_name = type_name_no_tag (t);
> 
>     /* Ignore this class if it doesn't have a name.  This is ugly, but
>        unless we figure out how to get the physname without the name of
>        the class, then the loop can't do any good.  */
>     if (class_name
> !       && (sym_class = lookup_symbol (class_name,
> !                                    (struct block *) NULL,
> !                                    STRUCT_NAMESPACE,
> !                                    (int *) NULL,
> !                                    (struct symtab **) NULL)))
>       {
>         int method_counter;
> 
> !       /* FIXME: Shouldn't this just be CHECK_TYPEDEF (t)?  */
> !       t = SYMBOL_TYPE (sym_class);
> 
>         /* Loop over each method name.  At this level, all overloads of a name
>            are counted as a single name.  There is an inner loop which loops over
> --- 104,122 ----
>   {
>     int i1 = 0;
>     int ibase;
>     char *class_name = type_name_no_tag (t);
> 
>     /* Ignore this class if it doesn't have a name.  This is ugly, but
>        unless we figure out how to get the physname without the name of
>        the class, then the loop can't do any good.  */
>     if (class_name
> !       && (lookup_symbol (class_name, (struct block *) NULL,
> !                        STRUCT_NAMESPACE, (int *) NULL,
> !                        (struct symtab **) NULL)))
>       {
>         int method_counter;
> 
> !       CHECK_TYPEDEF (t);
> 
>         /* Loop over each method name.  At this level, all overloads of a name
>            are counted as a single name.  There is an inner loop which loops over

-- 
Fernando Nasser
Red Hat Canada Ltd.                     E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9



More information about the Gdb-patches mailing list