This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ia64 unwind issue


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]