From 10fb67728593478671d75403c6bf8683db60c9d3 Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Wed, 12 Sep 2018 10:04:25 +0000 Subject: Add a basic test for 'memory region' Summary: The 'memory region' command is at the moment not tested at all by our test suite. This patch just adds a basic test that at least provides some basic testing. Reviewers: #lldb, davide Reviewed By: #lldb, davide Subscribers: vsk, davide, lldb-commits Differential Revision: https://reviews.llvm.org/D51930 llvm-svn: 342042 --- .../test/functionalities/memory-region/Makefile | 8 +++ .../memory-region/TestMemoryRegion.py | 59 ++++++++++++++++++++++ .../test/functionalities/memory-region/main.cpp | 6 +++ 3 files changed, 73 insertions(+) create mode 100644 lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile create mode 100644 lldb/packages/Python/lldbsuite/test/functionalities/memory-region/TestMemoryRegion.py create mode 100644 lldb/packages/Python/lldbsuite/test/functionalities/memory-region/main.cpp (limited to 'lldb/packages/Python') diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile new file mode 100644 index 00000000000..9d4f3b7f141 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile @@ -0,0 +1,8 @@ +LEVEL = ../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules + +clean:: + rm -rf $(wildcard *.o *.d *.dSYM) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/TestMemoryRegion.py b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/TestMemoryRegion.py new file mode 100644 index 00000000000..4d10e68672e --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/TestMemoryRegion.py @@ -0,0 +1,59 @@ +""" +Test the 'memory region' command. +""" + +from __future__ import print_function + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class MemoryCommandRegion(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + NO_DEBUG_INFO_TESTCASE = True + + def setUp(self): + TestBase.setUp(self) + # Find the line number to break for main.c. + self.line = line_number( + 'main.cpp', + '// Run here before printing memory regions') + + def test(self): + self.build() + + # Set breakpoint in main and run + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + lldbutil.run_break_set_by_file_and_line( + self, "main.cpp", self.line, num_expected_locations=-1, loc_exact=True) + + self.runCmd("run", RUN_SUCCEEDED) + + interp = self.dbg.GetCommandInterpreter() + result = lldb.SBCommandReturnObject() + + # Test that the first 'memory region' command prints the usage. + interp.HandleCommand("memory region", result) + self.assertFalse(result.Succeeded()) + self.assertRegexpMatches(result.GetError(), "Usage: memory region ADDR") + + # Now let's print the memory region starting at 0 which should always work. + interp.HandleCommand("memory region 0x0", result) + self.assertTrue(result.Succeeded()) + self.assertRegexpMatches(result.GetOutput(), "\\[0x0+-") + + # Keep printing memory regions until we printed all of them. + while True: + interp.HandleCommand("memory region", result) + if not result.Succeeded(): + break + + # Now that we reached the end, 'memory region' should again print the usage. + interp.HandleCommand("memory region", result) + self.assertFalse(result.Succeeded()) + self.assertRegexpMatches(result.GetError(), "Usage: memory region ADDR") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/main.cpp new file mode 100644 index 00000000000..116c10a6c3e --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/main.cpp @@ -0,0 +1,6 @@ +#include + +int main (int argc, char const **argv) { + std::cout << "Program with sections" << std::endl; + return 0; // Run here before printing memory regions +} -- cgit v1.2.3