[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:35:32 PDT 2026
https://github.com/JDevlieghere created https://github.com/llvm/llvm-project/pull/186042
Use process.FixAddress to strip the top byte when running under MTE.
>From 87432e935cf5014df71da9ae0cc23f03b14ec2ad 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 | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
index 1d74047a49bd1..713c79b4630c7 100644
--- a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
+++ b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
@@ -57,10 +57,22 @@ def test_break(self):
if mo:
desired_pointer = mo.group(0)
+ # Use FixAddress to strip top-byte metadata (ObjC ISA tags, MTE tags)
+ # because `frame variable` and `expression` may report different
+ # top-byte values.
+ 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