[all-commits] [llvm/llvm-project] 21dfaf: Setting to control addressable bits in high memory

Jason Molenda via All-commits all-commits at lists.llvm.org
Wed May 31 18:38:55 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 21dfaf60a763795e3834d67def48fc2ba5214e59
  Author: Jason Molenda <jason at molenda.com>
  Date:   2023-05-31 (Wed, 31 May 2023)

  Changed paths:
    M lldb/include/lldb/Target/Process.h
    M lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
    M lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.h
    M lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
    M lldb/source/Target/Process.cpp
    M lldb/source/Target/TargetProperties.td

  Log Message:
  Setting to control addressable bits in high memory

On AArch64, it is possible to have a program that accesses both low
(0x000...) and high (0xfff...) memory, and with pointer authentication,
you can have different numbers of bits used for pointer authentication
depending on whether the address is in high or low memory.

This adds a new target.process.highmem-virtual-addressable-bits
setting which the AArch64 Mac ABI plugin will use, when set, to
always set those unaddressable high bits for high memory addresses,
and will use the existing target.process.virtual-addressable-bits
setting for low memory addresses.

This patch does not change the existing behavior when only
target.process.virtual-addressable-bits is set.  In that case, the
value will apply to all addresses.

Not yet done is recognizing metadata in a live process connection
(gdb-remote qHostInfo) or a Mach-O corefile LC_NOTE to set the
correct number of addressing bits for both memory ranges.  That
will be a future change.

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

More information about the All-commits mailing list