llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: Felipe de Azevedo Piovezan (felipepiovezan)

<details>
<summary>Changes</summary>

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 #<!-- -->150537.

This was tested running the LLDB test suite on arm64e.

(The first attempt at this patch caused a failure in 
TestScriptedProcessEmptyMemoryRegion.py. This test exercises a case where 
IRMemoryMap uses host memory in its allocations; pointers to such allocations 
should not be fixed, which is what the original patch failed to account for).

---
Full diff: https://github.com/llvm/llvm-project/pull/153585.diff


1 Files Affected:

- (modified) lldb/source/Expression/IRMemoryMap.cpp (+7) 


``````````diff
diff --git a/lldb/source/Expression/IRMemoryMap.cpp 
b/lldb/source/Expression/IRMemoryMap.cpp
index 150699352a2e3..3ac42649d0834 100644
--- a/lldb/source/Expression/IRMemoryMap.cpp
+++ b/lldb/source/Expression/IRMemoryMap.cpp
@@ -640,6 +640,13 @@ void IRMemoryMap::WritePointerToMemory(lldb::addr_t 
process_address,
                                        lldb::addr_t address, Status &error) {
   error.Clear();
 
+  /// Only ask the Process to fix the address if this address belongs to the
+  /// process (host allocations are stored in m_data).
+  if (auto it = FindAllocation(process_address, 1);
+      it != m_allocations.end() && it->second.m_data.GetByteSize() == 0)
+    if (auto process_sp = GetProcessWP().lock())
+      address = process_sp->FixAnyAddress(address);
+
   Scalar scalar(address);
 
   WriteScalarToMemory(process_address, scalar, GetAddressByteSize(), error);

``````````

</details>


https://github.com/llvm/llvm-project/pull/153585
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to