From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ms9.webland.ch (ms9.webland.ch [92.43.217.109]) by sourceware.org (Postfix) with ESMTPS id 905CA3857424 for ; Wed, 22 Jun 2022 15:38:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 905CA3857424 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=indel.ch Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ms9.webland.ch Received: from macserver.private ([77.58.17.252]) by ms9.webland.ch (12.3.0 build 2 x64) with ASMTP id 01202206221738278365 for ; Wed, 22 Jun 2022 17:38:27 +0200 Received: from localhost (localhost [127.0.0.1]) by macserver.private (Postfix) with ESMTP id 838794C9FDE3; Wed, 22 Jun 2022 17:38:26 +0200 (CEST) X-Virus-Scanned: amavisd-new at indel.ch Received: from macserver.private ([127.0.0.1]) by localhost (macserver.private [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id C1lKrxmy6DHe; Wed, 22 Jun 2022 17:38:26 +0200 (CEST) Received: from localhost.localdomain (unknown [192.168.1.109]) by macserver.private (Postfix) with ESMTP id 5B4D34C9FDDC; Wed, 22 Jun 2022 17:38:26 +0200 (CEST) From: Christian Walther To: gdb-patches@sourceware.org Cc: Christian Walther Subject: [PATCH v2 1/2] Fix number of children of varobj with stub debug info Date: Wed, 22 Jun 2022 17:37:39 +0200 Message-Id: <20220622153740.176590-1-walther@indel.ch> X-Mailer: git-send-email 2.25.1 In-Reply-To: <09601b2b-bb3c-a38a-3bd9-ae06f1c98513@redhat.com> References: <09601b2b-bb3c-a38a-3bd9-ae06f1c98513@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CTCH: RefID="str=0001.0A782F1E.62B33773.0086,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0"; Spam="Unknown"; VOD="Unknown" X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jun 2022 15:38:32 -0000 GDB under some circumstances wrongly reports 'numchild="0"' on a variable object for a pointer to a C++ class instance when the type description from the debug info is a stub that does not include members. The code path is missing a call to check_typedef() to look up the complete type description. This commit adds it. Additional conditions for the bug to occur: 1. "print object" is set to "on" 2. The class has no run-time type identification (no vtable). Debug information of this kind is generated by Clang 13. --- Changes in v2: - fix code style - add second commit to move confusing comment --- gdb/c-varobj.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gdb/c-varobj.c b/gdb/c-varobj.c index 8fecbd57e08..64c3a9ebf1c 100644 --- a/gdb/c-varobj.c +++ b/gdb/c-varobj.c @@ -121,6 +121,7 @@ adjust_value_for_child_access (struct value **value, enclosing_type = value_actual_type (*value, 1, &real_type_found); if (real_type_found) { + enclosing_type = check_typedef (enclosing_type); *type = enclosing_type; *value = value_cast (enclosing_type, *value); } -- 2.25.1