diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 18:01:57 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 18:01:57 +0000 |
| commit | 88c643b6fec27eec436c8d138fee6346e92337d6 (patch) | |
| tree | 82cd13b2f3cde1c9e5f79689ba4e6ba67694843f /packages/Python/lldbsuite/test/lang/cpp/virtual | |
| parent | 94994d372d014ce4c8758b9605d63fae651bd8aa (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/lang/cpp/virtual')
3 files changed, 0 insertions, 224 deletions
diff --git a/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile b/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile deleted file mode 100644 index 314f1cb2f077..000000000000 --- a/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py b/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py deleted file mode 100644 index 365eb829ba64..000000000000 --- a/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py +++ /dev/null @@ -1,103 +0,0 @@ -""" -Test C++ virtual function and virtual inheritance. -""" - -from __future__ import print_function - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -def Msg(expr, val): - return "'expression %s' matches the output (from compiled code): %s" % ( - expr, val) - - -class CppVirtualMadness(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - # This is the pattern by design to match the "my_expr = 'value'" output from - # printf() stmts (see main.cpp). - pattern = re.compile("^([^=]*) = '([^=]*)'$") - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break for main.cpp. - self.source = 'main.cpp' - self.line = line_number(self.source, '// Set first breakpoint here.') - - @expectedFailureAll( - compiler="icc", - bugnumber="llvm.org/pr16808 lldb does not call the correct virtual function with icc.") - @skipIfWindows # This test will hang on windows llvm.org/pr21753 - def test_virtual_madness(self): - """Test that expression works correctly with virtual inheritance as well as virtual function.""" - self.build() - - # Bring the program to the point where we can issue a series of - # 'expression' command to compare against the golden output. - self.dbg.SetAsync(False) - - # Create a target by the debugger. - target = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) - self.assertTrue(target, VALID_TARGET) - - # Create the breakpoint inside function 'main'. - breakpoint = target.BreakpointCreateByLocation(self.source, self.line) - self.assertTrue(breakpoint, VALID_BREAKPOINT) - - # Now launch the process, and do not stop at entry point. - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - self.assertTrue(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") - - # First, capture the golden output from the program itself. - golden = thread.GetFrameAtIndex(0).FindVariable("golden") - self.assertTrue( - golden.IsValid(), - "Encountered an error reading the process's golden variable") - error = lldb.SBError() - golden_str = process.ReadCStringFromMemory( - golden.AddressOf().GetValueAsUnsigned(), 4096, error) - self.assertTrue(error.Success()) - self.assertTrue("c_as_C" in golden_str) - - # This golden list contains a list of "my_expr = 'value' pairs extracted - # from the golden output. - gl = [] - - # Scan the golden output line by line, looking for the pattern: - # - # my_expr = 'value' - # - for line in golden_str.split(os.linesep): - match = self.pattern.search(line) - if match: - my_expr, val = match.group(1), match.group(2) - gl.append((my_expr, val)) - #print("golden list:", gl) - - # Now iterate through the golden list, comparing against the output from - # 'expression var'. - for my_expr, val in gl: - - self.runCmd("expression %s" % my_expr) - output = self.res.GetOutput() - - # The expression output must match the oracle. - self.expect(output, Msg(my_expr, val), exe=False, - substrs=[val]) diff --git a/packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp b/packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp deleted file mode 100644 index 0adf41577314..000000000000 --- a/packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp +++ /dev/null @@ -1,116 +0,0 @@ -#include <stdio.h> -#include <stdint.h> - -class A -{ -public: - A () : m_pad ('c') {} - - virtual ~A () {} - - virtual const char * a() - { - return __PRETTY_FUNCTION__; - } - - virtual const char * b() - { - return __PRETTY_FUNCTION__; - } - - virtual const char * c() - { - return __PRETTY_FUNCTION__; - } -protected: - char m_pad; -}; - -class AA -{ -public: - AA () : m_pad('A') {} - virtual ~AA () {} - - virtual const char * aa() - { - return __PRETTY_FUNCTION__; - } - -protected: - char m_pad; -}; - -class B : virtual public A, public AA -{ -public: - B () : m_pad ('c') {} - - virtual ~B () {} - - virtual const char * a() - { - return __PRETTY_FUNCTION__; - } - - virtual const char * b() - { - return __PRETTY_FUNCTION__; - } -protected: - char m_pad; -}; - -class C : public B, virtual public A -{ -public: - C () : m_pad ('c') {} - - virtual ~C () {} - - virtual const char * a() - { - return __PRETTY_FUNCTION__; - } -protected: - char m_pad; -}; - -int main (int argc, char const *argv[], char const *envp[]) -{ - A *a_as_A = new A(); - B *b_as_B = new B(); - A *b_as_A = b_as_B; - C *c_as_C = new C(); - A *c_as_A = c_as_C; - - char golden[4096]; - char *p = golden; - char *end = p + sizeof golden; - p += snprintf(p, end-p, "a_as_A->a() = '%s'\n", a_as_A->a()); - p += snprintf(p, end-p, "a_as_A->b() = '%s'\n", a_as_A->b()); - p += snprintf(p, end-p, "a_as_A->c() = '%s'\n", a_as_A->c()); - p += snprintf(p, end-p, "b_as_A->a() = '%s'\n", b_as_A->a()); - p += snprintf(p, end-p, "b_as_A->b() = '%s'\n", b_as_A->b()); - p += snprintf(p, end-p, "b_as_A->c() = '%s'\n", b_as_A->c()); - p += snprintf(p, end-p, "b_as_B->aa() = '%s'\n", b_as_B->aa()); - p += snprintf(p, end-p, "c_as_A->a() = '%s'\n", c_as_A->a()); - p += snprintf(p, end-p, "c_as_A->b() = '%s'\n", c_as_A->b()); - p += snprintf(p, end-p, "c_as_A->c() = '%s'\n", c_as_A->c()); - p += snprintf(p, end-p, "c_as_C->aa() = '%s'\n", c_as_C->aa()); - puts("");// Set first breakpoint here. - // then evaluate: - // expression a_as_A->a() - // expression a_as_A->b() - // expression a_as_A->c() - // expression b_as_A->a() - // expression b_as_A->b() - // expression b_as_A->c() - // expression b_as_B->aa() - // expression c_as_A->a() - // expression c_as_A->b() - // expression c_as_A->c() - // expression c_as_C->aa() - - return 0; -} |
