From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id F01B43896C17 for ; Thu, 11 Mar 2021 17:56:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F01B43896C17 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-512-myLgfWFROCG9NrF11yxE2Q-1; Thu, 11 Mar 2021 12:56:30 -0500 X-MC-Unique: myLgfWFROCG9NrF11yxE2Q-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 767871015C84; Thu, 11 Mar 2021 17:56:29 +0000 (UTC) Received: from localhost (unknown [10.33.36.30]) by smtp.corp.redhat.com (Postfix) with ESMTP id F236A5D742; Thu, 11 Mar 2021 17:56:28 +0000 (UTC) Date: Thu, 11 Mar 2021 17:56:28 +0000 From: Jonathan Wakely To: "Hoyer, David" Cc: libstdc++ , gcc-patches@gcc.gnu.org Subject: Re: printers.py issue Message-ID: <20210311175628.GF3008@redhat.com> References: <20210304114719.GW3008@redhat.com> <20210304145728.GX3008@redhat.com> MIME-Version: 1.0 In-Reply-To: X-Clacks-Overhead: GNU Terry Pratchett X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="FUFe+yI/t+r3nyH4" Content-Disposition: inline X-Spam-Status: No, score=-14.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Mar 2021 17:56:36 -0000 --FUFe+yI/t+r3nyH4 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline On 10/03/21 16:57 +0000, Hoyer, David wrote: >I wanted to finally follow up on these issues I reported. > >On issue 1, the patch you provided did fix the problem Thanks for confirming. It's committed to the master branch now (as attached to this mail). I also plan to backport it to the active release branches later. >On issue 2, I changed our python script to convert it to a string and it now works! Great. I think it's correct that those constructor methods expect strings for the 'typename' parameter. --FUFe+yI/t+r3nyH4 Content-Type: text/x-patch; charset=us-ascii Content-Disposition: attachment; filename="patch.txt" commit 9dacc828bf8b087ddfaf797ed7238da45609082c Author: Jonathan Wakely Date: Thu Mar 11 16:48:32 2021 libstdc++: Fix find_type helper to work consistently The find_type helper function sometimes results in "class X::name" and lookup for that fails. For more details see "Problem 1" in https://gcc.gnu.org/pipermail/libstdc++/2021-March/052132.html and the example at https://sourceware.org/bugzilla/show_bug.cgi?id=27510#c2 This patch replaces typ.unqualified() with typ.tag, which is never qualified, and will never include the 'class' or 'struct' keywords. Using the .tag attribute should be safe here because we know we are looking at a class type and we've already used strip_typedefs(). libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py (find_type): Use tag attribute instead of unqualified() method. diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py index 00db6cb4e82..550e0ecdd22 100644 --- a/libstdc++-v3/python/libstdcxx/v6/printers.py +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py @@ -85,8 +85,8 @@ except ImportError: def find_type(orig, name): typ = orig.strip_typedefs() while True: - # Strip cv-qualifiers. PR 67440. - search = '%s::%s' % (typ.unqualified(), name) + # Use Type.tag to ignore cv-qualifiers. PR 67440. + search = '%s::%s' % (typ.tag, name) try: return gdb.lookup_type(search) except RuntimeError: --FUFe+yI/t+r3nyH4--