Re: stack overflow on Sparc64

From: Mikulas Patocka
Date: Thu Jun 19 2008 - 09:02:30 EST


On Wed, 18 Jun 2008, David Miller wrote:

From: Mikulas Patocka <mpatocka@xxxxxxxxxx>
Date: Thu, 19 Jun 2008 01:17:39 -0400 (EDT)

I see ... the callee writes arguments into caller's stack frame, if it has
variable number of arguments. That it misdesign, the callee should write
registers arguments into it's own frame like on AMD64 (then this space
would be allocated only if needed).

The callee can do this even for non-variable argument lists.

It's like a set of pre-allocated stack slots for those incoming
argument registers when reloading under register pressure.

In my opinion it is better to put this onus on the callee because only
the callee knows if it needs to pop these values onto the stack to
alleviate register pressure.

I think it might be possible for the compiler to only use 176 bytes.
I'll take a look at the gcc sparc backend and the ABI specification
to see if this is the case.

Yes, it could be shrunk to 176 bytes. Maybe there could be some performance problems if the spills are cacheline-unaligned. Or better --- make special -mkernel-abi function to gcc that will drop this area at all and make 128-byte frames. In kernel it wouldn't matter that ABI is incompatible.

Mikulas
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/