From ebb8ece2ef50ba3f86e8b4ab7a22a4c7734d114b Mon Sep 17 00:00:00 2001 From: Siva Chandra Date: Tue, 9 Sep 2014 06:50:26 -0700 Subject: [PATCH] Fix gnuv3_pass_by_reference to treat dynamic classes as non-trivial. gdb/ChangeLog: * gnu-v3-abi.c (gnuv3_pass_by_reference): Treat dynamic classes as non-trivial. --- gdb/ChangeLog | 5 +++++ gdb/gnu-v3-abi.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c33f6ccfa99..c4f0437606c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-10-15 Siva Chandra Reddy + + * gnu-v3-abi.c (gnuv3_pass_by_reference): Treat dynamic classes + as non-trivial. + 2014-10-15 Siva Chandra Reddy PR c++/13403 diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 558ec06ccfa..a6c6f9fd9c8 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -1281,6 +1281,11 @@ gnuv3_pass_by_reference (struct type *type) && TYPE_CODE (type) != TYPE_CODE_UNION) return 0; + /* A dynamic class has a non-trivial copy constructor. + See c++98 section 12.8 Copying class objects [class.copy]. */ + if (gnuv3_dynamic_class (type)) + return 1; + for (fieldnum = 0; fieldnum < TYPE_NFN_FIELDS (type); fieldnum++) for (fieldelem = 0; fieldelem < TYPE_FN_FIELDLIST_LENGTH (type, fieldnum); fieldelem++) -- 2.39.5