diff options
author | Lang Hames <lhames@gmail.com> | 2025-01-28 14:46:27 +1100 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2025-01-28 14:57:49 +1100 |
commit | 79685b59b78804f99e46f12ac888edbc0a6d1472 (patch) | |
tree | d5beec232797b08b2e9518869116a637f1122a81 /llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp | |
parent | 8b29c5ccddb87ac7336a700877dc08cdc57ac65b (diff) | |
download | llvm-79685b59b78804f99e46f12ac888edbc0a6d1472.zip llvm-79685b59b78804f99e46f12ac888edbc0a6d1472.tar.gz llvm-79685b59b78804f99e46f12ac888edbc0a6d1472.tar.bz2 |
[JITLink][aarch64] Fix dependence tracking for Pointer64Authenticated edges.
Transform Pointer64Authenticated edges into KeepAlive edges, rather than
removing them, in order to preserve symbol dependence information.
The lowerPointer64AuthEdgesToSigningFunction pass is responsible for
transforming Pointer64Authenticated edges to a signing function that can be run
in the executing process to initialize global PAC pointers. Removing the edges
entirely in this pass results in loss of dependence tracking, which can in turn
cause ORC to report PAC pointers as ready before the pointers targets have
completed materialization (resulting in a use-before-finalize error, often
manifesting as access to uninitialized / unprotected memory).
This commit addresses the issue by leaving the edges in the graph and simply
changing their kind to KeepAlive, a no-op for fixup purposes but followed for
dependence tracking purposes.
Diffstat (limited to 'llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions