diff options
| author | Pavel Kosov <kpdev42@gmail.com> | 2023-01-25 10:48:04 +0300 |
|---|---|---|
| committer | Pavel Kosov <kpdev42@gmail.com> | 2023-01-25 10:48:04 +0300 |
| commit | 92f0e4ccafacb61f7de93e7ef5bd4beb02047086 (patch) | |
| tree | 3427157f92371f57215fc7e72faf9645a387bea5 /lldb/test/API/python_api/value | |
| parent | f3e2f26378400dbc785691ec38158ef4019208f8 (diff) | |
| download | llvm-92f0e4ccafacb61f7de93e7ef5bd4beb02047086.zip llvm-92f0e4ccafacb61f7de93e7ef5bd4beb02047086.tar.gz llvm-92f0e4ccafacb61f7de93e7ef5bd4beb02047086.tar.bz2 | |
[LLDB] Fixes summary formatter for libc++ map allowing modification of contained value
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D140624
Diffstat (limited to 'lldb/test/API/python_api/value')
3 files changed, 64 insertions, 0 deletions
diff --git a/lldb/test/API/python_api/value/change_values/libcxx/map/Makefile b/lldb/test/API/python_api/value/change_values/libcxx/map/Makefile new file mode 100644 index 0000000..564cbad --- /dev/null +++ b/lldb/test/API/python_api/value/change_values/libcxx/map/Makefile @@ -0,0 +1,6 @@ +CXX_SOURCES := main.cpp + +USE_LIBCPP := 1 + +CXXFLAGS_EXTRAS := -O0 +include Makefile.rules diff --git a/lldb/test/API/python_api/value/change_values/libcxx/map/TestChangeValue.py b/lldb/test/API/python_api/value/change_values/libcxx/map/TestChangeValue.py new file mode 100644 index 0000000..087e4c8 --- /dev/null +++ b/lldb/test/API/python_api/value/change_values/libcxx/map/TestChangeValue.py @@ -0,0 +1,51 @@ +""" +Test change libc++ map values. +""" + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class LibcxxChangeValueTestCase(TestBase): + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + + @add_test_categories(["libc++"]) + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24772") + def test(self): + """Test that we can change values of libc++ map.""" + self.build() + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + + bkpt = self.target().FindBreakpointByID( + lldbutil.run_break_set_by_source_regexp( + self, "Set break point at this line.")) + + self.runCmd("run", RUN_SUCCEEDED) + + # Get Frame #0. + target = self.dbg.GetSelectedTarget() + process = target.GetProcess() + self.assertState(process.GetState(), lldb.eStateStopped) + thread = lldbutil.get_stopped_thread( + process, lldb.eStopReasonBreakpoint) + self.assertTrue( + thread.IsValid(), + "There should be a thread stopped due to breakpoint condition") + frame0 = thread.GetFrameAtIndex(0) + self.assertTrue(frame0.IsValid(), "Got a valid frame.") + + val_value = frame0.FindVariable("M") + self.assertTrue(val_value.IsValid(), "Got the SBValue for val") + pair0 = val_value.GetChildMemberWithName("[0]") + self.assertTrue(pair0.IsValid(), "Got the SBValue for [0]") + self.assertTrue(pair0.GetNumChildren() == 2, "Got 2 children") + pair0_second = pair0.GetChildMemberWithName("second") + self.assertTrue(pair0_second.IsValid(), "Got the SBValue for [0].second") + result = pair0_second.SetValueFromCString("12345") + self.assertTrue(result, "Setting val returned True.") + result = pair0_second.GetValueAsUnsigned() + self.assertTrue(result == 12345, "Got correct value (12345)") diff --git a/lldb/test/API/python_api/value/change_values/libcxx/map/main.cpp b/lldb/test/API/python_api/value/change_values/libcxx/map/main.cpp new file mode 100644 index 0000000..4e1ee21 --- /dev/null +++ b/lldb/test/API/python_api/value/change_values/libcxx/map/main.cpp @@ -0,0 +1,7 @@ +#include <map> + +int main() +{ + std::map<int, int> M = {{1,1},{2,2}}; + return M[1]; // Set break point at this line. +} |
