This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
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