David Spickett db7fb704f6 [lldb][test] Explain why TestExprFromNonZeroFrame is disabled on Windows
It's not scientific but I think the PDB we produce on the Windows on Arm
bot simply doesn't have the information needed. Could also be that clang
is producing some DWARF, but link.exe is dropping it from the final executable,
the effect is the same.
2025-04-08 12:17:07 +00:00

33 lines
1.2 KiB
Python

import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class ExprFromNonZeroFrame(TestBase):
NO_DEBUG_INFO_TESTCASE = True
# Requires DWARF debug information.
@skipIfWindows
def test(self):
"""
Tests that we can use SBFrame::EvaluateExpression on a frame
that we're not stopped in, even if thread-plans run as part of
parsing the expression (e.g., when running static initializers).
"""
self.build()
(_, _, thread, _) = lldbutil.run_to_source_breakpoint(
self, "return 5", lldb.SBFileSpec("main.c")
)
frame = thread.GetFrameAtIndex(1)
# Using a function pointer inside the expression ensures we
# emit a ptrauth static initializer on arm64e into the JITted
# expression. The thread-plan that runs for this static
# initializer should save/restore the current execution context
# frame (which in this test is frame #1).
result = frame.EvaluateExpression("int (*fptr)() = &func; fptr()")
self.assertTrue(result.GetError().Success())
self.assertEqual(result.GetValueAsSigned(), 5)