aboutsummaryrefslogtreecommitdiff
path: root/gdb/c-valprint.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2015-07-09 11:18:59 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2015-07-09 11:24:57 -0400
commit49f7fe2880dc08ae701d9cdb84c8217642ef637a (patch)
treeb81a16e81dcdf4285366ff4fa25194b9e89860bc /gdb/c-valprint.c
parent9e4f353ca9d4f4ae70ce76ae704e5686d47e2f63 (diff)
downloadbinutils-49f7fe2880dc08ae701d9cdb84c8217642ef637a.zip
binutils-49f7fe2880dc08ae701d9cdb84c8217642ef637a.tar.gz
binutils-49f7fe2880dc08ae701d9cdb84c8217642ef637a.tar.bz2
Factor out int printing code from c_val_print
gdb/ChangeLog: * c-valprint.c (c_val_print): Factor out int printing code to ... (c_val_print_int): ... this new function.
Diffstat (limited to 'gdb/c-valprint.c')
-rw-r--r--gdb/c-valprint.c60
1 files changed, 36 insertions, 24 deletions
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index a22a9d3..0a61d7a 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -422,6 +422,40 @@ c_val_print_union (struct type *type, const gdb_byte *valaddr,
}
}
+/* c_val_print helper for TYPE_CODE_INT. */
+
+static void
+c_val_print_int (struct type *type, struct type *unresolved_type,
+ const gdb_byte *valaddr, int embedded_offset,
+ struct ui_file *stream, const struct value *original_value,
+ const struct value_print_options *options)
+{
+ if (options->format || options->output_format)
+ {
+ struct value_print_options opts = *options;
+
+ opts.format = (options->format ? options->format
+ : options->output_format);
+ val_print_scalar_formatted (type, valaddr, embedded_offset,
+ original_value, &opts, 0, stream);
+ }
+ else
+ {
+ val_print_type_code_int (type, valaddr + embedded_offset,
+ stream);
+ /* C and C++ has no single byte int type, char is used
+ instead. Since we don't know whether the value is really
+ intended to be used as an integer or a character, print
+ the character equivalent as well. */
+ if (c_textual_element_type (unresolved_type, options->format))
+ {
+ fputs_filtered (" ", stream);
+ LA_PRINT_CHAR (unpack_long (type, valaddr + embedded_offset),
+ unresolved_type, stream);
+ }
+ }
+}
+
/* See val_print for a description of the various parameters of this
function; they are identical. */
@@ -462,30 +496,8 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
break;
case TYPE_CODE_INT:
- if (options->format || options->output_format)
- {
- struct value_print_options opts = *options;
-
- opts.format = (options->format ? options->format
- : options->output_format);
- val_print_scalar_formatted (type, valaddr, embedded_offset,
- original_value, &opts, 0, stream);
- }
- else
- {
- val_print_type_code_int (type, valaddr + embedded_offset,
- stream);
- /* C and C++ has no single byte int type, char is used
- instead. Since we don't know whether the value is really
- intended to be used as an integer or a character, print
- the character equivalent as well. */
- if (c_textual_element_type (unresolved_type, options->format))
- {
- fputs_filtered (" ", stream);
- LA_PRINT_CHAR (unpack_long (type, valaddr + embedded_offset),
- unresolved_type, stream);
- }
- }
+ c_val_print_int (type, unresolved_type, valaddr, embedded_offset, stream,
+ original_value, options);
break;
case TYPE_CODE_MEMBERPTR: