[Lldb-commits] [lldb] b30a48c - [lldb/test] Fix scripted frame provider tests on ARM32
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Tue Dec 2 16:39:47 PST 2025
Author: Med Ismail Bennani
Date: 2025-12-02T16:39:33-08:00
New Revision: b30a48c389cee20479419a672d841cb32eaf107a
URL: https://github.com/llvm/llvm-project/commit/b30a48c389cee20479419a672d841cb32eaf107a
DIFF: https://github.com/llvm/llvm-project/commit/b30a48c389cee20479419a672d841cb32eaf107a.diff
LOG: [lldb/test] Fix scripted frame provider tests on ARM32
On ARM32, FixCodeAddress unconditionally clears bit 0 (the Thumb bit)
from all code addresses, including synthetic frame PCs. This causes
test failures where synthetic PCs like 0xFFFF and 0xDEADBEEF become
0xFFFE and 0xDEADBEEE respectively.
This adjusts the tests to expect the modified PC values on ARM32.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
Added:
Modified:
lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
Removed:
################################################################################
diff --git a/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py b/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
index 3c0390ef72fd2..1ae0a17814e89 100644
--- a/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+++ b/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
@@ -5,6 +5,7 @@
import os
import lldb
+import lldbsuite.test.lldbplatformutil as lldbplatformutil
from lldbsuite.test.lldbtest import TestBase
from lldbsuite.test import lldbutil
@@ -208,6 +209,10 @@ def test_applies_to_thread(self):
# Check each thread
thread_id_1_found = False
+ # On ARM32, FixCodeAddress clears bit 0, so synthetic PCs get modified
+ is_arm_32bit = lldbplatformutil.getArchitecture() == "arm"
+ expected_synthetic_pc = 0xFFFE if is_arm_32bit else 0xFFFF
+
for i in range(num_threads):
t = process.GetThreadAtIndex(i)
thread_id = t.GetIndexID()
@@ -222,8 +227,8 @@ def test_applies_to_thread(self):
)
self.assertEqual(
t.GetFrameAtIndex(0).GetPC(),
- 0xFFFF,
- f"Thread with ID 1 should have synthetic PC 0xFFFF",
+ expected_synthetic_pc,
+ f"Thread with ID 1 should have synthetic PC {expected_synthetic_pc:#x}",
)
else:
# Other threads should keep their original frames
@@ -391,13 +396,17 @@ def test_circular_dependency_fix(self):
"Should have original frames + 1 synthetic frame",
)
+ # On ARM32, FixCodeAddress clears bit 0, so synthetic PCs get modified
+ is_arm_32bit = lldbplatformutil.getArchitecture() == "arm"
+ expected_synthetic_pc = 0xDEADBEEE if is_arm_32bit else 0xDEADBEEF
+
# First frame should be synthetic
frame0 = thread.GetFrameAtIndex(0)
self.assertIsNotNone(frame0)
self.assertEqual(
frame0.GetPC(),
- 0xDEADBEEF,
- "First frame should be synthetic frame with PC 0xDEADBEEF",
+ expected_synthetic_pc,
+ f"First frame should be synthetic frame with PC {expected_synthetic_pc:#x}",
)
# Second frame should be the original first frame
More information about the lldb-commits
mailing list