From patchwork Sat Mar 5 03:19:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artemiy Volkov X-Patchwork-Id: 11214 Received: (qmail 106533 invoked by alias); 5 Mar 2016 03:20:52 -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 105799 invoked by uid 89); 5 Mar 2016 03:20:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=comp, finder X-HELO: mail-lb0-f195.google.com Received: from mail-lb0-f195.google.com (HELO mail-lb0-f195.google.com) (209.85.217.195) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sat, 05 Mar 2016 03:20:21 +0000 Received: by mail-lb0-f195.google.com with SMTP id vk4so6499584lbb.1 for ; Fri, 04 Mar 2016 19:20:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=eZLiudyhsUfAg34FQO1ea/+oLgBCnfm8egD6o/r+tdU=; b=ZJzFIZ/sgOJ69adOuHnmeGHKYF4DdqLrL+stbXZkCvonukOMnQP4Pn4B3kkkhDOGjy GigyjsOzcMV0S83dJ37ElgTDK35lK1VqIgnnbsNqLJlHniJJKp4iTaWlAOKafNxx0YhI rbI1CDxWVRFoUGiwfEq5uU19jPBaKG7wNgVQRNLkQ05kH0U4rEDIQ1YK6ksIUFBWmK9S UzsRsKgtZMp3EzQR3B4SejJZJY1djYjBrt5kQXyajdMGOx9U4N2wbWqtoAY3WHiU0bXn pDDUAcLX/lIoPftzHr91AW2hDKJuBchzIAFRZn27ONNlqDGFMECSrN8LhDUvtkCvp6KF Pixw== X-Gm-Message-State: AD7BkJIblLGDvQVR7TnlX99wDzo9SeLD/2SkhofcGWaQmgng0V3/x/ggivf8Le8+5RVfBQ== X-Received: by 10.25.41.140 with SMTP id p134mr4636737lfp.15.1457148017973; Fri, 04 Mar 2016 19:20:17 -0800 (PST) Received: from arch.smware.local (108-60-110-19.static.wiline.com. [108.60.110.19]) by smtp.gmail.com with ESMTPSA id jr10sm1020677lbc.42.2016.03.04.19.20.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 04 Mar 2016 19:20:17 -0800 (PST) From: Artemiy Volkov To: gdb-patches@sourceware.org Cc: keiths@redhat.com, palves@redhat.com, Artemiy Volkov Subject: [PATCH v3 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Date: Fri, 4 Mar 2016 19:19:09 -0800 Message-Id: <1457147955-21871-6-git-send-email-artemiyv@acm.org> In-Reply-To: <1457147955-21871-1-git-send-email-artemiyv@acm.org> References: <1453229609-20159-1-git-send-email-artemiyv@acm.org> <1457147955-21871-1-git-send-email-artemiyv@acm.org> X-IsSubscribed: yes This patch fixes demangling of names containing rvalue reference typenames by handling DEMANGLE_COMPONENT_RVALUE_REFERENCE demangle component. gdb/ChangeLog: 2016-03-04 Artemiy Volkov * cp-name-parser.y (ptr_operator): Handle the '&&' token in typename. * cp-support.c (replace_typedefs): Handle DEMANGLE_COMPONENT_RVALUE_REFERENCE. * python/py-type.c (typy_lookup_type): Likewise. --- gdb/cp-name-parser.y | 4 ++++ gdb/cp-support.c | 1 + gdb/python/py-type.c | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index c6a5c34..33fdcea 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -769,6 +769,10 @@ ptr_operator : '*' qualifiers_opt { $$.comp = make_empty (DEMANGLE_COMPONENT_REFERENCE); $$.comp->u.s_binary.left = $$.comp->u.s_binary.right = NULL; $$.last = &d_left ($$.comp); } + | ANDAND + { $$.comp = make_empty (DEMANGLE_COMPONENT_RVALUE_REFERENCE); + $$.comp->u.s_binary.left = $$.comp->u.s_binary.right = NULL; + $$.last = &d_left ($$.comp); } | nested_name '*' qualifiers_opt { $$.comp = make_empty (DEMANGLE_COMPONENT_PTRMEM_TYPE); $$.comp->u.s_binary.left = $1.comp; diff --git a/gdb/cp-support.c b/gdb/cp-support.c index df127c4..1dde382 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -520,6 +520,7 @@ replace_typedefs (struct demangle_parse_info *info, case DEMANGLE_COMPONENT_RESTRICT_THIS: case DEMANGLE_COMPONENT_POINTER: case DEMANGLE_COMPONENT_REFERENCE: + case DEMANGLE_COMPONENT_RVALUE_REFERENCE: replace_typedefs (info, d_left (ret_comp), finder, data); break; diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index 6103a2b..4ec920e 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -811,6 +811,7 @@ typy_lookup_type (struct demangle_component *demangled, if (demangled_type == DEMANGLE_COMPONENT_POINTER || demangled_type == DEMANGLE_COMPONENT_REFERENCE + || demangled_type == DEMANGLE_COMPONENT_RVALUE_REFERENCE || demangled_type == DEMANGLE_COMPONENT_CONST || demangled_type == DEMANGLE_COMPONENT_VOLATILE) { @@ -829,6 +830,9 @@ typy_lookup_type (struct demangle_component *demangled, case DEMANGLE_COMPONENT_REFERENCE: rtype = lookup_lvalue_reference_type (type); break; + case DEMANGLE_COMPONENT_RVALUE_REFERENCE: + rtype = lookup_rvalue_reference_type (type); + break; case DEMANGLE_COMPONENT_POINTER: rtype = lookup_pointer_type (type); break;