From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20443 invoked by alias); 7 Jan 2014 04:22:50 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 20382 invoked by uid 89); 7 Jan 2014 04:22:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Tue, 07 Jan 2014 04:22:48 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 8CA62116665 for ; Mon, 6 Jan 2014 23:22:46 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id pLj869NOmLzE for ; Mon, 6 Jan 2014 23:22:46 -0500 (EST) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 19883116666 for ; Mon, 6 Jan 2014 23:22:46 -0500 (EST) Received: by joel.gnat.com (Postfix, from userid 1000) id E0ACFE02E6; Tue, 7 Jan 2014 08:22:42 +0400 (RET) From: Joel Brobecker To: gdb-patches@sourceware.org Subject: [commit/Ada 08/11] move ada_val_print_array down within other ada_val_print* functions Date: Tue, 07 Jan 2014 04:22:00 -0000 Message-Id: <1389068515-10129-9-git-send-email-brobecker@adacore.com> In-Reply-To: <1389068515-10129-1-git-send-email-brobecker@adacore.com> References: <1389068515-10129-1-git-send-email-brobecker@adacore.com> X-SW-Source: 2014-01/txt/msg00122.txt.bz2 This patch moves ada_val_print_array to group it with the other ada_val_print_* function which are being called by ada_val_print_1. Since this function is in the same situation, it is more logical to move it within that group. It also rationalizes the function's prototype to match the prototype of the other ada_val_print_* routines. gdb/ChangeLog: * ada-valprint.c (ada_val_print_array): Move implementation down. Rename parameter "offset" and "val" into "offset_aligned" and "original_value" respectively. Add parameter "offset". --- gdb/ChangeLog | 6 +++ gdb/ada-valprint.c | 133 +++++++++++++++++++++++++++-------------------------- 2 files changed, 73 insertions(+), 66 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ece68cc..004709b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2014-01-07 Joel Brobecker + * ada-valprint.c (ada_val_print_array): Move implementation + down. Rename parameter "offset" and "val" into "offset_aligned" + and "original_value" respectively. Add parameter "offset". + +2014-01-07 Joel Brobecker + * ada-valprint.c (ada_val_print_ref): Rewrite by mostly re-organizing the code. Change the "???" message printed when target type is a TYPE_CODE_UNDEF into diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c index 12c84da..43e1490 100644 --- a/gdb/ada-valprint.c +++ b/gdb/ada-valprint.c @@ -537,71 +537,6 @@ ada_printstr (struct ui_file *stream, struct type *type, options); } - -/* Assuming TYPE is a simple array, print the value of this array located - at VALADDR + OFFSET. See ada_val_print for a description of the various - parameters of this function; they are identical. */ - -static void -ada_val_print_array (struct type *type, const gdb_byte *valaddr, - int offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options) -{ - /* For an array of chars, print with string syntax. */ - if (ada_is_string_type (type) - && (options->format == 0 || options->format == 's')) - { - enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); - struct type *elttype = TYPE_TARGET_TYPE (type); - unsigned int eltlen; - unsigned int len; - - /* We know that ELTTYPE cannot possibly be null, because we found - that TYPE is a string-like type. Similarly, the size of ELTTYPE - should also be non-null, since it's a character-like type. */ - gdb_assert (elttype != NULL); - gdb_assert (TYPE_LENGTH (elttype) != 0); - - eltlen = TYPE_LENGTH (elttype); - len = TYPE_LENGTH (type) / eltlen; - - if (options->prettyformat_arrays) - print_spaces_filtered (2 + 2 * recurse, stream); - - /* If requested, look for the first null char and only print - elements up to it. */ - if (options->stop_print_at_null) - { - int temp_len; - - /* Look for a NULL char. */ - for (temp_len = 0; - (temp_len < len - && temp_len < options->print_max - && char_at (valaddr + offset, - temp_len, eltlen, byte_order) != 0); - temp_len += 1); - len = temp_len; - } - - printstr (stream, elttype, valaddr + offset, len, 0, eltlen, options); - } - else - { - fprintf_filtered (stream, "("); - print_optional_low_bound (stream, type, options); - if (TYPE_FIELD_BITSIZE (type, 0) > 0) - val_print_packed_array_elements (type, valaddr, offset, - 0, stream, recurse, val, options); - else - val_print_array_elements (type, valaddr, offset, address, - stream, recurse, val, options, 0); - fprintf_filtered (stream, ")"); - } -} - static int print_variant_part (struct type *type, int field_num, const gdb_byte *valaddr, int offset, @@ -999,6 +934,72 @@ ada_val_print_struct_union } /* Implement Ada val_print'ing for the case where TYPE is + a TYPE_CODE_ARRAY. */ + +static void +ada_val_print_array (struct type *type, const gdb_byte *valaddr, + int offset, int offset_aligned, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *original_value, + const struct value_print_options *options) +{ + /* For an array of chars, print with string syntax. */ + if (ada_is_string_type (type) + && (options->format == 0 || options->format == 's')) + { + enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); + struct type *elttype = TYPE_TARGET_TYPE (type); + unsigned int eltlen; + unsigned int len; + + /* We know that ELTTYPE cannot possibly be null, because we found + that TYPE is a string-like type. Similarly, the size of ELTTYPE + should also be non-null, since it's a character-like type. */ + gdb_assert (elttype != NULL); + gdb_assert (TYPE_LENGTH (elttype) != 0); + + eltlen = TYPE_LENGTH (elttype); + len = TYPE_LENGTH (type) / eltlen; + + if (options->prettyformat_arrays) + print_spaces_filtered (2 + 2 * recurse, stream); + + /* If requested, look for the first null char and only print + elements up to it. */ + if (options->stop_print_at_null) + { + int temp_len; + + /* Look for a NULL char. */ + for (temp_len = 0; + (temp_len < len + && temp_len < options->print_max + && char_at (valaddr + offset_aligned, + temp_len, eltlen, byte_order) != 0); + temp_len += 1); + len = temp_len; + } + + printstr (stream, elttype, valaddr + offset_aligned, len, 0, + eltlen, options); + } + else + { + fprintf_filtered (stream, "("); + print_optional_low_bound (stream, type, options); + if (TYPE_FIELD_BITSIZE (type, 0) > 0) + val_print_packed_array_elements (type, valaddr, offset_aligned, + 0, stream, recurse, + original_value, options); + else + val_print_array_elements (type, valaddr, offset_aligned, address, + stream, recurse, original_value, + options, 0); + fprintf_filtered (stream, ")"); + } +} + +/* Implement Ada val_print'ing for the case where TYPE is a TYPE_CODE_REF. */ static void @@ -1123,7 +1124,7 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr, break; case TYPE_CODE_ARRAY: - ada_val_print_array (type, valaddr, offset_aligned, + ada_val_print_array (type, valaddr, offset, offset_aligned, address, stream, recurse, original_value, options); return; -- 1.8.3.2