]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.python/py-finish-breakpoint.py
Update copyright year range in all GDB files
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.python / py-finish-breakpoint.py
CommitLineData
3666a048 1# Copyright (C) 2011-2021 Free Software Foundation, Inc.
cc72b2a2
KP
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16# This file is part of the GDB testsuite. It tests python Finish
17# Breakpoints.
9325cb04 18
cc72b2a2 19class MyFinishBreakpoint (gdb.FinishBreakpoint):
9325cb04
PK
20 def __init__(self, val, frame):
21 gdb.FinishBreakpoint.__init__ (self, frame)
22 print ("MyFinishBreakpoint init")
23 self.val = val
24
25 def stop(self):
26 print ("MyFinishBreakpoint stop with %d" % int (self.val.dereference ()))
27 print ("return_value is: %d" % int (self.return_value))
28 gdb.execute ("where 1")
29 return True
30
31 def out_of_scope(self):
32 print ("MyFinishBreakpoint out of scope")
cc72b2a2
KP
33
34class TestBreakpoint(gdb.Breakpoint):
35 def __init__(self):
36 gdb.Breakpoint.__init__ (self, spec="test_1", internal=1)
37 self.silent = True
38 self.count = 0
9325cb04 39 print ("TestBreakpoint init")
cc72b2a2
KP
40
41 def stop(self):
9325cb04
PK
42 self.count += 1
43 try:
44 TestFinishBreakpoint (gdb.newest_frame (), self.count)
cc72b2a2 45 except ValueError as e:
9325cb04 46 print (e)
cc72b2a2
KP
47 return False
48
49class TestFinishBreakpoint (gdb.FinishBreakpoint):
50 def __init__ (self, frame, count):
9325cb04 51 self.count = count
cc72b2a2
KP
52 gdb.FinishBreakpoint.__init__ (self, frame, internal=1)
53
54
55 def stop(self):
9325cb04 56 print ("-->", self.number)
cc72b2a2 57 if (self.count == 3):
9325cb04 58 print ("test stop: %d" % self.count)
cc72b2a2
KP
59 return True
60 else:
9325cb04 61 print ("test don't stop: %d" % self.count)
cc72b2a2
KP
62 return False
63
64
65 def out_of_scope(self):
9325cb04 66 print ("test didn't finish: %d" % self.count)
cc72b2a2
KP
67
68class TestExplicitBreakpoint(gdb.Breakpoint):
9325cb04
PK
69 def stop(self):
70 try:
71 SimpleFinishBreakpoint (gdb.newest_frame ())
72 except ValueError as e:
73 print (e)
74 return False
cc72b2a2
KP
75
76class SimpleFinishBreakpoint(gdb.FinishBreakpoint):
9325cb04
PK
77 def __init__(self, frame):
78 gdb.FinishBreakpoint.__init__ (self, frame)
79
80 print ("SimpleFinishBreakpoint init")
81
82 def stop(self):
83 print ("SimpleFinishBreakpoint stop" )
84 return True
85
86 def out_of_scope(self):
87 print ("SimpleFinishBreakpoint out of scope")
cc72b2a2 88
9325cb04 89print ("Python script imported")