summaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py
diff options
context:
space:
mode:
authorMed Ismail Bennani <medismail.bennani@gmail.com>2022-05-11 19:33:37 -0700
committerMed Ismail Bennani <medismail.bennani@gmail.com>2022-05-12 16:54:22 -0700
commita6926d576131c9ad849fef6f1d43134caab5025e (patch)
treea7993acee9a874480a9e69743ace6005583cad31 /lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py
parent6cd9633c1da5d2867306217af59bcc4b589bab02 (diff)
[lldb/API] Add SBCompileUnit::GetIndexForLineEntry method to SB API
This patch adds a new `GetIndexForLineEntry` method to the `SBCompileUnit` class. As the name suggests, given an `SBLineEntry` object, this will return the line entry index within a specific compile unit. This method can take a `exact` boolean that will make sure that the provided line entry matches perfectly another line entry in the compile unit. rdar://47450887 Differention Revision: https://reviews.llvm.org/D125437 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Diffstat (limited to 'lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py')
-rw-r--r--lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py b/lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py
new file mode 100644
index 000000000000..2c4ebf7982d9
--- /dev/null
+++ b/lldb/test/API/python_api/compile_unit/TestCompileUnitAPI.py
@@ -0,0 +1,44 @@
+"""
+Test SBCompileUnit APIs.
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class CompileUnitAPITestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ def setUp(self):
+ TestBase.setUp(self)
+
+ 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")
+
+ self.assertEqual(main_cu.GetIndexForLineEntry(line_entry, True),
+ main_cu.FindLineEntryIndex(0, line_entry.GetLine(),
+ line_entry.GetFileSpec(), True))
+
+