diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
| commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
| tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py | |
| parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py')
| -rw-r--r-- | packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py | 94 | 
1 files changed, 59 insertions, 35 deletions
| diff --git a/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py b/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py index f8b884003ad2..e717e2ecdd90 100644 --- a/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py +++ b/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py @@ -3,13 +3,14 @@  from __future__ import print_function - -import os, time +import os +import time  import lldb  from lldbsuite.test.decorators import *  from lldbsuite.test.lldbtest import *  from lldbsuite.test import lldbutil +  class TestIndirectFunctions(TestBase):      mydir = TestBase.compute_mydir(__file__) @@ -30,60 +31,83 @@ class TestIndirectFunctions(TestBase):          target = self.dbg.CreateTarget(exe)          self.assertTrue(target, VALID_TARGET) -        self.main_source_spec = lldb.SBFileSpec (self.main_source) +        self.main_source_spec = lldb.SBFileSpec(self.main_source) -        break1 = target.BreakpointCreateBySourceRegex ("Set breakpoint here to step in indirect.", self.main_source_spec) +        break1 = target.BreakpointCreateBySourceRegex( +            "Set breakpoint here to step in indirect.", self.main_source_spec)          self.assertTrue(break1, VALID_BREAKPOINT) -        break2 = target.BreakpointCreateBySourceRegex ("Set breakpoint here to step in reexported.", self.main_source_spec) +        break2 = target.BreakpointCreateBySourceRegex( +            "Set breakpoint here to step in reexported.", self.main_source_spec)          self.assertTrue(break2, VALID_BREAKPOINT)          # Now launch the process, and do not stop at entry point. -        process = target.LaunchSimple (None, None, self.get_process_working_directory()) +        process = target.LaunchSimple( +            None, None, self.get_process_working_directory())          self.assertTrue(process, PROCESS_IS_VALID)          # The stop reason of the thread should be breakpoint. -        threads = lldbutil.get_threads_stopped_at_breakpoint (process, break1) +        threads = lldbutil.get_threads_stopped_at_breakpoint(process, break1)          if len(threads) != 1: -            self.fail ("Failed to stop at breakpoint 1.") +            self.fail("Failed to stop at breakpoint 1.")          thread = threads[0] -        # Now do a step-into, and we should end up in the hidden target of this indirect function. +        # Now do a step-into, and we should end up in the hidden target of this +        # indirect function.          thread.StepInto()          curr_function = thread.GetFrameAtIndex(0).GetFunctionName() -        self.assertTrue (curr_function == "call_through_indirect_hidden", "Stepped into indirect symbols.") - -        # Now set a breakpoint using the indirect symbol name, and make sure we get to that: -        break_indirect = target.BreakpointCreateByName ("call_through_indirect"); -        self.assertTrue (break_indirect, VALID_BREAKPOINT) - -        # Now continue should take us to the second call through the indirect symbol: - -        threads = lldbutil.continue_to_breakpoint (process, break_indirect) -        self.assertTrue (len(threads) == 1, "Stopped at breakpoint in indirect function.") +        self.assertTrue( +            curr_function == "call_through_indirect_hidden", +            "Stepped into indirect symbols.") + +        # Now set a breakpoint using the indirect symbol name, and make sure we +        # get to that: +        break_indirect = target.BreakpointCreateByName("call_through_indirect") +        self.assertTrue(break_indirect, VALID_BREAKPOINT) + +        # Now continue should take us to the second call through the indirect +        # symbol: + +        threads = lldbutil.continue_to_breakpoint(process, break_indirect) +        self.assertTrue( +            len(threads) == 1, +            "Stopped at breakpoint in indirect function.")          curr_function = thread.GetFrameAtIndex(0).GetFunctionName() -        self.assertTrue (curr_function == "call_through_indirect_hidden", "Stepped into indirect symbols.") +        self.assertTrue( +            curr_function == "call_through_indirect_hidden", +            "Stepped into indirect symbols.")          # Delete this breakpoint so it won't get in the way: -        target.BreakpointDelete (break_indirect.GetID()) +        target.BreakpointDelete(break_indirect.GetID()) -        # Now continue to the site of the first re-exported function call in main: -        threads = lldbutil.continue_to_breakpoint (process, break2) +        # Now continue to the site of the first re-exported function call in +        # main: +        threads = lldbutil.continue_to_breakpoint(process, break2) -        # This is stepping Into through a re-exported symbol to an indirect symbol: +        # This is stepping Into through a re-exported symbol to an indirect +        # symbol:          thread.StepInto()          curr_function = thread.GetFrameAtIndex(0).GetFunctionName() -        self.assertTrue (curr_function == "call_through_indirect_hidden", "Stepped into indirect symbols.") - -        # And the last bit is to set a breakpoint on the re-exported symbol and make sure we are again in out target function. -        break_reexported = target.BreakpointCreateByName ("reexport_to_indirect"); -        self.assertTrue (break_reexported, VALID_BREAKPOINT) - -        # Now continue should take us to the second call through the indirect symbol: - -        threads = lldbutil.continue_to_breakpoint (process, break_reexported) -        self.assertTrue (len(threads) == 1, "Stopped at breakpoint in reexported function target.") +        self.assertTrue( +            curr_function == "call_through_indirect_hidden", +            "Stepped into indirect symbols.") + +        # And the last bit is to set a breakpoint on the re-exported symbol and +        # make sure we are again in out target function. +        break_reexported = target.BreakpointCreateByName( +            "reexport_to_indirect") +        self.assertTrue(break_reexported, VALID_BREAKPOINT) + +        # Now continue should take us to the second call through the indirect +        # symbol: + +        threads = lldbutil.continue_to_breakpoint(process, break_reexported) +        self.assertTrue( +            len(threads) == 1, +            "Stopped at breakpoint in reexported function target.")          curr_function = thread.GetFrameAtIndex(0).GetFunctionName() -        self.assertTrue (curr_function == "call_through_indirect_hidden", "Stepped into indirect symbols.") +        self.assertTrue( +            curr_function == "call_through_indirect_hidden", +            "Stepped into indirect symbols.") | 
