From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6221 invoked by alias); 19 Jan 2016 18:54:08 -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 6192 invoked by uid 89); 19 Jan 2016 18:54:07 -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=contemporary, consisted, 182, UD:symtab.c X-HELO: mail-lf0-f68.google.com Received: from mail-lf0-f68.google.com (HELO mail-lf0-f68.google.com) (209.85.215.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 19 Jan 2016 18:54:06 +0000 Received: by mail-lf0-f68.google.com with SMTP id z62so14464317lfd.0 for ; Tue, 19 Jan 2016 10:54:05 -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=uq98MfamtVtDGTtd9la/bRuomAMZxcPnfEFgr1PTYW8=; b=BE0H61uQt1NVnRbyrNU5qEB58NZ2JNlcssN8YU7UJamODJQC1qd1vwf1aGbnyL5Pxm DpAS4VXqhsWc4Cl9Ga0sFL1sfLtEn7sKycHPzWpIM1uPpIx8qHQoRm9IRXvw/3VUhJ4c gbn91QXmXO8gSVk0MgNWH3Q0sA/NQCm3YuU01oPyiMmXUJWwIxXE2Sam2kc+ReJliVM7 fRbxbCYc3QCgcnJ0ikb7DlCwxWV+0GZx93n0SY0VOvxqLOB7alR3E+PDCqgv/h8cgKvo r2tinUVzialoiAjSeF1yXNEVTWPQMknl51NQkPikwvHXThNVyi9h/N28zKIlF8UtH5sG lnZg== X-Gm-Message-State: ALoCoQlzpGkNDAC9f1BfM8XFuNvc/1DxS21lYaKP0gyg/a7JTR46wSICtYdolRU6RblFArQT9hkS7w3UxSaV6d5oosGERBOTwQ== X-Received: by 10.25.205.76 with SMTP id d73mr11291890lfg.76.1453229642584; Tue, 19 Jan 2016 10:54:02 -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.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 19 Jan 2016 10:54:01 -0800 (PST) From: Artemiy Volkov To: gdb-patches@sourceware.org Cc: palves@redhat.com, Artemiy Volkov Subject: [PATCH v2 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Date: Tue, 19 Jan 2016 18:54:00 -0000 Message-Id: <1453229609-20159-1-git-send-email-artemiyv@acm.org> In-Reply-To: <1450661481-31178-1-git-send-email-artemiyv@acm.org> References: <1450661481-31178-1-git-send-email-artemiyv@acm.org> X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg00449.txt.bz2 Hi all, this is my second take on fixing gdb/14441 which deals with C++0x rvalue references. The approach is rather straightforward and the work for the most part consisted of mimicking the behavior for regular references. In gdbtypes.c, several helper functions were introduced and some parameterized by the reference kind to simplify the access to reference type objects API. The only interesting part is the addition of overloading resolution rules with regard to rvalue references. All of the cases introduced in 13.3.3.1.4 and 13.3.3.2 were accounted for at the beginning of rank_one_type(). With this patch it is now also possible to fix the evaluation of decltype, which should return a plain type object, an lvalue reference or an rvalue reference depending on a type category of the type of its operand. However, this would require introduction of the type catyegory notion to gdb, which I think only needs adding a new constant to lval_type and propagating the type category through different parts of an expression in gdb/valops.c. I'm willing to do this if this patchset turns out to be OK. Changes from v1 consist of dropping the libiberty part of 05/11 and the consequent testsuite changes. I have learned that introducing rvalue reference support to the demangler in cplus-dem.c is completely unnecessary, since virtually all contemporary compilers generate symbol names handled in cp-demangle.c. Therefore I have removed some of the testcases in gdb.cp/demangle.exp and switched the others to use the gnu-v3 demangling style. Artemiy Volkov (11): gdb: gdbtypes: add definitions for rvalue reference type gdb: gdbtypes: change {lookup,make}_reference_type() API gdb: valops: add ability to return rvalue reference values from value_ref() gdb: parse: support rvalue reference type gdb: demangle: implement demangling for rvalue reference typenames gdb: print: implement correct printing of rvalue reference types and values gdb: dwarf2read: support DW_AT_rvalue_reference type gdb: convert lvalue reference type check to general reference type check gdb: gdbtypes: add rvalue references to overloading resolution gdb: python: support rvalue references in the gdb module gdb: testsuite: add rvalue reference tests gdb/aarch64-tdep.c | 5 +- gdb/ada-lang.c | 2 +- gdb/amd64-tdep.c | 2 +- gdb/amd64-windows-tdep.c | 1 + gdb/arm-tdep.c | 5 +- gdb/ax-gdb.c | 2 + gdb/c-exp.y | 6 +- gdb/c-typeprint.c | 10 ++- gdb/c-valprint.c | 13 ++-- gdb/c-varobj.c | 10 +-- gdb/compile/compile-c-symbols.c | 2 +- gdb/completer.c | 3 +- gdb/cp-name-parser.y | 4 + gdb/cp-support.c | 3 +- gdb/darwin-nat-info.c | 2 +- gdb/dwarf2loc.c | 4 +- gdb/dwarf2read.c | 15 +++- gdb/eval.c | 16 ++-- gdb/f-exp.y | 2 +- gdb/findvar.c | 6 +- gdb/gdbtypes.c | 96 ++++++++++++++++++++---- gdb/gdbtypes.h | 21 +++++- gdb/guile/scm-type.c | 2 +- gdb/guile/scm-value.c | 2 +- gdb/hppa-tdep.c | 1 + gdb/infcall.c | 5 +- gdb/language.c | 3 +- gdb/m32c-tdep.c | 8 +- gdb/m88k-tdep.c | 1 + gdb/mn10300-tdep.c | 1 + gdb/msp430-tdep.c | 2 +- gdb/parse.c | 41 +++++----- gdb/parser-defs.h | 1 + gdb/ppc-sysv-tdep.c | 10 +-- gdb/printcmd.c | 4 +- gdb/python/lib/gdb/command/explore.py | 21 ++++++ gdb/python/lib/gdb/types.py | 4 +- gdb/python/py-type.c | 14 ++-- gdb/python/py-value.c | 45 ++++++++--- gdb/python/py-xmethods.c | 19 ++++- gdb/s390-linux-tdep.c | 2 +- gdb/sparc-tdep.c | 1 + gdb/sparc64-tdep.c | 1 + gdb/spu-tdep.c | 1 + gdb/stabsread.c | 2 +- gdb/symtab.c | 3 +- gdb/testsuite/gdb.cp/casts.cc | 8 +- gdb/testsuite/gdb.cp/casts.exp | 34 ++++++++- gdb/testsuite/gdb.cp/cpsizeof.cc | 4 + gdb/testsuite/gdb.cp/cpsizeof.exp | 2 +- gdb/testsuite/gdb.cp/demangle.exp | 41 +++++++++- gdb/testsuite/gdb.cp/overload.cc | 9 +++ gdb/testsuite/gdb.cp/overload.exp | 14 +++- gdb/testsuite/gdb.cp/ref-params.cc | 29 +++++++- gdb/testsuite/gdb.cp/ref-params.exp | 20 ++++- gdb/testsuite/gdb.cp/ref-types.cc | 24 ++++++ gdb/testsuite/gdb.cp/ref-types.exp | 136 +++++++++++++++++++++++++++++++++- gdb/typeprint.c | 4 +- gdb/valarith.c | 6 +- gdb/valops.c | 68 +++++++++-------- gdb/valprint.c | 5 +- gdb/value.c | 12 +-- gdb/value.h | 2 +- gdb/varobj.c | 2 +- 64 files changed, 662 insertions(+), 182 deletions(-) -- 2.7.0