On Thu, Jun 30, 2011 at 7:08 AM, Jason Merrill <[email protected]> wrote:
> On 06/28/2011 02:53 PM, H.J. Lu wrote:
>>
>> This updated patch. It allows multiple unwind contexts. It replaces
>>
>> char by_value[DWARF_FRAME_REGISTERS+1];
>>
>> with
>>
>> _Unwind_Word value[DWARF_FRAME_REGISTERS+1];
>>
>> The code is cleaner than conditionally replacing
>>
>> void *reg[DWARF_FRAME_REGISTERS+1];
>>
>> with
>>
>> _Unwind_Word reg[DWARF_FRAME_REGISTERS+1];
>>
>> with a bigger unwind context.
>
> It doesn't seem cleaner to me.
Register may be saved/restored either by address or value. My patch
doesn't change the reg field. The other way will be
#ifdef USE_UNWIND_WORD
_Unwind_Word reg[DWARF_FRAME_REGISTERS+1];
#else
void *reg[DWARF_FRAME_REGISTERS+1];
#endif
We need it so that we are binary compatible with the existing
unwind context. Once we do that we need many
#ifdef USE_UNWIND_WORD
#endif
whenever the reg field is accessed since the reg field is changed.
--
H.J.