[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