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);


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to