summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2017-10-25 21:05:31 +0000
committerPavel Labath <labath@google.com>2017-10-25 21:05:31 +0000
commit13e37d4d0a3fd5cb34b7adee3ba123127b15f9c4 (patch)
tree05eab3bed283532a772c0d7d0fa34bb09a04b59e /lldb/packages/Python/lldbsuite/test
parentc2400fc0d53f891adf745d2cb8cb4825796db344 (diff)
downloadbcm5719-llvm-13e37d4d0a3fd5cb34b7adee3ba123127b15f9c4.tar.gz
bcm5719-llvm-13e37d4d0a3fd5cb34b7adee3ba123127b15f9c4.zip
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
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile6
-rw-r--r--lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py45
-rw-r--r--lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/main.c14
3 files changed, 65 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile
new file mode 100644
index 00000000000..5d2224cb656
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile
@@ -0,0 +1,6 @@
+LEVEL = ../../make
+
+C_SOURCES := main.c
+CFLAGS_EXTRAS = -mthumb
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py
new file mode 100644
index 00000000000..1abab39b1da
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py
@@ -0,0 +1,45 @@
+"""
+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))
diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/main.c b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/main.c
new file mode 100644
index 00000000000..35d57bb1b84
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/main.c
@@ -0,0 +1,14 @@
+int main() {
+ int value;
+ asm (
+ "cmp %1, %2\n\t"
+ "ite ne\n\t"
+ ".thumb_func\n\t"
+ "bkpt_true:\n\t"
+ "movne %0, %1\n\t"
+ ".thumb_func\n\t"
+ "bkpt_false:\n\t"
+ "moveq %0, %2\n\t"
+ : "=r" (value) : "r"(42), "r"(47));
+ return value;
+}
OpenPOWER on IntegriCloud