[all-commits] [llvm/llvm-project] 787f91: [lldb] Remove non-address bits from addresses give...

David Spickett via All-commits all-commits at lists.llvm.org
Thu Jan 20 02:48:26 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 787f91b0bb34abeca86ad5c8a60ef044a7942996
      https://github.com/llvm/llvm-project/commit/787f91b0bb34abeca86ad5c8a60ef044a7942996
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2022-01-20 (Thu, 20 Jan 2022)

  Changed paths:
    M lldb/source/Commands/CommandObjectMemoryTag.cpp
    M lldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
    M lldb/test/API/linux/aarch64/mte_tag_access/main.c

  Log Message:
  -----------
  [lldb] Remove non-address bits from addresses given to memory tag commands

Although the memory tag commands use a memory tag manager to handle
addresses, that only removes the top byte.

That top byte is 4 bits of memory tag and 4 free bits, which is more
than it should strictly remove but that's how it is for now.

There are other non-address bit uses like pointer authentication.
To ensure the memory tag manager only has to deal with memory tags,
use the ABI plugin to remove the rest.

The tag access test has been updated to sign all the relevant pointers
and require that we're running on a system with pointer authentication
in addition to memory tagging.

The pointers will look like:
<4 bit user tag><4 bit memory tag><signature><bit virtual address>

Note that there is currently no API for reading memory tags. It will
also have to consider this when it arrives.

Reviewed By: omjavaid

Differential Revision: https://reviews.llvm.org/D117672




More information about the All-commits mailing list