[Lldb-commits] [lldb] [lldb] Update TestObjcOptimized.py for MTE (PR #186042)

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 11 23:37:06 PDT 2026


https://github.com/JDevlieghere updated https://github.com/llvm/llvm-project/pull/186042

>From 102b7b0c18043b7e25d6887b4f45fda4843bd4e6 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jonas at devlieghere.com>
Date: Wed, 11 Mar 2026 23:32:41 -0700
Subject: [PATCH] [lldb] Update TestObjcOptimized.py for MTE

Use process.FixAddress to strip the top byte when running under MTE.
---
 .../lang/objc/objc-optimized/TestObjcOptimized.py   | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
index 1d74047a49bd1..387a3e11e0c0f 100644
--- a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
+++ b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
@@ -6,7 +6,6 @@
 optimized it into a register.
 """
 
-
 import lldb
 import re
 
@@ -57,10 +56,20 @@ def test_break(self):
         if mo:
             desired_pointer = mo.group(0)
 
+        # Use FixAddress to strip top-byte metadata (PtrAuth tags, MTE tags).
+        process = self.dbg.GetSelectedTarget().GetProcess()
+        desired_addr = process.FixAddress(int(desired_pointer, 16))
+
         self.expect(
             "expression (self)",
-            substrs=[("(%s *) $1 = " % self.myclass), desired_pointer],
+            substrs=["(%s *) $1 = " % self.myclass],
         )
+        interp.HandleCommand("expression (self)", result)
+        expr_output = result.GetOutput()
+        mo = re.search("0x[0-9a-f]+", expr_output)
+        self.assertTrue(mo, "Expected a pointer in expression output")
+        expr_addr = process.FixAddress(int(mo.group(0), 16))
+        self.assertEqual(desired_addr, expr_addr)
 
         self.expect(
             "expression self->non_member",



More information about the lldb-commits mailing list