This is the mail archive of the gdb-patches@sourceware.org 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] Map registers to remote numbers when encoding an ax_reg or ax_reg_mask operation


Antoine Tremblay writes:

> Pedro Alves writes:
>
>> On 02/25/2016 01:25 PM, Antoine Tremblay wrote:
>>> When encoding the agent expression operation ax_reg or ax_reg_mask, the
>>> register number used is internal to GDB. However GDBServer expects a tdesc
>>> based number.
>>> 
>>> This usually does not cause a problem since at the moment, for raw
>>> registers GDBServer R trace action ignores the register mask and just
>>> collects all registers.
>>> 
>>> It can be a problem, however with pseudo registers on some platforms if the
>>> tdesc number doesn't match the GDB internal register number.
>>> 
>>> This is the case with ARM, the upcoming ARM tracepoint support, fails
>>> these test cases without this patch:
>>> 
>>> gdb.trace/collection.exp: collect register locals collectively:*
>>> 
>>> GDBSever would exit with: unhandled register size
>>> Since the register number is not mapped.
>>> 
>>> This patch fixes these issues by calling gdbarch_remote_register_number
>>> before encoding the register number in the ax_reg or ax_reg_mask operation.
>>> 
>>> Tested on x86 native-gdbserver no regressions observed.
>>
>>>    else
>>>      {
>>> -      int byte = reg / 8;
>>> +      int byte = 0;
>>
>> No need to zero initialize.
>
> OK.
>
>>
>>> +
>>> +      /* Get the remote register number.  */
>>> +      reg = gdbarch_remote_register_number (ax->gdbarch, reg);
>>> +      byte = reg / 8;
>>>  
>>>        /* Grow the bit mask if necessary.  */
>>>        if (byte >= ax->reg_mask_len)
>>> 
>>
>> OK with ChangeLog entry.
>
> Oops, yes I'll add a ChangeLog sorry about that.
>

Pushed.


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