[PATCH] Fix sparc-*-linux register fetching/storing

Daniel Jacobowitz drow@mvista.com
Mon Nov 12 18:40:00 GMT 2001


On Mon, Nov 26, 2001 at 12:18:18PM -0500, Andrew Cagney wrote:
> >
> >Well, regcache_collect is the only approved interface to the contents
> >of registers[] for one thing.  It would also prevent the need for the
> >cast (although you'd have to clear the upper half of the variable
> >first and make sure to stuff it into the low bytes since we're
> >big-endian.  Ew.).
> >
> >Andrew?  Do we need to have a regcache_collect_core_addr, to sign
> >extend and shift appropriately for each architecture?
> 
> That sounds like overkill.  If you need to be doing sign/zero extension 
> stuff then I'd be looking at explicit calls to extract_signed_integer() 
> and/or extract_unsigned_integer() in the nat code.
> 
> A sequence like:
> 
> 	void *buf = alloca (MAX_REGISTER_RAW_SIZE);
> 	regcache_collect (my reg, buf);
> 	LONGEST val = extract_unsigned_integer (buf, REGISTER_RAW_SIZE(my reg));
> 	store_unsigned_integer (dest, dest size, val);
> 
> should insulate it from the current problems.

But won't we want this absolutely every time we extract a CORE_ADDR? 
And for that matter, I'm talking about getting a target memory address
out of a register; is store_*signed_integer right for that?  Is there
an extract_pointer or so?

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer



More information about the Gdb-patches mailing list