[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