]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py
Vendor import of lldb trunk r290819:
[FreeBSD/FreeBSD.git] / packages / Python / lldbsuite / test / tools / lldb-server / inferior-crash / TestGdbRemoteSegFault.py
1 from __future__ import print_function
2
3
4 import gdbremote_testcase
5 import signal
6 from lldbsuite.test.decorators import *
7 from lldbsuite.test.lldbtest import *
8 from lldbsuite.test import lldbutil
9
10
11 class TestGdbRemoteSegFault(gdbremote_testcase.GdbRemoteTestCaseBase):
12     mydir = TestBase.compute_mydir(__file__)
13
14     GDB_REMOTE_STOP_CODE_BAD_ACCESS = 0x91
15
16     def inferior_seg_fault_received(self, expected_signo):
17         procs = self.prep_debug_monitor_and_inferior(
18             inferior_args=["segfault"])
19         self.assertIsNotNone(procs)
20
21         self.test_sequence.add_log_lines(["read packet: $vCont;c#a8",
22                                           {"direction": "send",
23                                            "regex": r"^\$T([0-9a-fA-F]{2}).*#[0-9a-fA-F]{2}$",
24                                            "capture": {1: "hex_exit_code"}},
25                                           ],
26                                          True)
27
28         context = self.expect_gdbremote_sequence()
29         self.assertIsNotNone(context)
30
31         hex_exit_code = context.get("hex_exit_code")
32         self.assertIsNotNone(hex_exit_code)
33         self.assertEqual(int(hex_exit_code, 16), expected_signo)
34
35     @debugserver_test
36     def test_inferior_seg_fault_received_debugserver(self):
37         self.init_debugserver_test()
38         self.build()
39         self.inferior_seg_fault_received(self.GDB_REMOTE_STOP_CODE_BAD_ACCESS)
40
41     @llgs_test
42     def test_inferior_seg_fault_received_llgs(self):
43         self.init_llgs_test()
44         self.build()
45         self.inferior_seg_fault_received(lldbutil.get_signal_number('SIGSEGV'))