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)
54 lines
1.9 KiB
Python
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
|
|
),
|
|
)
|