From patchwork Mon Mar 21 20:59:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artemiy Volkov X-Patchwork-Id: 11460 Received: (qmail 76452 invoked by alias); 21 Mar 2016 21:02: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 76365 invoked by uid 89); 21 Mar 2016 21:02:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=5206, (unknown), 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; Mon, 21 Mar 2016 21:02:19 +0000 Received: by mail-lb0-f195.google.com with SMTP id wn5so11989170lbb.2 for ; Mon, 21 Mar 2016 14:02:19 -0700 (PDT) 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=C7FMWmlP8wU/tajswwGzbrcpsbrOooUVs5fN7vn+QLg=; b=CuJI39i5MLhj4xeUbkCrk+vwfhXBEIj861ZYeU2otlInGdqihb59hLqsl559NORhbr IoYl2cLv6yy1+uw0akdTEp+1gMBcxg3DsQ0of+y9G1jxH9ZRd7emhJhKPLlaIxmCmeEB SOuzsJe33YYV48v30iDYNRXj/jJn32JBr9AbctAI8E/8z/POaQdJtDcGD4mGAPGQvYHJ SKhBoi5I64o7Ie5MJnO/X0VkwVshgnhMEC0Kjz6rNYKHx4ZcfpK8QGrbnZ+8zLzl3ZLg YWik9ZCVwLo4pAql+7njRmDFE5rUotEM6XoQtoD84yAav9tpFrqFnUuh3QRfMzQieJTC rV3w== X-Gm-Message-State: AD7BkJI46V5o+COitWEFVMdjn+SSK1YbpZw5BbFhrVuNIesb5u3Pq8EsupjrNXlbeJK9Bw== X-Received: by 10.25.207.204 with SMTP id f195mr11764297lfg.41.1458594136341; Mon, 21 Mar 2016 14:02:16 -0700 (PDT) Received: from arch.smware.local (broadband-90-154-70-182.nationalcablenetworks.ru. [90.154.70.182]) by smtp.gmail.com with ESMTPSA id 40sm4730939lfp.41.2016.03.21.14.02.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 21 Mar 2016 14:02:15 -0700 (PDT) From: Artemiy Volkov To: gdb-patches@sourceware.org Cc: keiths@redhat.com, palves@redhat.com, Artemiy Volkov Subject: [PATCH v4 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Date: Mon, 21 Mar 2016 13:59:12 -0700 Message-Id: <1458593958-25656-6-git-send-email-artemiyv@acm.org> In-Reply-To: <1458593958-25656-1-git-send-email-artemiyv@acm.org> References: <1457147955-21871-1-git-send-email-artemiyv@acm.org> <1458593958-25656-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-21 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 a71c6ad..af891da 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;