summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/python_api/symbol-context
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/symbol-context')
-rw-r--r--lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py35
-rw-r--r--lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h11
-rw-r--r--lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp13
-rw-r--r--lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp6
5 files changed, 70 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile
new file mode 100644
index 00000000000..650a8b261be
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := file1.cpp file2.cpp
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py
new file mode 100644
index 00000000000..de3c1f266cc
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py
@@ -0,0 +1,35 @@
+"""
+Test SBSymbolContext APIs.
+"""
+
+from __future__ import print_function
+
+import os
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class SymbolContextTwoFilesTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @add_test_categories(['pyapi'])
+ def test_lookup_by_address(self):
+ """Test lookup by address in a module with multiple compilation units"""
+ self.build()
+ exe = os.path.join(os.getcwd(), "a.out")
+
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target, VALID_TARGET)
+
+ module = target.GetModuleAtIndex(0)
+ self.assertTrue(module.IsValid())
+ for symbol_name in ["struct1::f()", "struct2::f()"]:
+ sc_list = module.FindFunctions(symbol_name, lldb.eSymbolTypeCode)
+ self.assertTrue(1, sc_list.GetSize())
+ symbol_address = sc_list.GetContextAtIndex(0).GetSymbol().GetStartAddress()
+ self.assertTrue(symbol_address.IsValid())
+ sc_by_address = module.ResolveSymbolContextForAddress(symbol_address, lldb.eSymbolContextFunction)
+ self.assertEqual(symbol_name, sc_by_address.GetFunction().GetName())
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h
new file mode 100644
index 00000000000..0cb685622cd
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h
@@ -0,0 +1,11 @@
+struct struct1
+{
+ static void
+ f();
+};
+
+struct struct2
+{
+ static void
+ f();
+};
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp
new file mode 100644
index 00000000000..16c8ce7d948
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp
@@ -0,0 +1,13 @@
+#include "decls.h"
+
+void
+struct1::f()
+{
+}
+
+int main()
+{
+ struct1::f();
+ struct2::f();
+ return 0;
+}
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp
new file mode 100644
index 00000000000..3bd1aaf95a7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp
@@ -0,0 +1,6 @@
+#include "decls.h"
+
+void
+struct2::f()
+{
+}
OpenPOWER on IntegriCloud