[PATCH] D72222: [Driver][CodeGen] Add -fpatchable-function-entry=N[,0]
Fangrui Song via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 8 10:59:11 PST 2020
MaskRay planned changes to this revision.
MaskRay added a comment.
@ostannard @nickdesaulniers @peter.smith Unfortunately we will have to get buy-in from GCC before committing to do an incompatible design. A promise that they will implement a new approach to overcome the disadvantages and an agreement on the new option name is probably sufficient for us to move forward.
A list of deficiency:
- sh_addralign={4,8}
- --gc-sections/COMDAT does not work
- Using a PC-relative relocation type instead of a symbolic relocation type (R_AARCH64_ABS64, R_X86_64_64, R_PPC64_ADDR64) avoids SHF_WRITE, RELRO, and dynamic relocations (24 bytes*number of functions, not negligible).
- Incompatible with `BTI c`. `nop;nop;nop;bti c;nop nop` probably works. I hope my CodeGen change does not make such interop harder.
- On i386/x86-64 they should use multi-byte NOPs.
Other issues can be fixed in a backward-compatible manner, but the relocation type issue cannot. If you know the Linux kernel contacts, please make them aware of https://gcc.gnu.org/ml/gcc/2020-01/msg00067.html and the design we'd like to do in D72215 <https://reviews.llvm.org/D72215>.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D72222/new/
https://reviews.llvm.org/D72222
More information about the cfe-commits
mailing list