[RFC/TileGX 2/2] fix gdbserver runtime crash

Jiong Wang jiwang@tilera.com
Tue Sep 17 13:22:00 GMT 2013


于 2013/9/17 20:39, Jiong Wang 写道:
> 于 2013/9/17 20:33, Joel Brobecker 写道:
>>> TileGX is always 64bit, ptrace always return 64bit data,  tilegx32
>>> is just an ABI.
>>>
>>> So the regset size should be regnum * 8 instead of regnum * 4. The
>>> latter cause gdbserver crash.
>>>
>>> gdbserver/ChangeLog:
>>>
>>>    * linux-tile-low.c (tile_regsets): Modify the size field as 64bit
>>> for each register.
>> I will trust you on this one, but how did this even work at all
>> prior to your change???
>
> it's a complicated story and my fault.
>
> we use Perforce to manage code within the company. This bug is fixed 
> by Jeff (previous maintainer of TileGX gdb) long time ago in Perforce, 
> but he
> didn't commit it to community. And we mainly test binaries generated 
> from our Perforce.
>
> I should be more careful when I check dejagnu test result when submit 
> to community :)

is this OK to commit?

>
>
>
>>
>>> diff --git a/gdb/gdbserver/linux-tile-low.c 
>>> b/gdb/gdbserver/linux-tile-low.c
>>> index 8963b9a..8efb34e 100644
>>> --- a/gdb/gdbserver/linux-tile-low.c
>>> +++ b/gdb/gdbserver/linux-tile-low.c
>>> @@ -124,7 +124,7 @@ tile_store_gregset (struct regcache *regcache, 
>>> const void *buf)
>>>     static struct regset_info tile_regsets[] =
>>>   {
>>> -  { PTRACE_GETREGS, PTRACE_SETREGS, 0, tile_num_regs * 4,
>>> +  { PTRACE_GETREGS, PTRACE_SETREGS, 0, tile_num_regs * 8,
>>>       GENERAL_REGS, tile_fill_gregset, tile_store_gregset },
>>>     { 0, 0, 0, -1, -1, NULL, NULL }
>>>   };
>>
>



More information about the Gdb-patches mailing list