[Lldb-commits] [lldb] 1b4d5b3 - [lldb/API] Use a valid LineEntry object in SBCompileUnit::FindLineEntryIndex
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Mon May 17 17:29:22 PDT 2021
Author: Med Ismail Bennani
Date: 2021-05-18T01:28:53+01:00
New Revision: 1b4d5b3bf30656d39d94985a63f1c0514fcc6526
URL: https://github.com/llvm/llvm-project/commit/1b4d5b3bf30656d39d94985a63f1c0514fcc6526
DIFF: https://github.com/llvm/llvm-project/commit/1b4d5b3bf30656d39d94985a63f1c0514fcc6526.diff
LOG: [lldb/API] Use a valid LineEntry object in SBCompileUnit::FindLineEntryIndex
This patch updates `SBCompileUnit::FindLineEntryIndex` to pass a valid
`LineEntry` pointer to `CompileUnit::FindLineEntry`.
This caused `LineTable::FindLineEntryIndexByFileIndexImpl` to return its
`best_match` initial value (UINT32_MAX).
rdar://78115426
Differential Revision: https://reviews.llvm.org/D102658
Signed-off-by: Med Ismail Bennani <medismail.bennani at gmail.com>
Added:
lldb/test/API/functionalities/find-line-entry/Makefile
lldb/test/API/functionalities/find-line-entry/TestFindLineEntry.py
lldb/test/API/functionalities/find-line-entry/main.c
Modified:
lldb/source/API/SBCompileUnit.cpp
Removed:
################################################################################
diff --git a/lldb/source/API/SBCompileUnit.cpp b/lldb/source/API/SBCompileUnit.cpp
index 765957d680c9c..36df480dd094d 100644
--- a/lldb/source/API/SBCompileUnit.cpp
+++ b/lldb/source/API/SBCompileUnit.cpp
@@ -108,9 +108,10 @@ uint32_t SBCompileUnit::FindLineEntryIndex(uint32_t start_idx, uint32_t line,
else
file_spec = m_opaque_ptr->GetPrimaryFile();
+ LineEntry line_entry;
index = m_opaque_ptr->FindLineEntry(
start_idx, line, inline_file_spec ? inline_file_spec->get() : nullptr,
- exact, nullptr);
+ exact, &line_entry);
}
return index;
diff --git a/lldb/test/API/functionalities/find-line-entry/Makefile b/lldb/test/API/functionalities/find-line-entry/Makefile
new file mode 100644
index 0000000000000..695335e068c0c
--- /dev/null
+++ b/lldb/test/API/functionalities/find-line-entry/Makefile
@@ -0,0 +1,4 @@
+C_SOURCES := main.c
+CFLAGS_EXTRAS := -std=c99
+
+include Makefile.rules
diff --git a/lldb/test/API/functionalities/find-line-entry/TestFindLineEntry.py b/lldb/test/API/functionalities/find-line-entry/TestFindLineEntry.py
new file mode 100644
index 0000000000000..459712167e6ff
--- /dev/null
+++ b/lldb/test/API/functionalities/find-line-entry/TestFindLineEntry.py
@@ -0,0 +1,33 @@
+"""
+Test that SBCompileUnit::FindLineEntryIndex works correctly.
+"""
+
+import lldb
+import lldbsuite.test.lldbutil as lldbutil
+from lldbsuite.test.lldbtest import *
+
+class FindLineEntry(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ def test_compile_unit_find_line_entry_index(self):
+ """ Test the CompileUnit LineEntryIndex lookup API """
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ self.target = self.dbg.CreateTarget(exe)
+ self.assertTrue(self.target.IsValid(), "Target is not valid")
+
+ self.file = lldb.SBFileSpec("main.c")
+ sc_list = self.target.FindCompileUnits(self.file)
+ self.assertEqual(len(sc_list), 1)
+ cu = sc_list[0].GetCompileUnit()
+ self.assertTrue(cu.IsValid(), "CompileUnit is not valid")
+
+ # First look for valid line
+ self.line = line_number("main.c", "int change_me")
+ self.assertNotEqual(cu.FindLineEntryIndex(0, self.line, self.file),
+ lldb.LLDB_INVALID_LINE_NUMBER)
+
+ # Then look for a line out of bound
+ self.assertEqual(cu.FindLineEntryIndex(0, 42, self.file),
+ lldb.LLDB_INVALID_LINE_NUMBER)
diff --git a/lldb/test/API/functionalities/find-line-entry/main.c b/lldb/test/API/functionalities/find-line-entry/main.c
new file mode 100644
index 0000000000000..68daadde6a331
--- /dev/null
+++ b/lldb/test/API/functionalities/find-line-entry/main.c
@@ -0,0 +1,7 @@
+int main() {
+ int change_me = 0;
+ for (int i = 0; i < 2; i++) {
+ change_me++;
+ }
+ return 0;
+}
More information about the lldb-commits
mailing list