Looking through the paper, my initial read is that I think my proposal is compatible with trivial relocatability, but I will think about it more to be certain. The paper requires that trivial relocations must be done by calling std::trivially_relocate
, and we can have the compiler generate an implementation of that function that authenticates and re-signs any pointer fields belonging to non-trivially-destructible objects. This is basically the same as would be required for vtable pointers under the PAuth ABI as mentioned in the FAQ section 15.1.