ia64 unwind issue

Jan Beulich JBeulich@novell.com
Mon May 23 11:59:00 GMT 2005


In the IA64 Software and Runtime Architecture Guide there is a (sub-)section "Stack Unwind Directives Usage Guidelines". While not really complete (and perhaps also not fully correct), this (in my opinion validly) states that there shouldn't be a .vframe in a prologue started with .prologue with the psp bit set in the immediate mask (it should also put the same restriction on .save ar.pfs, .save rp, and .save pr). While both gas and ias don't enforce that rule, ias generates a psp_gr unconditionally when seeing .vframe, whereas gas only generates a mem_stack_v (which is supposedly pointless because the use of .prologue <imm>, <gr> implies that the saved registers don't get modified until the end of that prologue region).

Now modifying gas' behavior seems difficult, because gcc appearantly relies on the ability to emit both .prologue with operands and .vframe and/or any of the above mentioned .save-s, and I'm fairly certain gcc would not actually enforce no modification to these saved registers before the end of the prologue.

The question thus is: Should this remain non-compliant? Or does anyone have an idea of how to fix this to both satisfy gcc and meet the spec's requirements?

Jan



More information about the Binutils mailing list