On 2023-12-04 11:39, Andreas Schwab wrote:
On Dez 04 2023, Siddhesh Poyarekar wrote:
For hardened code in C, I think we really should look to step away from
nested functions instead of adding ways to continue supporting it. There's
probably a larger conversation to be had about the utility of nested
functions in general for C (and whether this GCC extension should be
deprecated altogether in future), but I feel like the -fhardened subset
gives us the opportunity to enforce at least a safe subset for now,
possibly extending it in future.
Nested functions by itself don't need a trampoline, only if the address
of it is passed outside the containing function's scope (as a callback,
for example).
Yes, that's why I said that the conversation about deprecating the C
nested functions extension is a broader one (and hence for gcc 15) that
will likely involve the question of whether dropping the extension
altogether gives any benefit or if dropping support for on-stack
trampolines is sufficient. On-heap trampolines are maybe slightly
better in that they don't need an executable stack, but defaulting to
on-heap trampolines for -fhardened seems like a lost opportunity to
enforce better user code.
Thanks,
Sid