aboutsummaryrefslogtreecommitdiff
path: root/sim/mips/mips3264r2.igen
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@adacore.com>2013-12-19 21:26:55 +0400
committerJoel Brobecker <brobecker@adacore.com>2014-01-07 08:17:40 +0400
commit8e355c5d24da7a92110851de95ead5ccfa089fe9 (patch)
tree67ab102d0d41cfafed90009ff1ffd9b5ed8be8ad /sim/mips/mips3264r2.igen
parent4fbf5aa5f4c44b9bb56faee74c91bbb69829264f (diff)
downloadgdb-8e355c5d24da7a92110851de95ead5ccfa089fe9.zip
gdb-8e355c5d24da7a92110851de95ead5ccfa089fe9.tar.gz
gdb-8e355c5d24da7a92110851de95ead5ccfa089fe9.tar.bz2
Ada: Fix missing call to pretty-printer for fields of records.
Consider the following types: type Time_T is record Secs : Integer; end record; Before : Time_T := (Secs => 1384395743); In this example, we assume that type Time_T is the number of seconds since Epoch, and so added a Python pretty-printer, to print this type in a more human-friendly way. For instance: (gdb) print before $1 = Thu Nov 14 02:22:23 2013 (1384395743) However, we've noticed that things stop working when this type is embedded inside another record, and we try to print that record. For instance, with the following declarations: type Composite is record Id : Integer; T : Time_T; end record; Afternoon : Composite := (Id => 1, T => (Secs => 1384395865)); (gdb) print afternoon $2 = (id => 1, t => (secs => 1384395865)) We expected instead: (gdb) print afternoon $2 = (id => 1, t => Thu Nov 14 02:24:25 2013 (1384395865)) This patch fixes the problem by making sure that we try to print each field via a call to val_print, rather than calling ada_val_print directly. We need to go through val_print, as the val_print handles all language-independent features such as calling the pretty-printer, knowing that ada_val_print will get called eventually if actual Ada-specific printing is required (which should be the most common scenario). And because val_print takes the language as parameter, we enhanced the print_field_values and print_variant_part to also take a language. As a bonus, this allows us to remove a couple of references to current_language. gdb/ChangeLog: * ada-valprint.c (print_field_values): Add "language" parameter. Update calls to print_field_values and print_variant_part. Pass new parameter "language" in call to val_print instead of "current_language". Replace call to ada_val_print by call to val_print. (print_variant_part): Add "language" parameter. (ada_val_print_struct_union): Update call to print_field_values. gdb/testsuite/ChangeLog: * gdb.ada/pp-rec-component.exp, gdb.ada/pp-rec-component.py, gdb.ada/pp-rec-component/foo.adb, gdb.ada/pp-rec-component/pck.adb, gdb.ada/pp-rec-component/pck.ads: New files.
Diffstat (limited to 'sim/mips/mips3264r2.igen')
0 files changed, 0 insertions, 0 deletions