X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fcp-valprint.c;h=84b66fe7a81b7f4d9d6f53185b6cb33e84364fce;hb=cd5ff84afdf0c24c2b3f732d994ea4f43cd1bf31;hp=9fdf869883e88e54448e0dcacc2d02da33940209;hpb=cf309262d9828b6aad71e01f727a9fa2e0776a4e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 9fdf869883..84b66fe7a8 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -1,6 +1,6 @@ /* Support for printing C++ values for GDB, the GNU debugger. - Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, + Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of GDB. @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "defs.h" #include "gdb_obstack.h" @@ -38,10 +38,39 @@ #include "cp-support.h" #include "language.h" -int vtblprint; /* Controls printing of vtbl's */ -int objectprint; /* Controls looking up an object's derived type - using what we find in its vtables. */ +/* Controls printing of vtbl's */ +int vtblprint; +static void +show_vtblprint (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("\ +Printing of C++ virtual function tables is %s.\n"), + value); +} + +/* Controls looking up an object's derived type using what we find in + its vtables. */ +int objectprint; +static void +show_objectprint (struct ui_file *file, int from_tty, + struct cmd_list_element *c, + const char *value) +{ + fprintf_filtered (file, _("\ +Printing of object's derived type based on vtable info is %s.\n"), + value); +} + int static_field_print; /* Controls printing of static fields. */ +static void +show_static_field_print (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Printing of C++ static members is %s.\n"), + value); +} + static struct obstack dont_print_vb_obstack; static struct obstack dont_print_statmem_obstack; @@ -52,7 +81,7 @@ static void cp_print_static_field (struct type *, struct value *, struct ui_file *, int, int, enum val_prettyprint); -static void cp_print_value (struct type *, struct type *, const bfd_byte *, +static void cp_print_value (struct type *, struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, int, enum val_prettyprint, struct type **); @@ -64,7 +93,7 @@ static void cp_print_hpacc_virtual_table_entries (struct type *, int *, void -cp_print_class_method (const bfd_byte *valaddr, +cp_print_class_method (const gdb_byte *valaddr, struct type *type, struct ui_file *stream) { @@ -118,7 +147,7 @@ cp_print_class_method (const bfd_byte *valaddr, fputs_filtered ("?? ", stream); return; } - error ("invalid pointer to member function"); + error (_("invalid pointer to member function")); } len = TYPE_NFN_FIELDS (domain); for (i = 0; i < len; i++) @@ -230,7 +259,7 @@ cp_is_vtbl_member (struct type *type) void cp_print_value_fields (struct type *type, struct type *real_type, - const bfd_byte *valaddr, int offset, CORE_ADDR address, + const gdb_byte *valaddr, int offset, CORE_ADDR address, struct ui_file *stream, int format, int recurse, enum val_prettyprint pretty, struct type **dont_print_vb,int dont_print_statmem) @@ -360,8 +389,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, (TYPE_FIELD_TYPE (type, i), unpack_field_as_long (type, valaddr + offset, i)); - val_print (TYPE_FIELD_TYPE (type, i), value_contents (v), - 0, 0, stream, format, 0, recurse + 1, pretty); + common_val_print (v, stream, format, 0, recurse + 1, pretty); } } else @@ -425,8 +453,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, v = value_from_pointer (lookup_pointer_type (builtin_type_unsigned_long), *(unsigned long *) (valaddr + offset)); - val_print (value_type (v), value_contents (v), 0, 0, - stream, format, 0, recurse + 1, pretty); + common_val_print (v, stream, format, 0, recurse + 1, pretty); fields_seen = 1; if (vtblprint) @@ -493,7 +520,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, static void cp_print_value (struct type *type, struct type *real_type, - const bfd_byte *valaddr, int offset, CORE_ADDR address, + const gdb_byte *valaddr, int offset, CORE_ADDR address, struct ui_file *stream, int format, int recurse, enum val_prettyprint pretty, struct type **dont_print_vb) { @@ -520,7 +547,7 @@ cp_print_value (struct type *type, struct type *real_type, int skip; struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i)); char *basename = TYPE_NAME (baseclass); - const bfd_byte *base_valaddr; + const gdb_byte *base_valaddr; if (BASETYPE_VIA_VIRTUAL (type, i)) { @@ -545,8 +572,8 @@ cp_print_value (struct type *type, struct type *real_type, find_rt_vbase_offset (type, TYPE_BASECLASS (type, i), valaddr, offset, &boffset, &skip); if (skip >= 0) - error ("Virtual base class offset not found from vtable while" - " printing"); + error (_("Virtual base class offset not found from vtable while" + " printing")); base_valaddr = valaddr; } else @@ -567,7 +594,7 @@ cp_print_value (struct type *type, struct type *real_type, || (boffset + offset) >= TYPE_LENGTH (type))) { /* FIXME (alloca): unsafe if baseclass is really really large. */ - bfd_byte *buf = alloca (TYPE_LENGTH (baseclass)); + gdb_byte *buf = alloca (TYPE_LENGTH (baseclass)); base_valaddr = buf; if (target_read_memory (address + boffset, buf, TYPE_LENGTH (baseclass)) != 0) @@ -677,7 +704,7 @@ cp_print_static_field (struct type *type, } void -cp_print_class_member (const bfd_byte *valaddr, struct type *domain, +cp_print_class_member (const gdb_byte *valaddr, struct type *domain, struct ui_file *stream, char *prefix) { @@ -793,8 +820,7 @@ cp_print_hpacc_virtual_table_entries (struct type *type, int *vfuncs, deprecated_set_value_type (vf, value_type (v)); /* print out the entry */ - val_print (value_type (vf), value_contents (vf), 0, 0, - stream, format, 0, recurse + 1, pretty); + common_val_print (vf, stream, format, 0, recurse + 1, pretty); field_physname = TYPE_FN_FIELD_PHYSNAME (TYPE_FN_FIELDLIST1 (type, fn), oi); /* pai: (temp) FIXME Maybe this should be DMGL_ANSI */ @@ -810,26 +836,29 @@ cp_print_hpacc_virtual_table_entries (struct type *type, int *vfuncs, void _initialize_cp_valprint (void) { - deprecated_add_show_from_set - (add_set_cmd ("static-members", class_support, var_boolean, - (char *) &static_field_print, - "Set printing of C++ static members.", - &setprintlist), - &showprintlist); + add_setshow_boolean_cmd ("static-members", class_support, + &static_field_print, _("\ +Set printing of C++ static members."), _("\ +Show printing of C++ static members."), NULL, + NULL, + show_static_field_print, + &setprintlist, &showprintlist); /* Turn on printing of static fields. */ static_field_print = 1; - deprecated_add_show_from_set - (add_set_cmd ("vtbl", class_support, var_boolean, (char *) &vtblprint, - "Set printing of C++ virtual function tables.", - &setprintlist), - &showprintlist); - - deprecated_add_show_from_set - (add_set_cmd ("object", class_support, var_boolean, (char *) &objectprint, - "Set printing of object's derived type based on vtable info.", - &setprintlist), - &showprintlist); + add_setshow_boolean_cmd ("vtbl", class_support, &vtblprint, _("\ +Set printing of C++ virtual function tables."), _("\ +Show printing of C++ virtual function tables."), NULL, + NULL, + show_vtblprint, + &setprintlist, &showprintlist); + + add_setshow_boolean_cmd ("object", class_support, &objectprint, _("\ +Set printing of object's derived type based on vtable info."), _("\ +Show printing of object's derived type based on vtable info."), NULL, + NULL, + show_objectprint, + &setprintlist, &showprintlist); /* Give people the defaults which they are used to. */ objectprint = 0;