summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/expression_command
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command')
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/TestBasicDeque.py41
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/main.cpp6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py37
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/main.cpp10
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/TestBasicForwardList.py34
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/main.cpp6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py31
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/main.cpp10
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/TestBasicList.py41
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/main.cpp6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py38
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/main.cpp10
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py33
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/main.cpp11
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/TestSharedPtr.py33
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/main.cpp7
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py33
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/main.cpp11
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/TestUniquePtr.py33
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/main.cpp7
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/TestBasicVector.py57
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/main.cpp6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/TestBoolVector.py34
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/main.cpp6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py47
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/main.cpp10
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/TestVectorOfVectors.py30
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/main.cpp6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py33
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/main.cpp12
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/TestWeakPtr.py33
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/main.cpp8
48 files changed, 800 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/TestBasicDeque.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/TestBasicDeque.py
new file mode 100644
index 00000000000..0ede19e8350
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/TestBasicDeque.py
@@ -0,0 +1,41 @@
+"""
+Test basic std::list functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestBasicDeque(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front()", substrs=['(int) $1 = 3'])
+ self.expect("expr (int)a.back()", substrs=['(int) $2 = 2'])
+
+ self.expect("expr std::sort(a.begin(), a.end())")
+ self.expect("expr (int)a.front()", substrs=['(int) $3 = 1'])
+ self.expect("expr (int)a.back()", substrs=['(int) $4 = 3'])
+
+ self.expect("expr std::reverse(a.begin(), a.end())")
+ self.expect("expr (int)a.front()", substrs=['(int) $5 = 3'])
+ self.expect("expr (int)a.back()", substrs=['(int) $6 = 1'])
+
+ self.expect("expr (int)(*a.begin())", substrs=['(int) $7 = 3'])
+ self.expect("expr (int)(*a.rbegin())", substrs=['(int) $8 = 1'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/main.cpp
new file mode 100644
index 00000000000..5bed55674bf
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/main.cpp
@@ -0,0 +1,6 @@
+#include <deque>
+
+int main(int argc, char **argv) {
+ std::deque<int> a = {3, 1, 2};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py
new file mode 100644
index 00000000000..4df280f32d1
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py
@@ -0,0 +1,37 @@
+"""
+Test std::deque functionality with a decl from dbg info as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestDbgInfoContentDeque(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front()->a", substrs=['(int) $1 = 3'])
+ self.expect("expr (int)a.back()->a", substrs=['(int) $2 = 2'])
+
+ self.expect("expr std::reverse(a.begin(), a.end())")
+ self.expect("expr (int)a.front()->a", substrs=['(int) $3 = 2'])
+ self.expect("expr (int)a.back()->a", substrs=['(int) $4 = 3'])
+
+ self.expect("expr (int)(a.begin()->a)", substrs=['(int) $5 = 2'])
+ self.expect("expr (int)(a.rbegin()->a)", substrs=['(int) $6 = 3'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..f8fd1fb2dd9
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/main.cpp
@@ -0,0 +1,10 @@
+#include <deque>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::deque<Foo> a = {{3}, {1}, {2}};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/TestBasicForwardList.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/TestBasicForwardList.py
new file mode 100644
index 00000000000..5cbc73d34c0
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/TestBasicForwardList.py
@@ -0,0 +1,34 @@
+"""
+Test basic std::forward_list functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestBasicList(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)std::distance(a.begin(), a.end())", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front()", substrs=['(int) $1 = 3'])
+
+ self.expect("expr a.sort()")
+ self.expect("expr (int)a.front()", substrs=['(int) $2 = 1'])
+
+ self.expect("expr (int)(*a.begin())", substrs=['(int) $3 = 1'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/main.cpp
new file mode 100644
index 00000000000..4f5e30f0629
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/main.cpp
@@ -0,0 +1,6 @@
+#include <forward_list>
+
+int main(int argc, char **argv) {
+ std::forward_list<int> a = {3, 1, 2};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py
new file mode 100644
index 00000000000..6e7be3ec00f
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py
@@ -0,0 +1,31 @@
+"""
+Test std::forward_list functionality with a decl from debug info as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestDbgInfoContentForwardList(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)std::distance(a.begin(), a.end())", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front()->a", substrs=['(int) $1 = 3'])
+
+ self.expect("expr (int)(a.begin()->a)", substrs=['(int) $2 = 3'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..b1ffc4b24cd
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/main.cpp
@@ -0,0 +1,10 @@
+#include <forward_list>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::forward_list<Foo> a = {{3}, {1}, {2}};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/TestBasicList.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/TestBasicList.py
new file mode 100644
index 00000000000..154c8ed7bd0
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/TestBasicList.py
@@ -0,0 +1,41 @@
+"""
+Test basic std::list functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestBasicList(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front()", substrs=['(int) $1 = 3'])
+ self.expect("expr (int)a.back()", substrs=['(int) $2 = 2'])
+
+ self.expect("expr a.sort()")
+ self.expect("expr (int)a.front()", substrs=['(int) $3 = 1'])
+ self.expect("expr (int)a.back()", substrs=['(int) $4 = 3'])
+
+ self.expect("expr std::reverse(a.begin(), a.end())")
+ self.expect("expr (int)a.front()", substrs=['(int) $5 = 3'])
+ self.expect("expr (int)a.back()", substrs=['(int) $6 = 1'])
+
+ self.expect("expr (int)(*a.begin())", substrs=['(int) $7 = 3'])
+ self.expect("expr (int)(*a.rbegin())", substrs=['(int) $8 = 1'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/main.cpp
new file mode 100644
index 00000000000..e54719a02fb
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/main.cpp
@@ -0,0 +1,6 @@
+#include <list>
+
+int main(int argc, char **argv) {
+ std::list<int> a = {3, 1, 2};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py
new file mode 100644
index 00000000000..713ec1abb85
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py
@@ -0,0 +1,38 @@
+"""
+Test basic std::list functionality but with a declaration from
+the debug info (the Foo struct) as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestDbgInfoContentList(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front().a", substrs=['(int) $1 = 3'])
+ self.expect("expr (int)a.back().a", substrs=['(int) $2 = 2'])
+
+ self.expect("expr std::reverse(a.begin(), a.end())")
+ self.expect("expr (int)a.front().a", substrs=['(int) $3 = 2'])
+ self.expect("expr (int)a.back().a", substrs=['(int) $4 = 3'])
+
+ self.expect("expr (int)(a.begin()->a)", substrs=['(int) $5 = 2'])
+ self.expect("expr (int)(a.rbegin()->a)", substrs=['(int) $6 = 3'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..3cfb35f8c6b
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/main.cpp
@@ -0,0 +1,10 @@
+#include <list>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::list<Foo> a = {{3}, {1}, {2}};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py
new file mode 100644
index 00000000000..1e4309f6795
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py
@@ -0,0 +1,33 @@
+"""
+Test std::shared_ptr functionality with a class from debug info as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestSharedPtr(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (int)s->a", substrs=['(int) $0 = 3'])
+ self.expect("expr (int)(s->a = 5)", substrs=['(int) $1 = 5'])
+ self.expect("expr (int)s->a", substrs=['(int) $2 = 5'])
+ self.expect("expr (bool)s", substrs=['(bool) $3 = true'])
+ self.expect("expr s.reset()")
+ self.expect("expr (bool)s", substrs=['(bool) $4 = false'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..73664f1c83a
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/main.cpp
@@ -0,0 +1,11 @@
+#include <memory>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::shared_ptr<Foo> s(new Foo);
+ s->a = 3;
+ return s->a; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/TestSharedPtr.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/TestSharedPtr.py
new file mode 100644
index 00000000000..6f1e7b12d1f
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/TestSharedPtr.py
@@ -0,0 +1,33 @@
+"""
+Test basic std::shared_ptr functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestSharedPtr(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (int)*s", substrs=['(int) $0 = 3'])
+ self.expect("expr (int)(*s = 5)", substrs=['(int) $1 = 5'])
+ self.expect("expr (int)*s", substrs=['(int) $2 = 5'])
+ self.expect("expr (bool)s", substrs=['(bool) $3 = true'])
+ self.expect("expr s.reset()")
+ self.expect("expr (bool)s", substrs=['(bool) $4 = false'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/main.cpp
new file mode 100644
index 00000000000..cb81754087f
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/main.cpp
@@ -0,0 +1,7 @@
+#include <memory>
+
+int main(int argc, char **argv) {
+ std::shared_ptr<int> s(new int);
+ *s = 3;
+ return *s; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py
new file mode 100644
index 00000000000..c321d8022e1
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py
@@ -0,0 +1,33 @@
+"""
+Test std::unique_ptr functionality with a decl from debug info as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestUniquePtrDbgInfoContent(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (int)s->a", substrs=['(int) $0 = 3'])
+ self.expect("expr (int)(s->a = 5)", substrs=['(int) $1 = 5'])
+ self.expect("expr (int)s->a", substrs=['(int) $2 = 5'])
+ self.expect("expr (bool)s", substrs=['(bool) $3 = true'])
+ self.expect("expr s.reset()")
+ self.expect("expr (bool)s", substrs=['(bool) $4 = false'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..73664f1c83a
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/main.cpp
@@ -0,0 +1,11 @@
+#include <memory>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::shared_ptr<Foo> s(new Foo);
+ s->a = 3;
+ return s->a; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/TestUniquePtr.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/TestUniquePtr.py
new file mode 100644
index 00000000000..295ec512327
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/TestUniquePtr.py
@@ -0,0 +1,33 @@
+"""
+Test basic std::unique_ptr functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestUniquePtr(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (int)*s", substrs=['(int) $0 = 3'])
+ self.expect("expr (int)(*s = 5)", substrs=['(int) $1 = 5'])
+ self.expect("expr (int)*s", substrs=['(int) $2 = 5'])
+ self.expect("expr (bool)s", substrs=['(bool) $3 = true'])
+ self.expect("expr s.reset()")
+ self.expect("expr (bool)s", substrs=['(bool) $4 = false'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/main.cpp
new file mode 100644
index 00000000000..cb81754087f
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/main.cpp
@@ -0,0 +1,7 @@
+#include <memory>
+
+int main(int argc, char **argv) {
+ std::shared_ptr<int> s(new int);
+ *s = 3;
+ return *s; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/TestBasicVector.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/TestBasicVector.py
new file mode 100644
index 00000000000..deaf8f0cb75
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/TestBasicVector.py
@@ -0,0 +1,57 @@
+"""
+Test basic std::vector functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestBasicVector(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front()", substrs=['(int) $1 = 3'])
+ self.expect("expr (int)a[1]", substrs=['(int) $2 = 1'])
+ self.expect("expr (int)a.back()", substrs=['(int) $3 = 2'])
+
+ self.expect("expr std::sort(a.begin(), a.end())")
+ self.expect("expr (int)a.front()", substrs=['(int) $4 = 1'])
+ self.expect("expr (int)a[1]", substrs=['(int) $5 = 2'])
+ self.expect("expr (int)a.back()", substrs=['(int) $6 = 3'])
+
+ self.expect("expr std::reverse(a.begin(), a.end())")
+ self.expect("expr (int)a.front()", substrs=['(int) $7 = 3'])
+ self.expect("expr (int)a[1]", substrs=['(int) $8 = 2'])
+ self.expect("expr (int)a.back()", substrs=['(int) $9 = 1'])
+
+ self.expect("expr (int)(*a.begin())", substrs=['(int) $10 = 3'])
+ self.expect("expr (int)(*a.rbegin())", substrs=['(int) $11 = 1'])
+
+ self.expect("expr a.pop_back()")
+ self.expect("expr (int)a.back()", substrs=['(int) $12 = 2'])
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $13 = 2'])
+
+ self.expect("expr (int)a.at(0)", substrs=['(int) $14 = 3'])
+
+ self.expect("expr a.push_back(4)")
+ self.expect("expr (int)a.back()", substrs=['(int) $15 = 4'])
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $16 = 3'])
+
+ self.expect("expr a.emplace_back(5)")
+ self.expect("expr (int)a.back()", substrs=['(int) $17 = 5'])
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $18 = 4'])
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/main.cpp
new file mode 100644
index 00000000000..edf130d4748
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/main.cpp
@@ -0,0 +1,6 @@
+#include <vector>
+
+int main(int argc, char **argv) {
+ std::vector<int> a = {3, 1, 2};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/TestBoolVector.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/TestBoolVector.py
new file mode 100644
index 00000000000..0ab52695faf
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/TestBoolVector.py
@@ -0,0 +1,34 @@
+"""
+Test basic std::vector<bool> functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestBoolVector(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 4'])
+ self.expect("expr (bool)a.front()", substrs=['(bool) $1 = false'])
+ self.expect("expr (bool)a[1]", substrs=['(bool) $2 = true'])
+ self.expect("expr (bool)a.back()", substrs=['(bool) $3 = true'])
+
+ self.expect("expr (bool)(*a.begin())", substrs=['(bool) $4 = false'])
+ self.expect("expr (bool)(*a.rbegin())", substrs=['(bool) $5 = true'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/main.cpp
new file mode 100644
index 00000000000..9554401cf50
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/main.cpp
@@ -0,0 +1,6 @@
+#include <vector>
+
+int main(int argc, char **argv) {
+ std::vector<bool> a = {0, 1, 0, 1};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py
new file mode 100644
index 00000000000..c89265f2cd3
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py
@@ -0,0 +1,47 @@
+"""
+Test basic std::vector functionality but with a declaration from
+the debug info (the Foo struct) as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestDbgInfoContentVector(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
+ self.expect("expr (int)a.front().a", substrs=['(int) $1 = 3'])
+ self.expect("expr (int)a[1].a", substrs=['(int) $2 = 1'])
+ self.expect("expr (int)a.back().a", substrs=['(int) $3 = 2'])
+
+ self.expect("expr std::reverse(a.begin(), a.end())")
+ self.expect("expr (int)a.front().a", substrs=['(int) $4 = 2'])
+
+ self.expect("expr (int)(a.begin()->a)", substrs=['(int) $5 = 2'])
+ self.expect("expr (int)(a.rbegin()->a)", substrs=['(int) $6 = 3'])
+
+ self.expect("expr a.pop_back()")
+ self.expect("expr (int)a.back().a", substrs=['(int) $7 = 1'])
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $8 = 2'])
+
+ self.expect("expr (int)a.at(0).a", substrs=['(int) $9 = 2'])
+
+ self.expect("expr a.push_back({4})")
+ self.expect("expr (int)a.back().a", substrs=['(int) $10 = 4'])
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $11 = 3'])
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..24c3fec75d2
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/main.cpp
@@ -0,0 +1,10 @@
+#include <vector>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::vector<Foo> a = {{3}, {1}, {2}};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/TestVectorOfVectors.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/TestVectorOfVectors.py
new file mode 100644
index 00000000000..2b82e1a039a
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/TestVectorOfVectors.py
@@ -0,0 +1,30 @@
+"""
+Test std::vector functionality when it's contents are vectors.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestVectorOfVectors(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 2'])
+ self.expect("expr (int)a.front().front()", substrs=['(int) $1 = 1'])
+ self.expect("expr (int)a[1][1]", substrs=['(int) $2 = 2'])
+ self.expect("expr (int)a.back().at(0)", substrs=['(int) $3 = 3'])
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/main.cpp
new file mode 100644
index 00000000000..b5ada909e43
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/main.cpp
@@ -0,0 +1,6 @@
+#include <vector>
+
+int main(int argc, char **argv) {
+ std::vector<std::vector<int> > a = {{1, 2, 3}, {3, 2, 1}};
+ return 0; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py
new file mode 100644
index 00000000000..0acd54e803c
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py
@@ -0,0 +1,33 @@
+"""
+Test std::weak_ptr functionality with a decl from debug info as content.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestDbgInfoContentWeakPtr(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (int)w.lock()->a", substrs=['(int) $0 = 3'])
+ self.expect("expr (int)(w.lock()->a = 5)", substrs=['(int) $1 = 5'])
+ self.expect("expr (int)w.lock()->a", substrs=['(int) $2 = 5'])
+ self.expect("expr w.use_count()", substrs=['(long) $3 = 1'])
+ self.expect("expr w.reset()")
+ self.expect("expr w.use_count()", substrs=['(long) $4 = 0'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/main.cpp
new file mode 100644
index 00000000000..d2c5a6258a5
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/main.cpp
@@ -0,0 +1,12 @@
+#include <memory>
+
+struct Foo {
+ int a;
+};
+
+int main(int argc, char **argv) {
+ std::shared_ptr<Foo> s(new Foo);
+ s->a = 3;
+ std::weak_ptr<Foo> w = s;
+ return s->a; // Set break point at this line.
+}
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile
new file mode 100644
index 00000000000..01718d86aa7
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+USE_LIBCPP := 1
+CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS)
+CXX_SOURCES := main.cpp
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/TestWeakPtr.py b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/TestWeakPtr.py
new file mode 100644
index 00000000000..6b8b9ceb7aa
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/TestWeakPtr.py
@@ -0,0 +1,33 @@
+"""
+Test basic std::weak_ptr functionality.
+"""
+
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestSharedPtr(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ # FIXME: This should work on more setups, so remove these
+ # skipIf's in the future.
+ @add_test_categories(["libc++"])
+ @skipIf(compiler=no_match("clang"))
+ @skipIf(oslist=no_match(["linux"]))
+ @skipIf(debug_info=no_match(["dwarf"]))
+ def test(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ self.runCmd("settings set target.import-std-module true")
+
+ self.expect("expr (int)*w.lock()", substrs=['(int) $0 = 3'])
+ self.expect("expr (int)(*w.lock() = 5)", substrs=['(int) $1 = 5'])
+ self.expect("expr (int)*w.lock()", substrs=['(int) $2 = 5'])
+ self.expect("expr w.use_count()", substrs=['(long) $3 = 1'])
+ self.expect("expr w.reset()")
+ self.expect("expr w.use_count()", substrs=['(long) $4 = 0'])
+
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/main.cpp
new file mode 100644
index 00000000000..13479eb9496
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/main.cpp
@@ -0,0 +1,8 @@
+#include <memory>
+
+int main(int argc, char **argv) {
+ std::shared_ptr<int> s(new int);
+ *s = 3;
+ std::weak_ptr<int> w = s;
+ return *s; // Set break point at this line.
+}
OpenPOWER on IntegriCloud