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

Jiong Wang
2013-09-17T12:39:53Z

äºŽ 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 :)

>
>> 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 }
>> };
>