On Tue, Apr 26, 2011 at 6:07 AM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Sat, Apr 9, 2011 at 6:52 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> On Thu, Mar 24, 2011 at 12:15 AM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>> On Wed, Mar 23, 2011 at 12:22 PM, Ulrich Weigand <uweig...@de.ibm.com> 
>>> wrote:
>>>> Richard Henderson wrote:
>>>>> Because, really, if we consider the structure truly public, we can't even
>>>>> change the number of registers for a given port to support new features of
>>>>> the cpu.
>>>>
>>>> Indeed, and I remember we got bitten by that a long time ago, which is why
>>>> s390.h now has this comment:
>>>>
>>>> /* Number of hardware registers that go into the DWARF-2 unwind info.
>>>>   To avoid ABI incompatibility, this number must not change even as
>>>>   'fake' hard registers are added or removed.  */
>>>> #define DWARF_FRAME_REGISTERS 34
>>>>
>>>>> I don't suppose there's any way that we can declare these old
>>>>> programs Just Broken, and drop this compatibility stuff?
>>>>
>>>> I wouldn't like that ... we did run into this problem in the wild, and
>>>> some s390 users really run very old programs for some reason.
>>>>
>>>> However, I'm wondering: this bug that leaked the implementation of
>>>> _Unwind_Context only ever affected the *original* version of the
>>>> structure -- it was fixed before the extended context was ever
>>>> added, right?
>>>>
>>>> If this is true, we'd still need to keep the original context format
>>>> unchanged, but we'd be free to modify the *extended* format at any
>>>> time, without ABI considerations and need for further versioning ...
>>>>
>>>
>>> From what I can tell, the issues are:
>>>
>>> 1. _Unwind_Context is supposed to be opaque and we are free to
>>> change it.  We should be able to extend DWARF_FRAME_REGISTERS
>>> to support the new hard registers if needed, without breaking binary
>>> compatibility.
>>> 2.  _Unwind_Context was leaked and wasn't really opaque.  To
>>> provide backward binary compatibility, we are stuck with what we
>>> had.
>>>
>>> Is that possible to implement something along the line:
>>>
>>> 1. Add some bits to _Unwind_Context so that we can detect
>>> the leaked _Unwind_Context.
>>> 2. When a leaked _Unwind_Context is detected at run-time,
>>> as a compile time option, a target can either provide binary
>>> compatibility or issue a run-time error.
>>
>> This is the attempt to implement it.  Any comments?
>>
>> Thanks.
>>
>> --
>> H.J.
>> --
>> 2011-04-09  H.J. Lu  <hongjiu...@intel.com>
>>
>>        PR other/48007
>>        * unwind-dw2.c (UNIQUE_UNWIND_CONTEXT): New.
>>        (_Unwind_Context): If UNIQUE_UNWIND_CONTEXT is defined, add
>>        dwarf_reg_size_table and value, remove version and by_value.
>>        (EXTENDED_CONTEXT_BIT): Don't define if UNIQUE_UNWIND_CONTEXT
>>        is defined.
>>        (_Unwind_IsExtendedContext): Likewise.
>>        (_Unwind_GetGR): Support UNIQUE_UNWIND_CONTEXT.
>>        (_Unwind_SetGR): Likewise.
>>        (_Unwind_GetGRPtr): Likewise.
>>        (_Unwind_SetGRPtr): Likewise.
>>        (_Unwind_SetGRValue): Likewise.
>>        (_Unwind_GRByValue): Likewise.
>>        (__frame_state_for): Initialize dwarf_reg_size_table field if
>>        UNIQUE_UNWIND_CONTEXT is defined.
>>        (uw_install_context_1): Likewise.  Support UNIQUE_UNWIND_CONTEXT.
>>
>
> PING.
>

Hi Jason,

Can you take a look at:

http://gcc.gnu.org/ml/gcc-patches/2011-04/msg00695.html

Thanks.


-- 
H.J.

Reply via email to