PATCH [8/n]: Prepare x32: PR other/48007: Unwind library doesn't work with UNITS_PER_WORD > sizeof (void *)

Jason Merrill jason@redhat.com
Mon Jun 27 15:16:00 GMT 2011


On 06/26/2011 05:58 PM, H.J. Lu wrote:
> The current unwind library scheme provides only one unwind
> context and is backward compatible with multiple different unwind
> contexts from multiple unwind libraries:
>
> http://gcc.gnu.org/ml/gcc-patches/2006-12/msg01769.html
>
> My patch fixes UNITS_PER_WORD > sizeof (void *) and
> enforces single unwind context when backward compatibility
> isn't needed.

OK, there seem to be two things going on in this patch:

1) Handle registers larger than pointers.
2) Require that all code share a single copy of the unwinder.

For #2, how are you avoiding the issues Jakub describes in that message? 
  Isn't his scenario 2 still possible?  Are you deciding that it's 
better to abort at run-time in that case?

It seems to me that for targets newer than Jakub's patch we can 
hard-wire _Unwind_IsExtendedContext to true, but making further 
assumptions would be a mistake.

Then, if we're still trying to handle versioning, I think your earlier 
patch for #1 (r170716) that just changes the type of the reg array is a 
better way to go.  But that change should be dependent on a target macro 
to avoid ABI changes for existing targets.

Jason



More information about the Gcc-patches mailing list