Files
Ebuka Ezike cf723481e1 [lldb] Fix incorrect Python property bindings in SBExtensions. (#215283)
Several Python property definitions in the SB extension interface files
were incorrectly copy-pasted during the
["Don't use SWIG internals
refactor"](https://github.com/llvm/llvm-project/commit/89b658428bae3b749f174ca79f0fe390451d8f69)
causing properties to shadow earlier definitions instead of exposing new
functionalities.

Rename each duplicate to its intended property name and wire it to the
correct underlying method.
Add add new API tests to cover the issue.

- SBModule: compile_unit -> section.
- SBType: is_function -> is_reference.
- SBTypeSummary is_function_code -> is_function_name.

(cherry picked from commit 1fb48d1418cf55f398024c60af13436b806561f9)
2026-08-15 15:41:00 +00:00

54 lines
1.9 KiB
Python

"""
Test SBCompileUnit APIs.
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class CompileUnitAPITestCase(TestBase):
def test(self):
"""Exercise some SBCompileUnit APIs."""
self.build()
(target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
self, "break here", lldb.SBFileSpec("main.c")
)
self.assertTrue(target, VALID_TARGET)
self.assertTrue(process, PROCESS_IS_VALID)
self.assertTrue(bkpt and bkpt.GetNumLocations() == 1, VALID_BREAKPOINT)
self.assertTrue(
thread.IsValid(),
"There should be a thread stopped due to breakpoint condition",
)
frame0 = thread.GetFrameAtIndex(0)
line_entry = frame0.GetLineEntry()
sc_list = target.FindCompileUnits(line_entry.GetFileSpec())
self.assertGreater(sc_list.GetSize(), 0)
main_cu = sc_list.compile_units[0]
self.assertTrue(main_cu.IsValid(), "Main executable CU is not valid")
a_mod: lldb.SBModule = target.FindModule(lldb.SBFileSpec("a.out"))
main_cu_by_index = a_mod.compile_unit[0]
self.assertTrue(main_cu_by_index.IsValid(), "Main executable CU is not valid")
main_cu_by_name = a_mod.compile_unit["main.c"]
self.assertTrue(main_cu_by_name.IsValid(), "Main executable CU is not valid")
main_cu_by_regex_list = a_mod.compile_unit[re.compile(r".*main.*")]
self.assertEqual(len(main_cu_by_regex_list), 1)
[main_cu_by_regex] = main_cu_by_regex_list
self.assertTrue(main_cu_by_regex.IsValid(), "Main executable CU is not valid")
self.assertEqual(
main_cu.FindLineEntryIndex(line_entry, True),
main_cu.FindLineEntryIndex(
0, line_entry.GetLine(), line_entry.GetFileSpec(), True
),
)