https://github.com/felipepiovezan updated 
https://github.com/llvm/llvm-project/pull/159612

>From 9214bba07c1e0e0795d2a963d4161b208f96ed85 Mon Sep 17 00:00:00 2001
From: Felipe de Azevedo Piovezan <fpiove...@apple.com>
Date: Mon, 15 Sep 2025 15:53:39 -0700
Subject: [PATCH 1/3] [lldb][NFC] Simplify logic in
 ABIMacOSX_arm64::FixDataAddress

---
 .../Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp   | 52 ++++++++++---------
 1 file changed, 28 insertions(+), 24 deletions(-)

diff --git a/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp 
b/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
index 094e0523a4edf..db4e73ba76544 100644
--- a/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
+++ b/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
@@ -758,41 +758,45 @@ ValueObjectSP ABIMacOSX_arm64::GetReturnValueObjectImpl(
 }
 
 addr_t ABIMacOSX_arm64::FixCodeAddress(addr_t pc) {
-  addr_t pac_sign_extension = 0x0080000000000000ULL;
+  ProcessSP process_sp = GetProcessSP();
+  if (!process_sp)
+    return pc;
+
+  addr_t mask = process_sp->GetCodeAddressMask();
   addr_t tbi_mask = 0xff80000000000000ULL;
-  addr_t mask = 0;
-
-  if (ProcessSP process_sp = GetProcessSP()) {
-    mask = process_sp->GetCodeAddressMask();
-    if (pc & pac_sign_extension) {
-      addr_t highmem_mask = process_sp->GetHighmemCodeAddressMask();
-      if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
-        mask = highmem_mask;
-    }
-  }
   if (mask == LLDB_INVALID_ADDRESS_MASK)
     mask = tbi_mask;
 
-  return (pc & pac_sign_extension) ? pc | mask : pc & (~mask);
+  addr_t pac_sign_extension = 0x0080000000000000ULL;
+  if (pc & pac_sign_extension) {
+    addr_t highmem_mask = process_sp->GetHighmemCodeAddressMask();
+    if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
+      return pc | highmem_mask;
+    return pc | mask;
+  }
+
+  return pc & (~mask);
 }
 
 addr_t ABIMacOSX_arm64::FixDataAddress(addr_t pc) {
-  addr_t pac_sign_extension = 0x0080000000000000ULL;
+  ProcessSP process_sp = GetProcessSP();
+  if (!process_sp)
+    return pc;
+
+  addr_t mask = process_sp->GetDataAddressMask();
   addr_t tbi_mask = 0xff80000000000000ULL;
-  addr_t mask = 0;
-
-  if (ProcessSP process_sp = GetProcessSP()) {
-    mask = process_sp->GetDataAddressMask();
-    if (pc & pac_sign_extension) {
-      addr_t highmem_mask = process_sp->GetHighmemDataAddressMask();
-      if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
-        mask = highmem_mask;
-    }
-  }
   if (mask == LLDB_INVALID_ADDRESS_MASK)
     mask = tbi_mask;
 
-  return (pc & pac_sign_extension) ? pc | mask : pc & (~mask);
+  addr_t pac_sign_extension = 0x0080000000000000ULL;
+  if (pc & pac_sign_extension) {
+    addr_t highmem_mask = process_sp->GetHighmemDataAddressMask();
+    if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
+      return pc | highmem_mask;
+    return pc | mask;
+  }
+
+  return pc & (~mask);
 }
 
 void ABIMacOSX_arm64::Initialize() {

>From 3243ab7bced75c3e69469e8270c16e284af68a19 Mon Sep 17 00:00:00 2001
From: Felipe de Azevedo Piovezan <fpiove...@apple.com>
Date: Thu, 18 Sep 2025 10:29:58 -0700
Subject: [PATCH 2/3] fixup! Reuse code across functions

---
 .../Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp   | 47 ++++++++-----------
 1 file changed, 19 insertions(+), 28 deletions(-)

diff --git a/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp 
b/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
index db4e73ba76544..16aafe640b1a4 100644
--- a/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
+++ b/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
@@ -757,46 +757,37 @@ ValueObjectSP ABIMacOSX_arm64::GetReturnValueObjectImpl(
   return return_valobj_sp;
 }
 
-addr_t ABIMacOSX_arm64::FixCodeAddress(addr_t pc) {
-  ProcessSP process_sp = GetProcessSP();
+constexpr addr_t tbi_mask = 0xff80000000000000ULL;
+constexpr addr_t pac_sign_extension = 0x0080000000000000ULL;
+
+static addr_t DoFixAddr(addr_t addr, bool is_code, ProcessSP process_sp) {
   if (!process_sp)
-    return pc;
+    return addr;
 
-  addr_t mask = process_sp->GetCodeAddressMask();
-  addr_t tbi_mask = 0xff80000000000000ULL;
+  addr_t mask = is_code ? process_sp->GetCodeAddressMask()
+                        : process_sp->GetDataAddressMask();
   if (mask == LLDB_INVALID_ADDRESS_MASK)
     mask = tbi_mask;
 
-  addr_t pac_sign_extension = 0x0080000000000000ULL;
-  if (pc & pac_sign_extension) {
-    addr_t highmem_mask = process_sp->GetHighmemCodeAddressMask();
+  if (addr & pac_sign_extension) {
+    addr_t highmem_mask = is_code ? process_sp->GetHighmemCodeAddressMask()
+                                  : process_sp->GetHighmemCodeAddressMask();
     if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
-      return pc | highmem_mask;
-    return pc | mask;
+      return addr | highmem_mask;
+    return addr | mask;
   }
 
-  return pc & (~mask);
+  return addr & (~mask);
 }
 
-addr_t ABIMacOSX_arm64::FixDataAddress(addr_t pc) {
+addr_t ABIMacOSX_arm64::FixCodeAddress(addr_t pc) {
   ProcessSP process_sp = GetProcessSP();
-  if (!process_sp)
-    return pc;
-
-  addr_t mask = process_sp->GetDataAddressMask();
-  addr_t tbi_mask = 0xff80000000000000ULL;
-  if (mask == LLDB_INVALID_ADDRESS_MASK)
-    mask = tbi_mask;
-
-  addr_t pac_sign_extension = 0x0080000000000000ULL;
-  if (pc & pac_sign_extension) {
-    addr_t highmem_mask = process_sp->GetHighmemDataAddressMask();
-    if (highmem_mask != LLDB_INVALID_ADDRESS_MASK)
-      return pc | highmem_mask;
-    return pc | mask;
-  }
+  return DoFixAddr(pc, true /*is_code*/, GetProcessSP());
+}
 
-  return pc & (~mask);
+addr_t ABIMacOSX_arm64::FixDataAddress(addr_t addr) {
+  ProcessSP process_sp = GetProcessSP();
+  return DoFixAddr(addr, false /*is_code*/, GetProcessSP());
 }
 
 void ABIMacOSX_arm64::Initialize() {

>From 1ce79876fb1434532bcce3be0dbb7a51dccccc84 Mon Sep 17 00:00:00 2001
From: Felipe de Azevedo Piovezan <fpiove...@apple.com>
Date: Thu, 18 Sep 2025 11:22:35 -0700
Subject: [PATCH 3/3] fixup! add comment

---
 lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp 
b/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
index 16aafe640b1a4..c595564f6fb8e 100644
--- a/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
+++ b/lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
@@ -760,6 +760,8 @@ ValueObjectSP ABIMacOSX_arm64::GetReturnValueObjectImpl(
 constexpr addr_t tbi_mask = 0xff80000000000000ULL;
 constexpr addr_t pac_sign_extension = 0x0080000000000000ULL;
 
+/// Consults the process for its {code, data} address masks and applies it to
+/// `addr`.
 static addr_t DoFixAddr(addr_t addr, bool is_code, ProcessSP process_sp) {
   if (!process_sp)
     return addr;

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

Reply via email to