From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32647 invoked by alias); 4 Oct 2005 07:02:26 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 32629 invoked by uid 22791); 4 Oct 2005 07:02:22 -0000 Received: from s142-179-108-108.bc.hsia.telus.net (HELO takamaka.act-europe.fr) (142.179.108.108) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Tue, 04 Oct 2005 07:02:22 +0000 Received: by takamaka.act-europe.fr (Postfix, from userid 507) id 2EBFF47E74; Tue, 4 Oct 2005 00:02:20 -0700 (PDT) Date: Tue, 04 Oct 2005 07:02:00 -0000 From: Joel Brobecker To: gdb-patches@sources.redhat.com Subject: Re: [RFA] print arrays with indexes Message-ID: <20051004070220.GZ8849@adacore.com> References: <20050920073058.GR2496@adacore.com> <20050920193132.GY2496@adacore.com> <20050920193339.GA28294@nevyn.them.org> <20050920193918.GB10186@adacore.com> <20050922164622.GF5841@adacore.com> <20050926012259.GA22284@nevyn.them.org> <20050927010420.GW922@adacore.com> <20051002224218.GA3083@nevyn.them.org> <20051003061733.GL938@adacore.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20051003061733.GL938@adacore.com> User-Agent: Mutt/1.4i X-SW-Source: 2005-10/txt/msg00041.txt.bz2 Hmmmm, I was working on transforming one of our internal testcase (which uses Ada) for the patch below into a dejagnu testcase. It should all be smooth since I did the testing manually with the patch below, but it appears I missed something. I'm seeing some unexpected failures. > 2005-10-02 Joel Brobecker > > * language.h (language_defn): New field la_print_array_index. > (LA_PRINT_ARRAY_INDEX): New macro. > (default_print_array_index): Add declaration. > * language.c (default_print_array_index): new function. > (unknown_language): Add value for new field. > (auto_language): Likewise. > (local_language): Likewise. > * ada-lang.c (ada_print_array_index): New function. > (ada_language_defn): Add value for new field. > * c-lang.c (c_language_defn): Likewise. > (cpluc_language_defn): Likewise. > (asm_language_defn): Likewise. > (minimal_language_defn): Likewise. > * f-lang.c (f_language_defn): Likewise. > * jv-lang.c (java_language_defn): Likewise. > * m2-lang.c (m2_language_defn): Likewise. > * objc-lang.c (objc_language_defn): Likewise. > * p-lang.c (pascal_language_defn): Likewise. > * scm-lang.c (scm_language_defn): Likewise. > * valprint.h (print_array_indexes_p): Add declaration. > (get_array_low_bound): Add declaration. > (maybe_print_array_index): Add declaration. > * valprint.c (print_array_indexes): New static variable. > (show_print_array_indexes): New function. > (print_array_indexes_p): New function. > (get_array_low_bound): New function. > (maybe_print_array_index): New function. > (val_print_array_elements): Print the index of each element if > requested by the user. > (_initialize_valprint): Add new array-indexes "set/show print" command. > * ada-valprint.c (print_optional_low_bound): Replace extracted code > by call to ada_get_array_low_bound_and_type(). Stop printing the low > bound if indexes will be printed for all elements of the array. > (val_print_packed_array_elements): Print the index of each element > of the array if necessary. Issues: 1. I now understand the why of the if (TYPE_CODE (index_type) == RANGE_TYPE) index_type = TYPE_TARGET_TYPE (index_type) But this is an Ada-specific thing, and I'll take care of this in a separate patch. And I'll add a testcase as a bonus. 2. More annoying, I just tried something else, which is to print an empty Ada array. Ada allows you to create this by using declarations such as this: Table : array (1 .. 0) of Integer; Basically, if the lower/left bound is greater than the right/higher bound, then the array is empty. I just discovered that ada_val_print_1 calls val_print_array_elements even if the array is empty. This triggers one of the guards in get_array_low_bound(), since the function expects a non-empty array. I'm happy to just put a check in the Ada part to avoid calling val_print_array_elements for empty arrays. This should be fine, but I'm wondering if other languages might be doing the same, in which case it's probably going to be safer to modify a bit val_print_array_elements to handle empty arrays... Sorry about that... -- Joel