Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Artemiy Volkov <artemiyv@acm.org>
To: gdb-patches@sourceware.org
Cc: keiths@redhat.com,	palves@redhat.com,	Artemiy Volkov <artemiyv@acm.org>
Subject: [PATCH v3 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb
Date: Sat, 05 Mar 2016 03:20:00 -0000	[thread overview]
Message-ID: <1457147955-21871-1-git-send-email-artemiyv@acm.org> (raw)
In-Reply-To: <1453229609-20159-1-git-send-email-artemiyv@acm.org>

Hi all,

this is my third 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.

Changes from v2 are numerous coding style fixes, improvements and
simplifications of the changelog, reorganization and reordering of the
patchset, removal of redundant code in gdb/python/*, addition of a couple of
python tests, and a few bugfixes.

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: python: support rvalue references in the gdb module
  gdb: convert lvalue reference type check to general reference type
    check
  gdb: gdbtypes: add rvalue references to overloading resolution
  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                           | 106 +++++++++++++++++++++++++++----
 gdb/gdbtypes.h                           |  20 +++++-
 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                              |  40 ++++++------
 gdb/parser-defs.h                        |   1 +
 gdb/ppc-sysv-tdep.c                      |   7 +-
 gdb/printcmd.c                           |   2 +-
 gdb/python/lib/gdb/command/explore.py    |   2 +-
 gdb/python/lib/gdb/types.py              |   4 +-
 gdb/python/py-type.c                     |  14 ++--
 gdb/python/py-value.c                    |  16 +++--
 gdb/python/py-xmethods.c                 |  14 ++--
 gdb/s390-linux-tdep.c                    |   2 +-
 gdb/sparc-tdep.c                         |   1 +
 gdb/sparc64-tdep.c                       |   1 +
 gdb/spu-tdep.c                           |   1 +
 gdb/stabsread.c                          |   3 +-
 gdb/symtab.c                             |   3 +-
 gdb/testsuite/gdb.cp/casts.cc            |   8 ++-
 gdb/testsuite/gdb.cp/casts.exp           |  35 ++++++++--
 gdb/testsuite/gdb.cp/cpsizeof.cc         |   4 ++
 gdb/testsuite/gdb.cp/cpsizeof.exp        |   3 +-
 gdb/testsuite/gdb.cp/demangle.exp        |  36 +++++++++++
 gdb/testsuite/gdb.cp/overload.cc         |  14 ++++
 gdb/testsuite/gdb.cp/overload.exp        |  16 ++++-
 gdb/testsuite/gdb.cp/ref-params.cc       |  27 ++++++++
 gdb/testsuite/gdb.cp/ref-params.exp      |  21 +++++-
 gdb/testsuite/gdb.cp/ref-types.cc        |  24 +++++++
 gdb/testsuite/gdb.cp/ref-types.exp       |  92 ++++++++++++++++++++++++++-
 gdb/testsuite/gdb.python/py-value-cc.cc  |   4 ++
 gdb/testsuite/gdb.python/py-value-cc.exp |  10 ++-
 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 +-
 66 files changed, 593 insertions(+), 175 deletions(-)

-- 
2.7.2


  parent reply	other threads:[~2016-03-05  3:20 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-20 22:35 [PATCH " Artemiy Volkov
2015-12-20 22:35 ` [PATCH 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2015-12-20 22:35 ` [PATCH 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2015-12-20 22:35 ` [PATCH 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2015-12-20 22:35 ` [PATCH 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_AT_rvalue_reference type Artemiy Volkov
2015-12-20 22:35 ` [PATCH 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2015-12-20 22:35 ` [PATCH 08/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2015-12-20 22:35 ` [PATCH 10/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2015-12-20 22:35 ` [PATCH 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2015-12-30 19:17   ` Pedro Alves
2015-12-20 22:35 ` [PATCH 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2015-12-20 22:35 ` [PATCH 09/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2015-12-20 22:35 ` [PATCH 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2015-12-28 21:09 ` [PATCH 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Artemiy Volkov
2016-01-20  9:42   ` Yao Qi
2016-01-19 18:54 ` [PATCH v2 " Artemiy Volkov
2016-01-19 18:54   ` [PATCH v2 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-02-19 18:49     ` Keith Seitz
2016-02-23  7:04       ` Artemiy Volkov
2016-02-25  1:22         ` Keith Seitz
2016-02-25  1:32           ` Artemiy Volkov
2016-02-25  1:41             ` Keith Seitz
2016-02-25  1:45               ` Artemiy Volkov
2016-01-19 18:54   ` [PATCH v2 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-02-19 18:52     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-02-19 18:56     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-02-19 18:50     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-02-19 18:54     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-02-19 18:53     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 09/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-02-19 19:46     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 08/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-02-19 19:01     ` Keith Seitz
2016-02-26  5:08       ` Artemiy Volkov
2016-01-19 18:55   ` [PATCH v2 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_AT_rvalue_reference type Artemiy Volkov
2016-02-19 18:57     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-02-19 20:05     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 10/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-02-19 19:48     ` Keith Seitz
2016-02-19 18:49   ` [PATCH v2 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Keith Seitz
2016-02-23  6:04     ` Artemiy Volkov
2016-03-05  3:20   ` Artemiy Volkov [this message]
2016-03-05  3:20     ` [PATCH v3 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-03-16 22:22       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 10/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-03-16 22:45       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-03-16 22:48       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-03-16 22:23       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_AT_rvalue_reference type Artemiy Volkov
2016-03-16 22:28       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 09/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-03-16 22:41       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-03-16 22:08       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-03-16 22:26       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 08/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-03-16 22:32       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-03-16 22:19       ` Keith Seitz
2016-03-20 12:10         ` Artemiy Volkov
2016-03-05  3:20     ` [PATCH v3 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-03-16 22:25       ` Keith Seitz
2016-03-21 21:02     ` [PATCH v4 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 08/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-03-31 20:35         ` Keith Seitz
2016-04-02  8:28           ` Artemiy Volkov
2016-04-02  8:45             ` Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_TAG_rvalue_reference type Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-03-21 21:03       ` [PATCH v4 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-03-21 21:03       ` [PATCH v4 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-03-21 21:03       ` [PATCH v4 09/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-03-31 20:37         ` Keith Seitz
2016-04-02  8:42           ` Artemiy Volkov
2016-03-21 21:15       ` [PATCH v4 10/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-03-31 20:35       ` [PATCH v4 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Keith Seitz
2016-04-02  8:48         ` Artemiy Volkov
2016-04-05 18:23           ` Pedro Alves
     [not found]             ` <20160406083016.GA31849@gmail.com>
2016-04-12 11:49               ` Pedro Alves
2016-04-19 15:51                 ` Artemiy Volkov
2016-04-22 11:31                   ` Pedro Alves
2016-06-06 19:22       ` [PATCH v5 00/11] [PR gdb/14441] Support C++11 " Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_TAG_rvalue_reference type Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-06-20 19:04           ` Pedro Alves
2016-06-06 19:23         ` [PATCH v5 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 08/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-06-20 19:07           ` Pedro Alves
2016-06-06 19:23         ` [PATCH v5 09/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 10/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-06-19 15:08         ` [PATCH v5 00/11] [PR gdb/14441] Support C++11 rvalue references in gdb Artemiy Volkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1457147955-21871-1-git-send-email-artemiyv@acm.org \
    --to=artemiyv@acm.org \
    --cc=gdb-patches@sourceware.org \
    --cc=keiths@redhat.com \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox