Update years in copyright notice for the GDB files.
[external/binutils.git] / gdb / testsuite / gdb.python / py-finish-breakpoint.py
1 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
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.
18                 
19 class MyFinishBreakpoint (gdb.FinishBreakpoint):
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")
33
34 class 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
39         print ("TestBreakpoint init")
40         
41     def stop(self):
42         self.count += 1
43         try:
44                 TestFinishBreakpoint (gdb.newest_frame (), self.count)
45         except ValueError as e:
46                 print (e)
47         return False
48
49 class TestFinishBreakpoint (gdb.FinishBreakpoint):
50     def __init__ (self, frame, count):
51         self.count = count
52         gdb.FinishBreakpoint.__init__ (self, frame, internal=1)
53         
54         
55     def stop(self):
56         print ("-->", self.number)
57         if (self.count == 3):
58             print ("test stop: %d" % self.count)
59             return True
60         else:
61             print ("test don't stop: %d" % self.count)
62             return False 
63         
64     
65     def out_of_scope(self):
66         print ("test didn't finish: %d" % self.count)
67
68 class TestExplicitBreakpoint(gdb.Breakpoint):
69         def stop(self):
70                 try:
71                         SimpleFinishBreakpoint (gdb.newest_frame ())
72                 except ValueError as e:
73                         print (e)
74                 return False
75
76 class SimpleFinishBreakpoint(gdb.FinishBreakpoint):
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")
88
89 print ("Python script imported")