teak-llvm/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py
Pavel Labath 13e37d4d0a Move StopInfoOverride callback to the new architecture plugin
This creates a new Architecture plugin and moves the stop info override
callback to this place. The motivation for this is to remove complex
dependencies from the ArchSpec class because it is used in a lot of
places that (should) know nothing about Process instances and StopInfo
objects.

I also add a test for the functionality covered by the override
callback.

Differential Revision: https://reviews.llvm.org/D31172

llvm-svn: 316609
2017-10-25 21:05:31 +00:00

46 lines
1.2 KiB
Python

"""
Test that breakpoints in an IT instruction don't fire if their condition is
false.
"""
from __future__ import print_function
import lldb
import os
import time
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestBreakpointIt(TestBase):
mydir = TestBase.compute_mydir(__file__)
NO_DEBUG_INFO_TESTCASE = True
@skipIf(archs=no_match(["arm"]))
def test_false(self):
self.build()
exe = os.path.join(os.getcwd(), "a.out")
self.runCmd("target create %s" % exe)
lldbutil.run_break_set_by_symbol(self, "bkpt_false",
extra_options="--skip-prologue 0")
self.runCmd("run")
self.assertEqual(self.process().GetState(), lldb.eStateExited,
"Breakpoint does not get hit")
@skipIf(archs=no_match(["arm"]))
def test_true(self):
self.build()
exe = os.path.join(os.getcwd(), "a.out")
self.runCmd("target create %s" % exe)
bpid = lldbutil.run_break_set_by_symbol(self, "bkpt_true",
extra_options="--skip-prologue 0")
self.runCmd("run")
self.assertIsNotNone(lldbutil.get_one_thread_stopped_at_breakpoint_id(
self.process(), bpid))