aboutsummaryrefslogtreecommitdiff
path: root/gdb/printcmd.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-01-25 17:59:00 +0000
committerPedro Alves <palves@redhat.com>2011-01-25 17:59:00 +0000
commitab2188aa2a7958d3954f98229002036867278636 (patch)
treedecbfba60b0a7e0f21b6b3f5362675a349aad13b /gdb/printcmd.c
parent66d61a4cabfc231963c2d901d345198498d9aa21 (diff)
downloadgdb-ab2188aa2a7958d3954f98229002036867278636.zip
gdb-ab2188aa2a7958d3954f98229002036867278636.tar.gz
gdb-ab2188aa2a7958d3954f98229002036867278636.tar.bz2
* printcmd.c (print_formatted): Use val_print_scalar_formatted
instead of print_scalar_formatted. (print_scalar_formatted): Don't handle 's' format strings here, and add an assertion that we never see such format here. * valprint.h (val_print_scalar_formatted): Declare. * valprint.c (val_print_scalar_formatted): New. * c-valprint.c (c_val_print): Use val_print_scalar_formatted instead of print_scalar_formatted. * jv-valprint.c (java_val_print): Ditto. * p-valprint.c (pascal_val_print): Ditto. * ada-valprint.c (ada_val_print_1): Ditto. * f-valprint.c (f_val_print): Ditto. * infcmd.c (registers_info): Ditto. * m2-valprint.c (m2_val_print): Ditto.
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r--gdb/printcmd.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index f435f6d..29ffbf5 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -329,8 +329,11 @@ print_formatted (struct value *val, int size,
else
/* User specified format, so don't look to the the type to
tell us what to do. */
- print_scalar_formatted (value_contents (val), type,
- options, size, stream);
+ val_print_scalar_formatted (type,
+ value_contents_for_printing (val),
+ value_embedded_offset (val),
+ val,
+ options, size, stream);
}
/* Return builtin floating point type of same length as TYPE.
@@ -353,11 +356,8 @@ float_type_from_length (struct type *type)
}
/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
- according to OPTIONS and SIZE on STREAM.
- Formats s and i are not supported at this level.
-
- This is how the elements of an array or structure are printed
- with a format. */
+ according to OPTIONS and SIZE on STREAM. Formats s and i are not
+ supported at this level. */
void
print_scalar_formatted (const void *valaddr, struct type *type,
@@ -369,18 +369,8 @@ print_scalar_formatted (const void *valaddr, struct type *type,
unsigned int len = TYPE_LENGTH (type);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
- /* If we get here with a string format, try again without it. Go
- all the way back to the language printers, which may call us
- again. */
- if (options->format == 's')
- {
- struct value_print_options opts = *options;
- opts.format = 0;
- opts.deref_ref = 0;
- val_print (type, valaddr, 0, 0, stream, 0, NULL, &opts,
- current_language);
- return;
- }
+ /* String printing should go through val_print_scalar_formatted. */
+ gdb_assert (options->format != 's');
if (len > sizeof(LONGEST) &&
(TYPE_CODE (type) == TYPE_CODE_INT