peter.smith added a comment.

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.


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