This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

Re: [PATCH] New -fstack-check implementation (1/n)


> It's certainly of great interest to Java.  Is the design of this
> documented somewhere?

There are a few bits in the manual of the GCC internals, in the section
"14.9.3 Specifying How Stack Checking is Done"

> I presume there must be some run-time support as well as these compiler
> modifications. 

Definitely, and it has been present in the gcc/ada directory for a long time.

If the target has a MMU and the OS uses guard pages, the compiler emits probes 
before any stack allocations.  Upon reaching the guard pages, the signal will 
be caught by __gnat_error_handler (gcc/ada/init.c) and turned into a regular 
exception.  We (try to) make sure that there is enough room left on the stack 
for the unwinding machinery to propagate this exception.

Otherwise (no MMU or no guard pages, e.g. x86{-64}/Linux), we keep track in 
the runtime of the stack usage for every thread (of course the primary thread 
is special) and the compiler emits explicit calls to the runtime before any 
stack allocations.  It's then up to the runtime to raise the exception 
directly (gcc/ada/s-stchop.ad[sb]).

-- 
Eric Botcazou


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