Re: win32-arm-low.c regptr 96 bits stored in 32 bit variable

"Richard Earnshaw (lists)" <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Surely nobody is interested in the long-dead FPA architecture these
days.  I'm not sure why GDB still supports it.

R.

On 28/10/2018 16:47, Simon Marchi wrote:
> On 2018-10-26 18:40, Bill Morgan wrote:
>> Should this static variable ULONG zero be at least 96 bits?
>>
>> static char *
>> regptr (CONTEXT* c, int r)
>> {
>>   if (mappings[r] < 0)
>>   {
>>     static ULONG zero;
>>     /* Always force value to zero, in case the user tried to write
>>        to this register before.  */
>>     zero = 0;
>>     return (char *) &zero;
>>   }
>>   else
>>     return (char *) c + mappings[r];
>> }
>>
>> reg-arm.dat shows 96 bits for the ones that have mappings[r] == -1
>>
>> name:arm
>> xmlarch:arm
>> expedite:r11,sp,pc
>> 32:r0
>> 32:r1
>> 32:r2
>> 32:r3
>> 32:r4
>> 32:r5
>> 32:r6
>> 32:r7
>> 32:r8
>> 32:r9
>> 32:r10
>> 32:r11
>> 32:r12
>> 32:sp
>> 32:lr
>> 32:pc
>> 96:f0
>> 96:f1
>> 96:f2
>> 96:f3
>> 96:f4
>> 96:f5
>> 96:f6
>> 96:f7
>> 32:fps
>> 32:cpsr
> 
> Hi Bill,
> 
> By inspection, it does seem like a mistake, and that we would need to
> return a pointer to a buffer at least as big as register r.  But I have
> no idea how to build/run/test gdbserver on win32/arm.  If you are able
> to confirm that there is a problem and test a fix, could you please
> provide a patch?
> 
> To avoid this kind of problem again, we could return a pointer to a
> dynamically-sized buffer adjusted to the size of the register. 
> Something like this:
> 
> static char *
> regptr (CONTEXT* c, struct regcache *regcache, int r)
> {
>   if (mappings[r] < 0)
>   {
>     static gdb::byte_vector zero;
>     /* Always force value to zero, in case the user tried to write
>        to this register before.  */
>     zero.assign (regcache_register_size (regcache, r), 0);
>     return (char *) zero.data ();
>   }
>   else
>     return (char *) c + mappings[r];
> }
> 
> Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.