hctim added a comment. In D132425#3753065 <https://reviews.llvm.org/D132425#3753065>, @leonardchan wrote:
> We have a generic long term solution for hwasan+RV which I think might also > be applicable for MTE+RV. For hwasan, since it's mainly the IR pass that > converts usages of the vtable (within the vtable itself) to use tagged > aliases, the ideal solution is to just have hwasan ignore these specific > references in the vtable such that offset calculation can continue to use the > untagged address allowing the relocation arithmetic to not overflow. Now for > llvm, I'm assuming it's an instrumentation pass like memtagsanitizer that > will ensure all references to globals go through the GOT by replacing all > global references with the appropriate IR that gets lowered to this GOT > reference. If this is the case, then I *think* a similar solution can be done > here where particular references to the vtable continue to use the original > vtable address and avoid instrumentation. HWASan and MTE have a nice invariant that helps - functions aren't tagged (phew). IIUC, For HWASan, it seems like you could just use an `_NC` relocation and truncate off the tag bits when materializing a function pointer from the relative vtable. For MTE, taking the address of the vtable would be indirect (as it has to be grabbed from the GOT), and applying the offset would result in a tagged function pointer. Because code pages aren't mapped as `PROT_MTE`, seems like this would succeed (maybe unwinders would have to be taught to truncate any tag bits, but that seems about it). Either way, I don't think we should worry about it right this instant, and any problems would be easily detected during experimentation. Didn't actually realise this was submitted. Appreciate the follow-up patch for non-relative-vtables + hwasan :). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132425/new/ https://reviews.llvm.org/D132425 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits