https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102768
nsz at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nsz at gcc dot gnu.org --- Comment #1 from nsz at gcc dot gnu.org --- note that this at least - requires runtime support (to manage the shadow stack), - needs a reserved register (x18), - affects unwinding (shadow stack must be unwound too), - affects longjmp and jmp_buf abi. i guess these are taken care of in the linux context and in that case i think it makes sense to have the gcc support upstream instead of in a plugin. however the general support in user-space is not trivial (the required libc changes may not be possible in a backward compatible way such as changing jmp_buf, or reliably such as allocating the size of shadow stack and dealing with related failures, or with good ui e.g. opt-in mechanism for binaries that require shadow stack so there is no regression for non-shadow-stack binaries, etc.) and there are existing stack protection mechanisms implemented. i just wanted to note here that the linux kernel use-case can be treated separately from user-space applications and likely less effort and less controversial if you scope the feature right.