samitolvanen added a comment.

In D119296#3684022 <https://reviews.llvm.org/D119296#3684022>, @joaomoreira 
wrote:

> Some minor suggestions/not so relevant:
>
> - Change the name of CFIType to CFIHash, as it is probably more descriptive.

My thinking here was that Type is more generic than a Hash, but I don't really 
have a strong opinion about this.

> - Change the KCFI.* into CFI.* where the passes/structures can be re-used by 
> a different CFI approach. For example, X86KCFI::emitCheck can be easily 
> re-used by other CFI schemes. Similarly, the LowerKCFI_CHECK function can 
> also be easily re-used. Because these other approaches are hypothetical by 
> now, this is not a big deal... but may be subject to changes in the future, 
> in case someone comes up with new schemes.

Sure, it should be trivial for a future patch that wants to reuse this code to 
rename the functions and classes as needed.

> - Deny the ENDBR64/32 opcodes as valid hashes for the CFIType. There was an 
> effort in the past to prevent it from being emitted as an immediate, thus, 
> perhaps, we should also care. Since FineIBT may inherit hashes from KCFI, it 
> would be great to prevent these from becoming valid indirect targets or 
> needing to be checked.

Good point. It should be quite unlikely that we'll end up randomly generating 
ENDBR as a hash, but I added a helper to the X86 code to ensure we don't end up 
emitting these values.

> Some relevant optimizations/improvements for future work:
>
> - When LTO is used, hashes may be suppressed for non-local + non-address 
> taken functions.
> - As suggested by Andy Cooper, add a salt attribute that allows to 
> differentiate hashes of functions with the same prototype.

Agreed, and another request from Peter Z was to add a flag to omit ENDBR from 
functions with the `!kcfi_type` attribute. I think these can all be separate 
follow-up patches.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D119296/new/

https://reviews.llvm.org/D119296

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to