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