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: [PATCH] Fix sparc-*-linux register fetching/storing


> 
> 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.

Andrew



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