This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] xtensa: Properly strdup string when building reggroup


Stafford Horne <shorne@gmail.com> writes:

Patch is good to me, a nit,

> -      xtensa_cp[i] = reggroup_new (cpname, USER_REGGROUP);
> +      xtensa_cp[i] = reggroup_new (xstrdup(cpname), USER_REGGROUP);

"xstrdup (cpname)".

Before your patch is applied, GDB prints some garbage data,

(gdb) set architecture xtensa
The target architecture is assumed to be xtensa
(gdb) maintenance print reggroups 
 Group      Type      
 all        user      
 save       internal  
 restore    internal  
 system     user      
 vector     user      
 general    user      
 float      user      
 ar         user      
 user       user      
 vectra     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user      
 P�^\U     user
 P�^\U     user

with your patch applied, the output looks "right",

(gdb) maintenance print reggroups
 Group      Type      
 all        user      
 save       internal  
 restore    internal  
 system     user      
 vector     user      
 general    user      
 float      user      
 ar         user      
 user       user      
 vectra     user      
 cp0        user      
 cp1        user      
 cp2        user      
 cp3        user      
 cp4        user      
 cp5        user      
 cp6        user      
 cp7        user      
 cp8        user      
 cp9        user      
 cp:        user      
 cp;        user      
 cp<        user      
 cp=        user      
 cp>        user      
 cp?        user

This exposes another bug, IMO, here,

  for (i = 0; i < XTENSA_MAX_COPROCESSOR; i++)
    {
      cpname[2] = '0' + i;
      xtensa_cp[i] = reggroup_new (cpname, USER_REGGROUP);
    }

and XTENSA_MAX_COPROCESSOR is 0x10, so we can see "cp:", "cp;", which
looks odd.

-- 
Yao (齐尧)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]