diff options
author | Adrian McCarthy <amccarth@google.com> | 2015-11-20 18:15:14 +0000 |
---|---|---|
committer | Adrian McCarthy <amccarth@google.com> | 2015-11-20 18:15:14 +0000 |
commit | af75dab3834f4afdc168df45b8bc93b44219c4ef (patch) | |
tree | 343559d9b73e59b76ba96086597a40046c338560 /lldb/packages/Python/lldbsuite | |
parent | 4d5d1dd6d56b0fec5dee0270d4ee83bfae56d284 (diff) | |
download | bcm5719-llvm-af75dab3834f4afdc168df45b8bc93b44219c4ef.tar.gz bcm5719-llvm-af75dab3834f4afdc168df45b8bc93b44219c4ef.zip |
FOO
llvm-svn: 253684
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
3 files changed, 85 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile new file mode 100644 index 00000000000..b76d2cdb93f --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile @@ -0,0 +1,6 @@ +LEVEL = ../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules + diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py new file mode 100644 index 00000000000..d66baca8d0a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py @@ -0,0 +1,58 @@ +""" +Test saving a core file (or mini dump). +""" + +from __future__ import print_function + +import os, time +import lldb +from lldbsuite.test.lldbtest import * + +class ProcessSaveCoreTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @not_remote_testsuite_ready + @skipIf(oslist=not_in(['windows'])) + def test_cannot_save_core_unless_process_stopped(self): + """Test that SaveCore fails if the process isn't stopped.""" + self.build() + exe = os.path.join(os.getcwd(), "a.out") + core = os.path.join(os.getcwd(), "core.dmp") + target = self.dbg.CreateTarget(exe) + process = target.LaunchSimple(None, None, self.get_process_working_directory()) + self.assertNotEqual(process.GetState(), lldb.eStateStopped) + error = process.SaveCore(core) + self.assertTrue(error.Fail()) + + @not_remote_testsuite_ready + @skipIf(oslist=not_in(['windows'])) + def test_save_windows_mini_dump(self): + """Test that we can save a Windows mini dump.""" + self.build() + exe = os.path.join(os.getcwd(), "a.out") + core = os.path.join(os.getcwd(), "core.dmp") + try: + target = self.dbg.CreateTarget(exe) + breakpoint = target.BreakpointCreateByName("bar") + process = target.LaunchSimple(None, None, self.get_process_working_directory()) + self.assertEqual(process.GetState(), lldb.eStateStopped) + self.assertTrue(process.SaveCore(core)) + self.assertTrue(os.path.isfile(core)) + self.assertTrue(process.Kill().Success()) + + # To verify, we'll launch with the mini dump, and ensure that we see + # the executable in the module list. + target = self.dbg.CreateTarget(None) + process = target.LoadCore(core) + files = [target.GetModuleAtIndex(i).GetFileSpec() for i in range(0, target.GetNumModules())] + paths = [os.path.join(f.GetDirectory(), f.GetFilename()) for f in files] + self.assertTrue(exe in paths) + + finally: + # Clean up the mini dump file. + self.assertTrue(self.dbg.DeleteTarget(target)) + if (os.path.isfile(core)): + os.unlink(core) + + diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/main.cpp new file mode 100644 index 00000000000..4037ea522ca --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/main.cpp @@ -0,0 +1,21 @@ +int global = 42; + +int +bar(int x) +{ + int y = 4*x + global; + return y; +} + +int +foo(int x) +{ + int y = 2*bar(3*x); + return y; +} + +int +main() +{ + return 0 * foo(1); +} |