MaskRay added a comment.

In D148573#4277573 <https://reviews.llvm.org/D148573#4277573>, @peter.smith 
wrote:

> As it stands I think this may have problems with -mbranch-protection. In that 
> case we'll need a `BTI c` to be the target of the indirect branch. I'm 
> guessing something like:
>
>   _Z3funv
>   BTI C ; In hint space
>   B . + 8 
>   .word .L__llvm_rtti_proxy-_Z3funv
>
> Otherwise when the indirect call is made then it will fail on a system with 
> BTI enabled.
>
> Not too sure how much of a problem this is for the implementation. The `BTI 
> c` can't be used as a signature, I guess the code in the caller could check 
> the value at `_z3funv + 4` . The feature could be marked as incompatible with 
> `-mbranch-protection`. I guess it may not work well with patchable functions 
> either.
>
> I would expect the emitGlobalConstant to emit data. This would be visible in 
> the object file as we'd have:
>
>   $d
>   <signature>
>   <rtti>
>   $x
>   instructions.
>
> At the moment I don't think that this would affect anything except 
> disassemblers, and the LLD cortex-a53 eratta work around which excludes $d 
> from the disassembly. It is something that it could be worth fixing, 
> expecially if there is a `BTI C` involved.

Thanks. I forgot to check this interaction with `-mbranch-protection=bti`. x86 
`-fcf-protection=branch` has a similar problem.

The current AArch64 bti instrumentation always adds a bti (even for local 
linkage functions that are not taken addresses) to accommodate range extension 
thunks, but I can think of possible improvement to make `bti` optional in more 
cases in the future.

I think `-fsanitize=function` has to do something similar to `-fsanitize=kcfi` 
by moving the two words before the function entry: D148665 
<https://reviews.llvm.org/D148665>


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D148573

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

Reply via email to