On Wed, Jun 9, 2021 at 11:15 AM Thomas Rodgers <rodg...@appliantology.com> wrote: > > On 2021-06-09 09:23, Jeff Law via Gcc-patches wrote: > > > On 5/25/2021 2:23 PM, Paul Eggert wrote: > > > >> The GCC manual's documentation of -fno-trampolines was apparently > >> written from an Ada point of view. However, when I read it I > >> understandably mistook it to say that -fno-trampolines also works for > >> C, C++, etc. It doesn't: it is silently ignored for these languages, > >> and I assume for any language other than Ada. > >> > >> This confusion caused me to go in the wrong direction in a Gnulib > >> dicussion, as I mistakenly thought that entire C apps with nested > >> functions could be compiled with -fno-trampolines and then use nested > >> C functions in stack overflow handlers where the alternate stack > >> is allocated via malloc. I was wrong, as this won't work on common > >> platforms like x86-64 where malloc yields non-executable storage. > >> > >> gcc/ > >> * doc/invoke.texi (Code Gen Options): > >> * doc/tm.texi.in (Trampolines): > >> Document that -fno-trampolines and -ftrampolines work > >> only with Ada. > > So Martin Uecker probably has the most state on this. IIRC when we > > last discussed -fno-trampolines the belief was that it could be easily > > made to work independent of the language, but that it was ultimately an > > ABI change. That ultimately derailed plans to use -fno-trampolines > > for other languages in the immediate term. > > > > The patch is fine, I just wanted to give you a bit of background on the > > state. I'll go ahead and commit it for you. > > > > Jeff > > This patch (commit 4a0c4eaea32) is currently breaking the compilation > with "Verify that you have permission to grant a GFDL license for all". > It appears that tm.texi and tm.texi.in are out of sync.
I am checking in this to unbreak it: diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 20501607716..33532f092b6 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -3828,6 +3828,7 @@ addresses. Since GCC's generic function descriptors are not ABI-compliant, this option is typically used only on a per-language basis (notably by Ada) or when it can otherwise be applied to the whole program. + For languages other than Ada, the @code{-ftrampolines} and @code{-fno-trampolines} options currently have no effect, and trampolines are always generated on platforms that need them -- H.J.