From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7301 invoked by alias); 19 Jan 2016 18:54:18 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 7232 invoked by uid 89); 19 Jan 2016 18:54:18 -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=8277, finder, H*RU:209.85.215.67, Hx-spam-relays-external:209.85.215.67 X-HELO: mail-lf0-f67.google.com Received: from mail-lf0-f67.google.com (HELO mail-lf0-f67.google.com) (209.85.215.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 19 Jan 2016 18:54:11 +0000 Received: by mail-lf0-f67.google.com with SMTP id n70so30063613lfn.1 for ; Tue, 19 Jan 2016 10:54:11 -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=M+JIHyBMEigTZ2AsOcygJZcVrAkLY3txoh80zY5IfjI=; b=MUfWB5+zovCNsRqpM6mMSsZ5M8oFqCCZTwW1GpqBZfK6dkCo5f8cHNLSt2XWpACAMn hmu6cEHlMAZ1zMqmEat7WIbVUlXI4aA7SNogabgfq7i1GnFCBS9K8vBKdhSwHTVzaN79 GnfVIB2qA+wAHjh51xmtV3Y7GFsD/RNmzty5mJvDonKYqvsY5xLOt9afEuXUNfNL/rDK GsnmzhETYhZ83+xnOTQt9xlU9lkEFlFYBsKmj3MkS1j5/8DmdCxFTVXxZOkz80qZLs2w wgSmph2V2i7apdHR5AEHsI5RXM9oQxt/o1zShoCkwplLO7WG34PENIDUUcOOrVt3BLXO d2rw== X-Gm-Message-State: ALoCoQmd9ULuHWgof9OjgE1divY0oNMGq14d1j5bZnHacy1JIAF9jRLtGj6oawBM599edmW7kUVlNGmfAKmkNLjnDL53SSH9YQ== X-Received: by 10.25.20.104 with SMTP id k101mr11664378lfi.12.1453229648383; Tue, 19 Jan 2016 10:54:08 -0800 (PST) Received: from arch.smware.local ([37.204.1.155]) by smtp.gmail.com with ESMTPSA id p66sm4247278lfe.42.2016.01.19.10.54.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 19 Jan 2016 10:54:07 -0800 (PST) From: Artemiy Volkov To: gdb-patches@sourceware.org Cc: palves@redhat.com, Artemiy Volkov Subject: [PATCH v2 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Date: Tue, 19 Jan 2016 18:54:00 -0000 Message-Id: <1453229609-20159-6-git-send-email-artemiyv@acm.org> In-Reply-To: <1453229609-20159-1-git-send-email-artemiyv@acm.org> References: <1450661481-31178-1-git-send-email-artemiyv@acm.org> <1453229609-20159-1-git-send-email-artemiyv@acm.org> X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg00455.txt.bz2 This patch fixes demangling of names containing rvalue reference typenames by handling DEMANGLE_COMPONENT_RVALUE_REFERENCE demangle component. ./ChangeLog: 2016-01-19 Artemiy Volkov * gdb/cp-name-parser.y: Handle the '&&' token in typename. * gdb/cp-support.c (replace_typedefs): Handle DEMANGLE_COMPONENT_RVALUE_REFERENCE. * gdb/python/py-type.c (typy_lookup_type): Likewise. --- gdb/cp-name-parser.y | 4 ++++ gdb/cp-support.c | 1 + gdb/python/py-type.c | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) 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 385cb53..a66f7ba 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) { @@ -827,7 +828,10 @@ typy_lookup_type (struct demangle_component *demangled, switch (demangled_type) { case DEMANGLE_COMPONENT_REFERENCE: - rtype = lookup_lvalue_reference_type (type); + 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); -- 2.7.0