On Sun, Mar 6, 2011 at 4:15 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Sun, Mar 6, 2011 at 3:40 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> On Sun, Mar 6, 2011 at 3:23 PM, Richard Guenther
>> <richard.guent...@gmail.com> wrote:
>>> On Sun, Mar 6, 2011 at 10:28 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>>> On Sun, Mar 6, 2011 at 1:15 PM, Andrew Pinski <pins...@gmail.com> wrote:
>>>>> On Sun, Mar 6, 2011 at 9:18 AM, H.J. Lu <hongjiu...@intel.com> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> We shouldn't save call frame hard registers as "void *".  This patch
>>>>>> changes the unwind library to save call frame hard registers as
>>>>>> _Unwind_Word.  OK for 4.7?
>>>>>
>>>>> I think this will break the ABI for the MIPS N32 ABI.  Not to mention
>>>>> the MIPS N32 ABI works fine with the unwinding part this way.  Does
>>>>> someone use the unwinding library to look at the registers in previous
>>>>> stack frames?
>>>>
>>>> It may be psABI/implementation specific.  X32 glibc force unwind calls
>>>> _Unwind_SetGRValue to get a 64bit register value.
>>>
>>> So fix it on that side?
>>>
>>
>> How? One function in question is
>>
>> /* Overwrite the saved value for register INDEX in CONTEXT with VAL.  */
>>
>> static inline void
>> _Unwind_SetGRValue (struct _Unwind_Context *context, int index,
>>                    _Unwind_Word val)
>>
>>
>> Are you saying it shouldn't be called if UNITS_PER_WORD > sizeof (void *)?
>>
>
> FWIW, the type of GR is _Unwind_Word, not void *.  They may not
> have the same size.  Why does the DWARF unwind library use
> void * to store GR? Can a target have an option to save a _Unwind_Word
> value in _Unwind_Word, instead of void *?
>

From what I can tell, _Unwind_Context is internal to the unwind library
and only one copy unwind library can be used in a process. I don't
think changing _Unwind_Context will impact binary compatibility.

Is my patch OK for 4.7?

Thanks.


-- 
H.J.

Reply via email to