This is the mail archive of the gdb-patches@sources.redhat.com 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: [RFA] regcache pseudo-reg tweak


> I think you left out an "else" when you made this change in december.
> We must not call target_[fetch/store]_register with a pseudo-register, 
> or they will choke.  By definition, a pseudo-register is one that 
> cannot be fetched from the target.


Oops, kind of.


> Index: regcache.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/regcache.c,v
> retrieving revision 1.31
> diff -c -3 -p -r1.31 regcache.c
> *** regcache.c	2002/01/29 20:24:27	1.31
> --- regcache.c	2002/02/06 02:30:46
> *************** fetch_register (int regnum)
> *** 125,131 ****
>     if (FETCH_PSEUDO_REGISTER_P ()
>         && pseudo_register (regnum))
>       FETCH_PSEUDO_REGISTER (regnum);
> !   target_fetch_registers (regnum);
>   }
>   
>   /* Write register REGNUM cached value to the target.  */
> --- 125,132 ----
>     if (FETCH_PSEUDO_REGISTER_P ()
>         && pseudo_register (regnum))
>       FETCH_PSEUDO_REGISTER (regnum);
> !   else if (real_register (regnum))
> !     target_fetch_registers (regnum);
>   }
>   
>   /* Write register REGNUM cached value to the target.  */


There should be an else but not else if (real_register ()) ....


A target can handle registers two ways - using pseudo-registers or using 
register_{read,write}().  If a target uses the latter then it will 
likely end up fetching registers in the pseudo-register range from the 
target.

A simple example of this might be a modified x86 where not only the user 
registers but also the system registers (MSRs?) are accessable.  The 
MSR's wouldn't be returned via the G packet but instead fetched 
individually.  Unfortunatly, NUM_REGS determines which registers are 
included in a G packet (and many other obscure things).

Andrew




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