diff options
author | Walfred Tedeschi <walfred.tedeschi@intel.com> | 2013-11-20 13:03:07 +0100 |
---|---|---|
committer | Walfred Tedeschi <walfred.tedeschi@intel.com> | 2013-11-20 14:42:53 +0100 |
commit | 09748966c1b65c953971f8e56d7f6113cfbfda95 (patch) | |
tree | ad7a47294036ddd19b1af0b42d6e83bfcc272d79 | |
parent | a196ebeb91d1149b1615faaeafc31d72a28ba98e (diff) | |
download | binutils-09748966c1b65c953971f8e56d7f6113cfbfda95.zip binutils-09748966c1b65c953971f8e56d7f6113cfbfda95.tar.gz binutils-09748966c1b65c953971f8e56d7f6113cfbfda95.tar.bz2 |
Add pretty-printer for MPX bnd registers.
Boundary length is simpler implemented by means of a pretty
printer. This simplifies users life when examining a bound register.
Changelog:
2013-11-20 Walfred Tedeschi <walfred.tedeschi@intel.com>
* python/lib/gdb/command/bound_register.py: New file.
* gdb/data-directory/Makefile.in: copy bond_register.py to the right path to
be initialized at gdb startup.
testsuite/
* gdb.python/py-pp-maint.exp: Consider new pretty-print added for registers.
Change-Id: Id4f39845e5ece56c370a1fd4343648909f08b731
Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>
Conflicts:
gdb/ChangeLog
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/data-directory/Makefile.in | 1 | ||||
-rw-r--r-- | gdb/python/lib/gdb/command/bound_registers.py | 45 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-pp-maint.exp | 8 |
5 files changed, 61 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f8c6fbd..ff812f4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2013-11-20 Walfred Tedeschi <walfred.tedeschi@intel.com> + * python/lib/gdb/command/bound_register.py: New file. + * gdb/data-directory/Makefile.in: copy bond_register.py to the right path to + be initialized at gdb startup. + +2013-11-20 Walfred Tedeschi <walfred.tedeschi@intel.com> + * amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add MPX registers. (amd64_linux_read_description): Add initialization for MPX and diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in index 3d05213..1e00c58 100644 --- a/gdb/data-directory/Makefile.in +++ b/gdb/data-directory/Makefile.in @@ -61,6 +61,7 @@ PYTHON_FILES = \ gdb/types.py \ gdb/printing.py \ gdb/prompt.py \ + gdb/command/bound_registers.py \ gdb/command/__init__.py \ gdb/command/frame_filters.py \ gdb/command/type_printers.py \ diff --git a/gdb/python/lib/gdb/command/bound_registers.py b/gdb/python/lib/gdb/command/bound_registers.py new file mode 100644 index 0000000..0b1baf6 --- /dev/null +++ b/gdb/python/lib/gdb/command/bound_registers.py @@ -0,0 +1,45 @@ +# Pretty-printer utilities. +# Copyright (C) 2013 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/>. + +import gdb.printing + +class BoundPrinter: + """Adds size field to a _rawbound128 type.""" + + def __init__ (self, val): + self.val = val + + def to_string (self): + upper = self.val["ubound"] + lower = self.val["lbound"] + size = (long) ((upper) - (lower)) + if size > -1: + size = size + 1 + result = '{lbound = %s, ubound = %s} : size %s' % (lower, upper, size) + return result + +# There are two pattern matching used: first one is related to a library +# second is related to the type. Since we are displaying a register all +# libraries are accepted. Type to be processed is the same present +# in the xml file. + +def build_pretty_printer (): + pp = gdb.printing.RegexpCollectionPrettyPrinter (".*") + pp.add_printer ('bound', '^__gdb_builtin_type_bound128', BoundPrinter) + return pp + +gdb.printing.register_pretty_printer (gdb.current_objfile (), + build_pretty_printer ()) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 68be4b3..871c2c8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2013-11-20 Walfred Tedeschi <walfred.tedeschi@intel.com> +2013-11-20 Walfred Tedeschi <walfred.tedeschi@intel.com> + + * gdb.python/py-pp-maint.exp: Consider new pretty-print added + for bnd registers. + * gdb.xml/maint_print_struct.xml (bitfield): Added bitfield having start and end equal 0. diff --git a/gdb/testsuite/gdb.python/py-pp-maint.exp b/gdb/testsuite/gdb.python/py-pp-maint.exp index 4b5ef5a..023d55f 100644 --- a/gdb/testsuite/gdb.python/py-pp-maint.exp +++ b/gdb/testsuite/gdb.python/py-pp-maint.exp @@ -60,7 +60,7 @@ gdb_test "print flt" " = x=<42> y=<43>" \ gdb_test "print ss" " = a=<a=<1> b=<$hex>> b=<a=<2> b=<$hex>>" \ "print ss enabled #1" -set num_pp 6 +set num_pp 7 gdb_test "disable pretty-printer" \ "$num_pp printers disabled.*0 of $num_pp printers enabled" @@ -78,7 +78,7 @@ gdb_test "disable pretty-printer global lookup_function_lookup_test" \ "1 printer disabled.*[expr $num_pp - 1] of $num_pp printers enabled" gdb_test "disable pretty-printer global pp-test;.*" \ - "[expr $num_pp - 1] printers disabled.*0 of $num_pp printers enabled" + "[expr $num_pp - 2] printers disabled.*1 of $num_pp printers enabled" gdb_test "info pretty-printer global .*function" \ {.*function_lookup_test \[disabled\].*} @@ -93,13 +93,13 @@ gdb_test "print ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ "print ss disabled" gdb_test "enable pretty-printer global lookup_function_lookup_test" \ - "1 printer enabled.*1 of $num_pp printers enabled" + "1 printer enabled.*2 of $num_pp printers enabled" # This doesn't enable any printers because each subprinter in the collection # is still individually disabled. But this is still needed, to enable the # collection itself. gdb_test "enable pretty-printer global pp-test" \ - "0 printers enabled.*1 of $num_pp printers enabled" + "0 printers enabled.*2 of $num_pp printers enabled" gdb_test "enable pretty-printer global pp-test;.*ss.*" \ "2 printers enabled.*[expr $num_pp - 3] of $num_pp printers enabled" |