[Lldb-commits] [lldb] 18ef8d7 - [lldb] Call FixUpPointer in WritePointerToMemory (#152798)
via lldb-commits
lldb-commits at lists.llvm.org
Mon Aug 11 09:39:15 PDT 2025
Author: Felipe de Azevedo Piovezan
Date: 2025-08-11T09:39:12-07:00
New Revision: 18ef8d7fae9573913cb299ce0c82afa2f5279846
URL: https://github.com/llvm/llvm-project/commit/18ef8d7fae9573913cb299ce0c82afa2f5279846
DIFF: https://github.com/llvm/llvm-project/commit/18ef8d7fae9573913cb299ce0c82afa2f5279846.diff
LOG: [lldb] Call FixUpPointer in WritePointerToMemory (#152798)
In architectures where pointers may contain metadata, such as arm64e,
the metadata may need to be cleaned prior to sending this pointer to be
used in expression evaluation generated code.
This patch is a step towards allowing consumers of pointers to decide
whether they want to keep or remove metadata, as opposed to discarding
metadata at the moment pointers are created. See
https://github.com/llvm/llvm-project/pull/150537.
This was tested running the LLDB test suite on arm64e.
Added:
Modified:
lldb/source/Expression/IRMemoryMap.cpp
Removed:
################################################################################
diff --git a/lldb/source/Expression/IRMemoryMap.cpp b/lldb/source/Expression/IRMemoryMap.cpp
index 150699352a2e3..8be389973f123 100644
--- a/lldb/source/Expression/IRMemoryMap.cpp
+++ b/lldb/source/Expression/IRMemoryMap.cpp
@@ -640,6 +640,9 @@ void IRMemoryMap::WritePointerToMemory(lldb::addr_t process_address,
lldb::addr_t address, Status &error) {
error.Clear();
+ if (auto process_sp = GetProcessWP().lock())
+ address = process_sp->FixAnyAddress(address);
+
Scalar scalar(address);
WriteScalarToMemory(process_address, scalar, GetAddressByteSize(), error);
More information about the lldb-commits
mailing list