<div dir="ltr">The point of this is to cheaply detect all stack overflows using a guard page. For a guard page to actually detect all stack overflows, we need to ensure that the code touches each page of the stack in the right order, otherwise it could skip the guard page and write outside the stack. That is very bad for languages such as Rust which provides memory safety, so it currently does an explicit comparison against the end of the stack for each function, which is again bad for performance. This would correspond to GCC's -fstack-check (if that worked).</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 31, 2014 at 6:40 PM, Philip Reames <span dir="ltr"><<a href="mailto:listmail@philipreames.com" target="_blank">listmail@philipreames.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Giving a bit of background and motivation would be good here.   What
    are you trying to accomplish and why?<br>
    <br>
    Philip<div class=""><br>
    <br>
    <div>On 07/28/2014 04:16 PM, John Kåre
      Alsaker wrote:<br>
    </div>
    </div><blockquote type="cite"><div class="">
      <div dir="ltr">Hi, I want to add a stack probe function attribute
        which would insert stack probes on all platforms, not just
        Windows. This will be useful for Rust since it must guarantee
        that the stack can't overflow, which it currently abuses the
        segmented stack support for. I'm not sure which kind of
        attribute is appropriate here. It must be added to the caller
        when inlined and clients of LLVM should be able to tell if code
        generation supports it. I would like some tips on how to
        implement this.</div>
      <br>
      <fieldset></fieldset>
      <br>
      </div><pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div>