This was agreed on in
https://lists.llvm.org/pipermail/llvm-dev/2020-May/141345.html
The thread proposed two options
- add a character to augmentation string and handle in libuwind
- use a separate personality function.
It was determined that this is the simpler and better option.
This is part of ARM's Aarch64 ABI:
https://github.com/ARM-software/abi-aa/blob/main/aadwarf64/aadwarf64.rst#id22
The next step after this is teaching libunwind to untag when this
augmentation character is set.
As we've seen recently, sometimes even nounwind frames get unwound. Is it possible to relax some of these conditions to emit the "G" in as many cases as possible? This is the situation where MTE is more demanding to the unwind correctness, so I'd rather err on the safe side.