On 07/11/2017 11:21 PM, Jeff Law wrote:
> This patch adds s390 support for stack-clash mitigation.
> 
> s390's most interesting property is that the caller allocates space for
> the callee to save registers into.
> 
> So much like aarch64, we start with a very conservative assumption about
> the offset between SP and the most recent stack probe.  As we encounter
> those register saves we may be able to decrease that offset.  And like
> aarch64 as we allocate space, the offset increases.  If the offset
> crosses PROBE_INTERVAL, we must emit probes.
> 
> Because the register saves hit the caller's frame s390 in some ways
> generates code more like x86/ppc.  Though if there aren't any register
> saves, then the resulting code looks more like aarch64.
> 
> For large frames, I did not implement an allocate/probe in a loop.
> Someone with a better understanding of the architecture is better suited
> for that work.  I'll note that you're going to need another scratch
> register :-)  This is the cause of the xfail of one test which expects
> to see a prologue allocate/probe loop.
> 
> s390 has a -mbackchain option.  I'm not sure where it's used, but we do
> try to handle it in the initial offset computation.   However, we don't
> handle it in the actual allocations that occur when -fstack-check=clash
> is enabled.
> 
> s390 does not have a -fstack-check=specific implementation.  I have not
> tried to add one.  But I have defined STACK_CHECK_STATIC_BUILTIN.  I
> haven't investigated what side effects that might have.
> 
> Other than the xfail noted above, the s390 uses the same tests as the
> x86, ppc and aarch64 ports.
> 
> I suspect we're going to need further iteration here.
> 
> Thoughts/Comments?

I'll have a look and run some tests to come back with an answer next week.

Bye,

-Andreas-

Reply via email to