diff options
Diffstat (limited to 'gdb/testsuite/gdb.python/py-unwind-maint.py')
-rw-r--r-- | gdb/testsuite/gdb.python/py-unwind-maint.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-unwind-maint.py b/gdb/testsuite/gdb.python/py-unwind-maint.py new file mode 100644 index 0000000..f8c6277 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-unwind-maint.py @@ -0,0 +1,59 @@ +# Copyright (C) 2015 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# This file is part of the GDB testsuite. It tests python unwinders. + +import re +import gdb.types +from gdb.unwinder import Unwinder, register_unwinder + +class TestGlobalUnwinder(Unwinder): + def __init__(self): + super(TestGlobalUnwinder, self).__init__("global_unwinder") + + def __call__(self, unwinder_info): + print "%s called" % self.name + return None + +class TestProgspaceUnwinder(Unwinder): + def __init__(self, name): + super(TestProgspaceUnwinder, self).__init__("%s_ps_unwinder" % name) + + def __call__(self, unwinder_info): + print "%s called" % self.name + return None + +class TestObjfileUnwinder(Unwinder): + def __init__(self, name): + super(TestObjfileUnwinder, self).__init__("%s_obj_unwinder" % name) + + def __call__(self, unwinder_info): + print "%s called" % self.name + return None + + + +gdb.unwinder.register_unwinder(None, TestGlobalUnwinder()) +saw_runtime_error = False +try: + gdb.unwinder.register_unwinder(None, TestGlobalUnwinder(), replace=False) +except RuntimeError: + saw_runtime_error = True +if not saw_runtime_error: + raise RuntimeError("Missing runtime error from register_unwinder.") +gdb.unwinder.register_unwinder(None, TestGlobalUnwinder(), replace=True) +gdb.unwinder.register_unwinder(gdb.current_progspace(), + TestProgspaceUnwinder("py_unwind_maint")) +print "Python script imported" |