1 # Copyright (C) 2023-2024 Free Software Foundation, Inc. 2 # This program is free software; you can redistribute it and/or modify 3 # it under the terms of the GNU General Public License as published by 4 # the Free Software Foundation; either version 3 of the License, or 5 # (at your option) any later version. 6 # 7 # This program is distributed in the hope that it will be useful, 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 # GNU General Public License for more details. 11 # 12 # You should have received a copy of the GNU General Public License 13 # along with this program. If not, see <http://www.gnu.org/licenses/>. 14 15 import gdb 16 import gdb.printing 17 18 19 class TestPrinter: 20 def __init__(self, val): 21 self.val = val 22 23 def to_string(self): 24 return "map" 25 26 def children(self): 27 yield "1", "flicker" 28 29 30 def str_lookup_function(val): 31 lookup_tag = val.type.tag 32 if lookup_tag == "test": 33 return TestPrinter(val) 34 if val.type.code == gdb.TYPE_CODE_PTR and val.type.target().tag == "test": 35 return TestPrinter(val.dereference()) 36 37 38 gdb.printing.register_pretty_printer(None, str_lookup_function) 39