From patchwork Fri Dec 15 09:47:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Brobecker X-Patchwork-Id: 24960 Received: (qmail 4352 invoked by alias); 15 Dec 2017 09:48:29 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 116524 invoked by uid 89); 15 Dec 2017 09:48:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=sadly, Identity 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 ESMTP; Fri, 15 Dec 2017 09:48:01 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 2454F116C60; Fri, 15 Dec 2017 04:48:00 -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 pmleQcZf652O; Fri, 15 Dec 2017 04:48:00 -0500 (EST) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 9F1F1116C59; Fri, 15 Dec 2017 04:47:59 -0500 (EST) Received: by joel.gnat.com (Postfix, from userid 1000) id 2EC73809B7; Fri, 15 Dec 2017 13:47:55 +0400 (+04) Date: Fri, 15 Dec 2017 13:47:55 +0400 From: Joel Brobecker To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [RFC] regresssion(internal-error) printing subprogram argument Message-ID: <20171215094755.dwocipbcwvtdm6f6@adacore.com> References: <20171213103655.msbaxfrykc36f4a7@adacore.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) > Reading back the patch on the list, I realized that this must be > fixing "maint check-psymtabs" for Ada. And indeed, without my > patch, I get here: > > $ gdb ./testsuite/outputs/gdb.ada/var_arr_typedef/var_arr_typedef > (gdb) start > ... > (gdb) maint check-psymtabs > Global symbol `adaS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab > Global symbol `interfacesS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab > Global symbol `packB' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab > Global symbol `packS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab > Global symbol `systemS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab > Global symbol `var_arr_typedefB' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab > (gdb) > > After: > > (gdb) start > ... > (gdb) maint check-psymtabs > (gdb > > Looks like we only test that command for C, currently... Good point! Here is a commit which adds a testcase. Sadly, unlike you, I still get an error: (gdb) maintenance check-psymtabs Global symbol `interfaces__cS' only found in /[...]/maint_with_ada/b~var_arr_typedef.adb psymtab I am not sure why this is happening just yet; the symbol, at first, looked like it had an interesting feature, which is both a DW_AT_name and a DW_AT_linkage name: <1>: Abbrev Number: 35 (DW_TAG_variable) DW_AT_name : (indirect string, offset: 0x476): ada_main__u00047 DW_AT_decl_file : 5 DW_AT_decl_line : 132 DW_AT_linkage_name: (indirect string, offset: 0x1b7e): interfaces__cS DW_AT_type : <0x79> DW_AT_external : 1 DW_AT_location : 9 byte block: 3 20 1 0 0 0 0 0 0 (DW_OP_addr: 120) However, there are plenty of other similar symbols, for instance: <1>: Abbrev Number: 35 (DW_TAG_variable) DW_AT_name : (indirect string, offset: 0x4b9): ada_main__u00049 DW_AT_decl_file : 5 DW_AT_decl_line : 136 DW_AT_linkage_name: (indirect string, offset: 0x17cc): system__bounded_stringsS DW_AT_type : <0x79> DW_AT_external : 1 DW_AT_location : 9 byte block: 3 28 1 0 0 0 0 0 0 (DW_OP_addr: 128) So I'm still not sure what makes interfaces__cS special. I will look into it when I have a chance... From e0a28e2429b23fd03723be5ab2833ea4aeece19a Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Fri, 15 Dec 2017 04:38:39 -0500 Subject: [PATCH] gdb.ada/maint_with_ada.exp: New testcase --- gdb/testsuite/gdb.ada/maint_with_ada.exp | 37 ++++++++++++++++++++++ gdb/testsuite/gdb.ada/maint_with_ada/pack.adb | 25 +++++++++++++++ gdb/testsuite/gdb.ada/maint_with_ada/pack.ads | 29 +++++++++++++++++ .../gdb.ada/maint_with_ada/var_arr_typedef.adb | 28 ++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 gdb/testsuite/gdb.ada/maint_with_ada.exp create mode 100644 gdb/testsuite/gdb.ada/maint_with_ada/pack.adb create mode 100644 gdb/testsuite/gdb.ada/maint_with_ada/pack.ads create mode 100644 gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb diff --git a/gdb/testsuite/gdb.ada/maint_with_ada.exp b/gdb/testsuite/gdb.ada/maint_with_ada.exp new file mode 100644 index 0000000..9ede035 --- /dev/null +++ b/gdb/testsuite/gdb.ada/maint_with_ada.exp @@ -0,0 +1,37 @@ +# Copyright 2015-2017 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +load_lib "ada.exp" + +standard_ada_testfile var_arr_typedef + +if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } { + return -1 +} + +clean_restart ${testfile} + +# Insert a breakpoint in each compilation unit, to force their psymtab's +# expansion to a full symtab. This will allow the check-psymtabs command +# to perform a more extensive check regarding those units which are in +# Ada. + +gdb_breakpoint "adainit" +gdb_breakpoint "Var_Arr_Typedef" +gdb_breakpoint "Do_Nothing" + +gdb_test_no_output "maintenance check-psymtabs" + +gdb_test_no_output "maintenance check-symtabs" diff --git a/gdb/testsuite/gdb.ada/maint_with_ada/pack.adb b/gdb/testsuite/gdb.ada/maint_with_ada/pack.adb new file mode 100644 index 0000000..dc6c732 --- /dev/null +++ b/gdb/testsuite/gdb.ada/maint_with_ada/pack.adb @@ -0,0 +1,25 @@ +-- Copyright 2015-2017 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Pack is + + function Identity (I : Integer) return Integer is + begin + return I; + end Identity; + + procedure Do_Nothing (A : Array_Type) is null; + +end Pack; diff --git a/gdb/testsuite/gdb.ada/maint_with_ada/pack.ads b/gdb/testsuite/gdb.ada/maint_with_ada/pack.ads new file mode 100644 index 0000000..efd73a4 --- /dev/null +++ b/gdb/testsuite/gdb.ada/maint_with_ada/pack.ads @@ -0,0 +1,29 @@ +-- Copyright 2015-2017 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Pack is + type Rec_Type is record + I : Integer; + B : Boolean; + end record; + + type Vec_Type is array (1 .. 4) of Rec_Type; + + type Array_Type is array (Positive range <>) of Vec_Type; + + procedure Do_Nothing (A : Array_Type); + function Identity (I : Integer) return Integer; + +end Pack; diff --git a/gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb b/gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb new file mode 100644 index 0000000..224e78f --- /dev/null +++ b/gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb @@ -0,0 +1,28 @@ +-- Copyright 2015-2017 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Pack; use Pack; + +procedure Var_Arr_Typedef is + RA : constant Rec_Type := (3, False); + RB : constant Rec_Type := (2, True); + + VA : constant Vec_Type := (RA, RA, RB, RB); + VB : constant Vec_Type := (RB, RB, RA, RA); + + A : constant Array_Type (1 .. Identity (4)) := (VA, VA, VB, VB); +begin + Do_Nothing (A); -- BREAK +end Var_Arr_Typedef; -- 2.1.4