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

Elena Zannoni ezannoni@cygnus.com
Fri Mar 16 06:35:00 GMT 2001


Fernando Nasser writes:
 > 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.
 > 

:-) true. Fine by me, check it in.

Elena


 > 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