mcgrathr added a comment. In D146463#4232252 <https://reviews.llvm.org/D146463#4232252>, @craig.topper wrote:
> In D146463#4232221 <https://reviews.llvm.org/D146463#4232221>, @mcgrathr > wrote: > >> In D146463#4232214 <https://reviews.llvm.org/D146463#4232214>, @craig.topper >> wrote: >> >>> Does the kernel populate the initial value of the register for the shadow >>> stack or is that done by a runtime inside the application? >> >> This is a change to code generation and is orthogonal to how the runtime >> environment supports the ABI requirement. The details depend on the >> particular runtime environment, which is not the province of the compiler >> backend. > > I ask because GP is set in crtbegin.o on Linux today. So if its the kernel > that populates it, then GP isn't valid choice for Linux without changing > crtbegin. To use ShadowCallStack, executables need to be built with `-msmall-data-limit=0` and the runtime environment they use needs to meet the ABI. Neither of those things is provided out of the box for Linux, just as on AArch64 neither building with `-ffixed-x18` nor a runtime environment meeting the ABI exists out of the box on Linux. If a runtime environment for Linux were to support the ShadowCallStack ABI, that would be done in startup code that runs after the code injected by crtbegin.o and before any code built for the ShadowCallStack is expected to be usable, such as in the libc startup code. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D146463/new/ https://reviews.llvm.org/D146463 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits