aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.python/py-objfile-script-gdb.py
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2011-05-13 22:11:47 +0000
committerDoug Evans <dje@google.com>2011-05-13 22:11:47 +0000
commitdbaefcf75732d6b779c408d71b79173176140296 (patch)
tree7a94d0b8b8eb9ac97db7ccd4607cf1c52b393623 /gdb/testsuite/gdb.python/py-objfile-script-gdb.py
parentcc63ef9bbdfa5186ffe3b0e2cfbfaee2cc94bc1a (diff)
downloadbinutils-dbaefcf75732d6b779c408d71b79173176140296.zip
binutils-dbaefcf75732d6b779c408d71b79173176140296.tar.gz
binutils-dbaefcf75732d6b779c408d71b79173176140296.tar.bz2
* NEWS: Mention "info auto-load-scripts".
* python/py-auto-load.c (struct auto_load_pspace_info): New member script_not_found_warning_printed. (init_loaded_scripts_info): Renamed from create_loaded_scripts_hash, all callers updated. Initialize script_not_found_warning_printed. (get_auto_load_pspace_data_for_loading): New function. (maybe_add_script): New function. (source_section_scripts): Simplify. Only print one warning regardless of the number of auto-load scripts not found. (clear_section_scripts): Clear script_not_found_warning_printed. (auto_load_objfile_script): Record script in hash table. (count_matching_scripts): New function. (maybe_print_script): Renamed from maybe_print_section_script, all callers updated. Rewrite to use ui_out_*. (info_auto_load_scripts): Renamed from maintenance_print_section_scripts, all callers updated. (gdbpy_initialize_auto_load): "maintenance print section-scripts" renamed as "info auto-load-scripts". doc/ * gdb.texinfo (Auto-loading): Document "info auto-load-scripts". testsuite/ * gdb.python/py-objfile-script.exp: New file. * gdb.python/py-objfile-script.c: New file. * gdb.python/py-objfile-script-gdb.py: New file. * testsuite/gdb.python/py-section-script.exp: Test "info auto-load-scripts".
Diffstat (limited to 'gdb/testsuite/gdb.python/py-objfile-script-gdb.py')
-rw-r--r--gdb/testsuite/gdb.python/py-objfile-script-gdb.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-objfile-script-gdb.py b/gdb/testsuite/gdb.python/py-objfile-script-gdb.py
new file mode 100644
index 0000000..c54e9ec
--- /dev/null
+++ b/gdb/testsuite/gdb.python/py-objfile-script-gdb.py
@@ -0,0 +1,63 @@
+# Copyright (C) 2011 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.
+
+import re
+
+class pp_ss:
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return "a=<" + str(self.val["a"]) + "> b=<" + str(self.val["b"]) + ">"
+
+def lookup_function (val):
+ "Look-up and return a pretty-printer that can print val."
+
+ # Get the type.
+ type = val.type
+
+ # If it points to a reference, get the reference.
+ if type.code == gdb.TYPE_CODE_REF:
+ type = type.target ()
+
+ # Get the unqualified type, stripped of typedefs.
+ type = type.unqualified ().strip_typedefs ()
+
+ # Get the type name.
+ typename = type.tag
+
+ if typename == None:
+ return None
+
+ # Iterate over local dictionary of types to determine
+ # if a printer is registered for that type. Return an
+ # instantiation of the printer if found.
+ for function in pretty_printers_dict:
+ if function.match (typename):
+ return pretty_printers_dict[function] (val)
+
+ # Cannot find a pretty printer. Return None.
+
+ return None
+
+def register_pretty_printers ():
+ pretty_printers_dict[re.compile ('^ss$')] = pp_ss
+
+pretty_printers_dict = {}
+
+register_pretty_printers ()
+gdb.current_progspace().pretty_printers.append (lookup_function)