PATCH: gdbserver: Clear regcache if buf is NULL

H.J. Lu hjl.tools@gmail.com
Sat Oct 16 20:16:00 GMT 2010


On Sat, Oct 16, 2010 at 1:00 PM, Pedro Alves <pedro@codesourcery.com> wrote:
> On Friday 01 October 2010 02:51:07, H.J. Lu wrote:
>> On Tue, Sep 28, 2010 at 1:23 PM, Pedro Alves <pedro@codesourcery.com> wrote:
>
>> > Hi H.J..  I'm looking at where in the current sources this
>> > ended up being used, and not finding it.  Am I right in thinking
>> > that the need for this was obsoleted when you later tought
>> > gdbserver x86-linux about xml descriptions?
>> >
>>
>> i387-fp.c has
>>
>>   if ((x86_xcr0 & I386_XSTATE_SSE))
>>     {
>>       int xmm0_regnum = find_regno ("xmm0");
>>
>>       if ((clear_bv & I386_XSTATE_SSE))
>>         p = NULL;
>>       else
>>         p = (char *) buf;
>>
>>       for (i = 0; i < num_xmm_registers; i++)
>>         {
>>           if (p)
>>             p = ((char *) &fp->xmm_space[0]) + i * 16;
>>           supply_register (regcache, i + xmm0_regnum, p);
>>         }
>>     }
>>
>
> Thanks, and sorry as for not coming back to this promptly.
> Hmm, I don't think I have a way to trigger that.
> So is the registers' value really zero, or should gdb
> ideally present them as not available (and zero is just a
> hack)?
>

You will see it only on machines with XSAVE and enabled in OS.
Please see

13.6 XSAVE/XRSTOR AND PROCESSOR EXTENDED STATE
MANAGEMENT

in

Intel® 64 and IA-32 Architectures Software Developer’s Manual
Volume 3A: System Programming Guide, Part 1

Basically values in vector registers may not be valid, depending
on vector state.


-- 
H.J.



More information about the Gdb-patches mailing list