Conversation

Replying to
For example, Google is moving towards using Clang's type-based CFI and SafeStack and it's going to be more stable with their resources used to fix the Android-specific bugs caught by type-based CFI. There's also an upstream implementation of the -fsanitize=local-init feature.
1
2
I still have the LLVM XOR canary implementation but I'm planning on abandoning it to use SafeStack combined with the upcoming ARMv8.5 memory tagging feature. XOR canary patch was very simple for x86_64 but the arm64 implementation ended up too complicated to maintain and trust.
1
XOR canaries and backward edge CFI work better on arm64 due to the link register, which avoids the potential for another thread racing to overwrite the return address between verification and returning. Unfortunately, that also led to having a much more invasive implementation.
1
LLVM was optimizing out the security check until I made a much more invasive implementation with a virtual instruction for the backend. I think it might be better to reimplement it without adding anything to the IR in the first place, but it feels nearly obsolete at this point.
2