[Lldb-commits] [PATCH] D98529: [lldb] Strip pointer authentication codes from aarch64 pc.
Jason Molenda via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 17 11:33:30 PDT 2021
jasonmolenda added a comment.
In D98529#2631876 <https://reviews.llvm.org/D98529#2631876>, @amccarth wrote:
> Before reading Jason's response, I was independently wondering whether it makes sense to temporarily introduce a variable to let the user set the mask, just until the workaround is replaced with final code. Given that there's precedent, I would support that. (I've not implemented one of these LLDB settings before, but I imagine it's pretty straightforward.)
I have a similar hack for kernel debugging where the kernel has a global gT1Sz and I read that in DynamicLoaderDarwinKernel.cpp,
symbol = m_kernel.GetModule()->FindFirstSymbolWithNameAndType(
arm64_T1Sz_value, eSymbolTypeData);
if (symbol) {
if (symbol->GetByteSizeIsValid()) {
addr_t sym_addr = symbol->GetLoadAddress(&m_process->GetTarget());
uint64_t sym_value = m_process->GetTarget().ReadUnsignedIntegerFromMemory(
sym_addr, false, bytesize, 0, error);
// 64 - T1Sz is the highest bit used for auth.
// The value we pass in to SetVirtualAddressableBits is
// the number of bits used for addressing, so if
// T1Sz is 25, then 64-25 == 39, bits 0..38 are used for
// addressing, bits 39..63 are used for PAC/TBI or whatever.
int virt_addr_bits = 64 - sym_value;
m_process->SetVirtualAddressableBits(virt_addr_bits);
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98529/new/
https://reviews.llvm.org/D98529
More information about the lldb-commits
mailing list