diff options
author | Tom Tromey <tromey@redhat.com> | 2008-10-28 17:19:58 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-10-28 17:19:58 +0000 |
commit | 79a45b7d67b37d45cdb44d3ee2761a768474dd73 (patch) | |
tree | 27cb759eb2c872534a37cf9aef25a5ceabc47bd4 /gdb/m2-valprint.c | |
parent | 7c8a8b0498cb16b1a36e3210977eae12cca98f64 (diff) | |
download | gdb-79a45b7d67b37d45cdb44d3ee2761a768474dd73.zip gdb-79a45b7d67b37d45cdb44d3ee2761a768474dd73.tar.gz gdb-79a45b7d67b37d45cdb44d3ee2761a768474dd73.tar.bz2 |
gdb
* varobj.c (value_get_print_value): Include valprint.h.
(value_get_print_value): Use get_formatted_print_options.
* value.h (struct value_print_options): Declare.
(value_print, val_print, common_val_print, val_print_string):
Update.
* value.c: Include valprint.h.
(show_values): Use get_user_print_options.
(show_convenience): Likewise.
* valprint.h (prettyprint_arrays, prettyprint_structs): Don't
declare.
(struct value_print_options): New type.
(vtblprint, unionprint, addressprint, objectprint, print_max,
inspect_it, repeat_count_threshold, output_format,
stop_print_at_null): Don't declare.
(user_print_options, get_user_print_options,
get_raw_print_options, get_formatted_print_options): Declare.
(print_array_indexes_p): Don't declare.
(maybe_print_array_index, val_print_array_elements): Update.
* valprint.c (print_max): Remove.
(user_print_options): New global.
(get_user_print_options, get_raw_print_options,
get_formatted_print_options): New functions.
(print_array_indexes, repeat_count_threshold, stop_print_at_null,
prettyprint_structs, prettyprint_arrays, unionprint,
addressprint): Remove.
(val_print): Remove format, deref_ref, pretty arguments; add
options. Update.
(common_val_print): Likewise.
(print_array_indexes_p): Remove.
(maybe_print_array_index): Remove format, pretty arguments; add
options. Update.
(val_print_array_elements): Remove format, deref_ref, pretty
arguments; add options. Update.
(val_print_string): Add options argument. Update.
(_initialize_valprint): Use user_print_options.
(output_format): Remove.
(set_output_radix_1): Use user_print_options.
* typeprint.c: Include valprint.h.
(objectprint): Don't declare.
(whatis_exp): Use get_user_print_options.
* tui/tui-regs.c: Include valprint.h.
(tui_register_format): Use get_formatted_print_options.
* tracepoint.c: Include valprint.h.
(addressprint): Don't declare.
(trace_mention): Use get_user_print_options.
(tracepoints_info): Likewise.
* stack.c (print_frame_args): Use get_raw_print_options.
(print_frame_info): Use get_user_print_options.
(print_frame): Likewise.
* sh64-tdep.c: Include valprint.h
(sh64_do_register): Use get_formatted_print_options.
* scm-valprint.c (scm_inferior_print): Remove format, deref_ref,
pretty arguments; add options.
(scm_scmlist_print): Likewise. Update.
(scm_scmval_print): Likewise.
(scm_val_print): Likewise.
(scm_value_print): Remove format, pretty arguments; add options.
Update.
* scm-lang.h (scm_value_print, scm_val_print, scm_scmval_print):
Update.
* scm-lang.c (scm_printstr): Add options argument.
* python/python-value.c: Include valprint.h.
(valpy_str): Use get_user_print_options.
* printcmd.c: Include valprint.h.
(addressprint): Don't declare.
(inspect_it): Remove.
(print_formatted): Remove format option; add options. Update.
(print_scalar_formatted): Likewise.
(print_address_demangle): Use get_user_print_options.
(do_examine): Use get_formatted_print_options.
(print_command_1): Likewise.
(output_command): Use get_formatted_print_options.
(do_one_display): Likewise.
(print_variable_value): Use get_user_print_options.
* p-valprint.c (pascal_val_print): Remove format, deref_ref,
pretty arguments; add options. Update.
(pascal_value_print): Remove format, pretty arguments; add
options. Update.
(vtblprint, objectprint): Don't declare.
(pascal_static_field_print): Remove.
(pascal_object_print_value_fields): Remove format, pretty
arguments; add options. Update.
(pascal_object_print_static_field): Likewise.
(_initialize_pascal_valprint): Use user_print_options. Update.
* p-lang.h (pascal_val_print, pascal_value_print,
pascal_printstr, pascal_object_print_value_fields): Update.
(vtblprint, static_field_print): Don't declare.
* p-lang.c (pascal_printstr): Add options argument. Update.
* objc-lang.c (objc_printstr): Add options argument. Update.
* mt-tdep.c: Include valprint.h.
(mt_registers_info): Use get_raw_print_options.
* mips-tdep.c: Include valprint.h.
(mips_print_fp_register): Use get_formatted_print_options.
(mips_print_register): Likewise.
* mi/mi-main.c: Include valprint.h.
(get_register): Use get_user_print_options.
(mi_cmd_data_evaluate_expression): Likewise.
(mi_cmd_data_read_memory): Use get_formatted_print_options.
* mi/mi-cmd-stack.c: Include valprint.h.
(list_args_or_locals): Use get_raw_print_options.
* m2-valprint.c (print_function_pointer_address): Add addressprint
argument.
(m2_print_long_set): Remove format, pretty arguments.
(m2_print_unbounded_array): Remove format, deref_ref, pretty
arguments; add options. Update.
(print_unpacked_pointer): Remove format argument; add options.
Now static. Update.
(print_variable_at_address): Remove format, deref_ref, pretty
arguments; add options. Update.
(m2_print_array_contents): Likewise.
(m2_val_print): Likewise.
* m2-lang.h (m2_val_print): Update.
* m2-lang.c (m2_printstr): Add options argument. Update.
* language.h (struct value_print_options): Declare.
(struct language_defn) <la_printstr>: Add options argument.
<la_val_print>: Remove format, deref_ref, pretty argument; add
options.
<la_value_print>: Remove format, pretty arguments; add options.
<la_print_array_index>: Likewise.
(LA_VAL_PRINT, LA_VALUE_PRINT, LA_PRINT_STRING,
LA_PRINT_ARRAY_INDEX): Update.
(default_print_array_index): Update.
* language.c (default_print_array_index): Remove format, pretty
arguments; add options. Update.
(unk_lang_printstr): Add options argument.
(unk_lang_val_print): Remove format, deref_ref, pretty arguments;
add options.
(unk_lang_value_print): Remove format, pretty arguments; add
options.
* jv-valprint.c (java_value_print): Remove format, pretty
arguments; add options. Update.
(java_print_value_fields): Likewise.
(java_val_print): Remove format, deref_ref, pretty arguments; add
options. Update.
* jv-lang.h (java_val_print, java_value_print): Declare.
* infcmd.c: Include valprint.h.
(print_return_value): Use get_raw_print_options.
(default_print_registers_info): Use get_user_print_options,
get_formatted_print_options.
(registers_info): Use get_formatted_print_options.
* gdbtypes.h (struct value_print_options): Declare.
(print_scalar_formatted): Update.
* f-valprint.c (f77_print_array_1): Remove format, deref_ref,
pretty arguments; add options. Update.
(f77_print_array): Likewise.
(f_val_print): Likewise.
* f-lang.h (f_val_print): Update.
* f-lang.c (f_printstr): Add options argument. Update.
(c_value_print): Update declaration.
* expprint.c: Include valprint.h.
(print_subexp_standard): Use get_raw_print_options,
get_user_print_options.
* eval.c: Include valprint.h.
(objectprint): Don't declare.
(evaluate_subexp_standard): Use get_user_print_options.
* cp-valprint.c (vtblprint, objectprint, static_field_print):
Remove.
(cp_print_value_fields): Remove format, pretty arguments; add
options. Update.
(cp_print_value): Likewise.
(cp_print_static_field): Likewise.
(_initialize_cp_valprint): Use user_print_options. Update.
* c-valprint.c (print_function_pointer_address): Add addressprint
argument.
(c_val_print): Remove format, deref_ref, pretty arguments; add
options. Update.
(c_value_print): Add options argument. Update.
* c-lang.h (c_val_print, c_value_print, c_printstr): Update.
(vtblprint, static_field_print): Don't declare.
(cp_print_value_fields): Update.
* c-lang.c (c_printstr): Add options argument. Update.
* breakpoint.c: Include valprint.h.
(addressprint): Don't declare.
(watchpoint_value_print): Use get_user_print_options.
(print_one_breakpoint_location): Likewise.
(breakpoint_1, print_it_catch_fork, print_it_catch_vfork, mention,
print_exception_catchpoint): Likewise.
* auxv.c (fprint_target_auxv): Don't declare addressprint. Use
get_user_print_options.
* ada-valprint.c (struct ada_val_print_args): Remove format,
deref_ref, and pretty; add options.
(print_optional_low_bound): Add options argument.
(val_print_packed_array_elements): Remove format and pretty
arguments; add options. Update.
(printstr): Add options argument. Update.
(ada_printstr): Likewise.
(ada_val_print): Remove format, deref_ref, pretty arguments; add
options argument. Update.
(ada_val_print_stub): Update.
(ada_val_print_array): Remove format, deref_ref, pretty arguments;
add options. Update.
(ada_val_print_1): Likewise.
(print_variant_part): Likewise.
(ada_value_print): Remove format, pretty arguments; add options.
Update.
(print_record): Likewise.
(print_field_values): Likewise.
* ada-lang.h (ada_val_print, ada_value_print, ada_printstr):
Update.
* ada-lang.c (ada_print_array_index): Add options argument; remove
format and pretty arguments.
(print_one_exception): Use get_user_print_options.
gdb/testsuite
* gdb.base/exprs.exp (test_expr): Add enum formatting tests.
Diffstat (limited to 'gdb/m2-valprint.c')
-rw-r--r-- | gdb/m2-valprint.c | 174 |
1 files changed, 88 insertions, 86 deletions
diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c index 82ff30e..d48108f 100644 --- a/gdb/m2-valprint.c +++ b/gdb/m2-valprint.c @@ -30,22 +30,24 @@ #include "m2-lang.h" #include "target.h" -int print_unpacked_pointer (struct type *type, - CORE_ADDR address, CORE_ADDR addr, - int format, struct ui_file *stream); +static int print_unpacked_pointer (struct type *type, + CORE_ADDR address, CORE_ADDR addr, + const struct value_print_options *options, + struct ui_file *stream); static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, - struct ui_file *stream, int format, - enum val_prettyprint pretty, - int deref_ref, int recurse, int len); + struct ui_file *stream, int recurse, + const struct value_print_options *options, + int len); /* Print function pointer with inferior address ADDRESS onto stdio stream STREAM. */ static void -print_function_pointer_address (CORE_ADDR address, struct ui_file *stream) +print_function_pointer_address (CORE_ADDR address, struct ui_file *stream, + int addressprint) { CORE_ADDR func_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch, address, @@ -88,8 +90,7 @@ get_long_set_bounds (struct type *type, LONGEST *low, LONGEST *high) static void m2_print_long_set (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, - struct ui_file *stream, int format, - enum val_prettyprint pretty) + struct ui_file *stream) { int empty_set = 1; int element_seen = 0; @@ -184,9 +185,8 @@ m2_print_long_set (struct type *type, const gdb_byte *valaddr, static void m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, - struct ui_file *stream, int format, - int deref_ref, enum val_prettyprint pretty, - int recurse) + struct ui_file *stream, int recurse, + const struct value_print_options *options) { struct type *content_type; CORE_ADDR addr; @@ -207,26 +207,27 @@ m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr, fprintf_filtered (stream, "{"); m2_print_array_contents (value_type (val), value_contents(val), value_embedded_offset (val), addr, stream, - format, deref_ref, pretty, recurse, len); + recurse, options, len); fprintf_filtered (stream, ", HIGH = %d}", (int) len); } -int +static int print_unpacked_pointer (struct type *type, CORE_ADDR address, CORE_ADDR addr, - int format, struct ui_file *stream) + const struct value_print_options *options, + struct ui_file *stream) { struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type)); if (TYPE_CODE (elttype) == TYPE_CODE_FUNC) { /* Try to print what function it points to. */ - print_function_pointer_address (addr, stream); + print_function_pointer_address (addr, stream, options->addressprint); /* Return value is irrelevant except for string pointers. */ return 0; } - if (addressprint && format != 's') + if (options->addressprint && options->format != 's') fputs_filtered (paddress (address), stream); /* For a pointer to char or unsigned char, also print the string @@ -234,9 +235,9 @@ print_unpacked_pointer (struct type *type, if (TYPE_LENGTH (elttype) == 1 && TYPE_CODE (elttype) == TYPE_CODE_INT - && (format == 0 || format == 's') + && (options->format == 0 || options->format == 's') && addr != 0) - return val_print_string (addr, -1, TYPE_LENGTH (elttype), stream); + return val_print_string (addr, -1, TYPE_LENGTH (elttype), stream, options); return 0; } @@ -244,9 +245,9 @@ print_unpacked_pointer (struct type *type, static void print_variable_at_address (struct type *type, const gdb_byte *valaddr, - struct ui_file *stream, int format, - int deref_ref, int recurse, - enum val_prettyprint pretty) + struct ui_file *stream, + int recurse, + const struct value_print_options *options) { CORE_ADDR addr = unpack_pointer (type, valaddr); struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type)); @@ -259,8 +260,7 @@ print_variable_at_address (struct type *type, { struct value *deref_val = value_at (TYPE_TARGET_TYPE (type), unpack_pointer (type, valaddr)); - common_val_print (deref_val, stream, format, deref_ref, - recurse, pretty, current_language); + common_val_print (deref_val, stream, recurse, options, current_language); } else fputs_filtered ("???", stream); @@ -276,9 +276,9 @@ print_variable_at_address (struct type *type, static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, - struct ui_file *stream, int format, - enum val_prettyprint pretty, - int deref_ref, int recurse, int len) + struct ui_file *stream, int recurse, + const struct value_print_options *options, + int len) { int eltlen; CHECK_TYPEDEF (type); @@ -286,21 +286,20 @@ m2_print_array_contents (struct type *type, const gdb_byte *valaddr, if (TYPE_LENGTH (type) > 0) { eltlen = TYPE_LENGTH (type); - if (prettyprint_arrays) + if (options->prettyprint_arrays) print_spaces_filtered (2 + 2 * recurse, stream); /* For an array of chars, print with string syntax. */ if (eltlen == 1 && ((TYPE_CODE (type) == TYPE_CODE_INT) || ((current_language->la_language == language_m2) && (TYPE_CODE (type) == TYPE_CODE_CHAR))) - && (format == 0 || format == 's')) - val_print_string (address, len+1, eltlen, stream); + && (options->format == 0 || options->format == 's')) + val_print_string (address, len+1, eltlen, stream, options); else { fprintf_filtered (stream, "{"); val_print_array_elements (type, valaddr + embedded_offset, - address, stream, format, - deref_ref, recurse, pretty, 0); + address, stream, recurse, options, 0); fprintf_filtered (stream, "}"); } } @@ -309,21 +308,15 @@ m2_print_array_contents (struct type *type, const gdb_byte *valaddr, /* Print data of type TYPE located at VALADDR (within GDB), which came from the inferior at address ADDRESS, onto stdio stream STREAM according to - FORMAT (a letter or 0 for natural format). The data at VALADDR is in - target byte order. + OPTIONS. The data at VALADDR is in target byte order. If the data are a string pointer, returns the number of string characters - printed. - - If DEREF_REF is nonzero, then dereference references, otherwise just print - them like pointers. - - The PRETTY parameter controls prettyprinting. */ + printed. */ int m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, - CORE_ADDR address, struct ui_file *stream, int format, - int deref_ref, int recurse, enum val_prettyprint pretty) + CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value_print_options *options) { unsigned int i = 0; /* Number of characters printed */ unsigned len; @@ -343,74 +336,73 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, elttype = check_typedef (TYPE_TARGET_TYPE (type)); eltlen = TYPE_LENGTH (elttype); len = TYPE_LENGTH (type) / eltlen; - if (prettyprint_arrays) + if (options->prettyprint_arrays) print_spaces_filtered (2 + 2 * recurse, stream); /* For an array of chars, print with string syntax. */ if (eltlen == 1 && ((TYPE_CODE (elttype) == TYPE_CODE_INT) || ((current_language->la_language == language_m2) && (TYPE_CODE (elttype) == TYPE_CODE_CHAR))) - && (format == 0 || format == 's')) + && (options->format == 0 || options->format == 's')) { /* If requested, look for the first null char and only print elements up to it. */ - if (stop_print_at_null) + if (options->stop_print_at_null) { unsigned int temp_len; /* Look for a NULL char. */ for (temp_len = 0; (valaddr + embedded_offset)[temp_len] - && temp_len < len && temp_len < print_max; + && temp_len < len && temp_len < options->print_max; temp_len++); len = temp_len; } - LA_PRINT_STRING (stream, valaddr + embedded_offset, len, 1, 0); + LA_PRINT_STRING (stream, valaddr + embedded_offset, len, 1, 0, + options); i = len; } else { fprintf_filtered (stream, "{"); val_print_array_elements (type, valaddr + embedded_offset, - address, stream, format, deref_ref, - recurse, pretty, 0); + address, stream, recurse, options, 0); fprintf_filtered (stream, "}"); } break; } /* Array of unspecified length: treat like pointer to first elt. */ - print_unpacked_pointer (type, address, address, format, stream); + print_unpacked_pointer (type, address, address, options, stream); break; case TYPE_CODE_PTR: if (TYPE_CONST (type)) print_variable_at_address (type, valaddr + embedded_offset, - stream, format, deref_ref, recurse, - pretty); - else if (format && format != 's') - print_scalar_formatted (valaddr + embedded_offset, type, format, - 0, stream); + stream, recurse, options); + else if (options->format && options->format != 's') + print_scalar_formatted (valaddr + embedded_offset, type, + options, 0, stream); else { addr = unpack_pointer (type, valaddr + embedded_offset); - print_unpacked_pointer (type, addr, address, format, stream); + print_unpacked_pointer (type, addr, address, options, stream); } break; case TYPE_CODE_REF: elttype = check_typedef (TYPE_TARGET_TYPE (type)); - if (addressprint) + if (options->addressprint) { CORE_ADDR addr = extract_typed_address (valaddr + embedded_offset, type); fprintf_filtered (stream, "@"); fputs_filtered (paddress (addr), stream); - if (deref_ref) + if (options->deref_ref) fputs_filtered (": ", stream); } /* De-reference the reference. */ - if (deref_ref) + if (options->deref_ref) { if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { @@ -418,8 +410,8 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, value_at (TYPE_TARGET_TYPE (type), unpack_pointer (type, valaddr + embedded_offset)); - common_val_print (deref_val, stream, format, deref_ref, - recurse, pretty, current_language); + common_val_print (deref_val, stream, recurse, options, + current_language); } else fputs_filtered ("???", stream); @@ -427,7 +419,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_UNION: - if (recurse && !unionprint) + if (recurse && !options->unionprint) { fprintf_filtered (stream, "{...}"); break; @@ -436,22 +428,20 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, case TYPE_CODE_STRUCT: if (m2_is_long_set (type)) m2_print_long_set (type, valaddr, embedded_offset, address, - stream, format, pretty); + stream); else if (m2_is_unbounded_array (type)) m2_print_unbounded_array (type, valaddr, embedded_offset, - address, stream, format, deref_ref, - pretty, recurse); + address, stream, recurse, options); else cp_print_value_fields (type, type, valaddr, embedded_offset, - address, stream, format, - recurse, pretty, NULL, 0); + address, stream, recurse, options, NULL, 0); break; case TYPE_CODE_ENUM: - if (format) + if (options->format) { print_scalar_formatted (valaddr + embedded_offset, type, - format, 0, stream); + options, 0, stream); break; } len = TYPE_NFIELDS (type); @@ -475,10 +465,10 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_FUNC: - if (format) + if (options->format) { print_scalar_formatted (valaddr + embedded_offset, type, - format, 0, stream); + options, 0, stream); break; } /* FIXME, we should consider, at least for ANSI C language, eliminating @@ -491,10 +481,14 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_BOOL: - format = format ? format : output_format; - if (format) - print_scalar_formatted (valaddr + embedded_offset, type, - format, 0, stream); + if (options->format || options->output_format) + { + struct value_print_options opts = *options; + opts.format = (options->format ? options->format + : options->output_format); + print_scalar_formatted (valaddr + embedded_offset, type, + &opts, 0, stream); + } else { val = unpack_long (type, valaddr + embedded_offset); @@ -511,7 +505,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (TYPE_LENGTH (type) == TYPE_LENGTH (TYPE_TARGET_TYPE (type))) { m2_val_print (TYPE_TARGET_TYPE (type), valaddr, embedded_offset, - address, stream, format, deref_ref, recurse, pretty); + address, stream, recurse, options); break; } /* FIXME: create_range_type does not set the unsigned bit in a @@ -524,19 +518,27 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, /* FALLTHROUGH */ case TYPE_CODE_INT: - format = format ? format : output_format; - if (format) - print_scalar_formatted (valaddr + embedded_offset, type, format, - 0, stream); + if (options->format || options->output_format) + { + struct value_print_options opts = *options; + opts.format = (options->format ? options->format + : options->output_format); + print_scalar_formatted (valaddr + embedded_offset, type, + &opts, 0, stream); + } else val_print_type_code_int (type, valaddr + embedded_offset, stream); break; case TYPE_CODE_CHAR: - format = format ? format : output_format; - if (format) - print_scalar_formatted (valaddr + embedded_offset, type, - format, 0, stream); + if (options->format || options->output_format) + { + struct value_print_options opts = *options; + opts.format = (options->format ? options->format + : options->output_format); + print_scalar_formatted (valaddr + embedded_offset, type, + &opts, 0, stream); + } else { val = unpack_long (type, valaddr + embedded_offset); @@ -550,9 +552,9 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_FLT: - if (format) + if (options->format) print_scalar_formatted (valaddr + embedded_offset, type, - format, 0, stream); + options, 0, stream); else print_floating (valaddr + embedded_offset, type, stream); break; |