2013-01-01 06:33:28 +00:00
|
|
|
# Copyright 2002-2013 Free Software Foundation, Inc.
|
2002-05-30 19:09:47 +00:00
|
|
|
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
2007-08-23 18:14:19 +00:00
|
|
|
# the Free Software Foundation; either version 3 of the License, or
|
2002-05-30 19:09:47 +00:00
|
|
|
# (at your option) any later version.
|
2007-08-23 18:14:19 +00:00
|
|
|
#
|
2002-05-30 19:09:47 +00:00
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
2007-08-23 18:14:19 +00:00
|
|
|
#
|
2002-05-30 19:09:47 +00:00
|
|
|
# You should have received a copy of the GNU General Public License
|
2007-08-23 18:14:19 +00:00
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2002-05-30 19:09:47 +00:00
|
|
|
|
|
|
|
# Tests for member static data
|
|
|
|
# 2002-05-13 Benjamin Kosnik <bkoz@redhat.com>
|
2002-09-18 18:48:43 +00:00
|
|
|
# 2002-08-22 David Carlton <carlton@math.stanford.edu>
|
2002-05-30 19:09:47 +00:00
|
|
|
|
|
|
|
# This file is part of the gdb testsuite
|
|
|
|
|
|
|
|
if { [skip_cplus_tests] } { continue }
|
|
|
|
|
|
|
|
#
|
|
|
|
# test running programs
|
|
|
|
#
|
|
|
|
|
* gdb.cp/abstract-origin.exp: Use standard_testfile.
* gdb.cp/ambiguous.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/annota2.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/annota3.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/anon-ns.exp: Use standard_testfile.
* gdb.cp/anon-struct.exp: Use standard_testfile.
* gdb.cp/anon-union.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/arg-reference.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/bool.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/breakpoint.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/bs15503.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/call-c.exp: Use standard_testfile, clean_restart,
standard_output_file.
* gdb.cp/casts.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/class2.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/classes.exp: Use standard_testfile, prepare_for_testing.
(test_static_members): Update.
* gdb.cp/cmpd-minsyms.exp: Use standard_testfile.
* gdb.cp/converts.exp: Use standard_testfile.
* gdb.cp/cp-relocate.exp: Use standard_testfile.
* gdb.cp/cpcompletion.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/cpexprs.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/cplabel.exp: Use standard_testfile.
* gdb.cp/cplusfuncs.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/ctti.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/derivation.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/destrprint.exp: Use standard_testfile.
* gdb.cp/dispcxx.exp: Use standard_testfile.
* gdb.cp/exception.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/expand-psymtabs-cxx.exp: Use standard_testfile.
* gdb.cp/extern-c.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/formatted-ref.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/fpointer.exp: Use standard_testfile.
* gdb.cp/gdb1355.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/gdb2384.exp: Use standard_testfile, clean_restart,
standard_output_file.
* gdb.cp/gdb2495.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/hang.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/infcall-dlopen.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/inherit.exp: Use standard_testfile, prepare_for_testing.
(do_tests): Update.
* gdb.cp/koenig.exp: Use standard_testfile.
* gdb.cp/local.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/m-data.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/m-static.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/mb-ctor.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/mb-inline.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/mb-templates.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/member-ptr.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/meth-typedefs.exp: Use standard_testfile.
* gdb.cp/method.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/method2.exp: Use standard_testfile.
* gdb.cp/minsym-fallback.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/misc.exp: Use standard_testfile, prepare_for_testing.
(do_tests): Update.
* gdb.cp/namespace-enum.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/namespace-nested-import.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/namespace.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nextoverthrow.exp: Use standard_testfile.
* gdb.cp/no-dmgl-verbose.exp: Use standard_testfile.
* gdb.cp/nsdecl.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/nsimport.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsnested.exp: Use standard_testfile.
* gdb.cp/nsnoimports.exp: Use standard_testfile.
* gdb.cp/nsrecurs.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsstress.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsusing.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/operator.exp: Use standard_testfile.
* gdb.cp/oranking.exp: Use standard_testfile.
* gdb.cp/overload-const.exp: Use standard_testfile.
* gdb.cp/overload.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/ovldbreak.exp: Use standard_testfile.
* gdb.cp/ovsrch.exp: Use standard_testfile.
* gdb.cp/paren-type.exp: Use standard_testfile.
* gdb.cp/pass-by-ref.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/pr-1023.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr-1210.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr-574.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr10687.exp: Use standard_testfile, clean_restart.
* gdb.cp/pr10728.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/pr12028.exp: Use standard_testfile.
* gdb.cp/pr9067.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr9167.exp: Use standard_testfile.
* gdb.cp/pr9631.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/printmethod.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/psmang.exp: Use standard_testfile, clean_restart.
* gdb.cp/psymtab-parameter.exp: Use standard_testfile.
* gdb.cp/ptype-cv-cp.exp: Use standard_testfile.
* gdb.cp/re-set-overloaded.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/readnow-language.exp: Use standard_testfile.
* gdb.cp/ref-params.exp: Use standard_testfile, build_executable.
(gdb_start_again): Use clean_restart.
* gdb.cp/ref-types.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/rtti.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/shadow.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/smartp.exp: Use standard_testfile.
* gdb.cp/static-method.exp: Use standard_testfile.
* gdb.cp/static-print-quit.exp: Use standard_testfile.
* gdb.cp/temargs.exp: Use standard_testfile.
* gdb.cp/templates.exp: Use standard_testfile,
prepare_for_testing.
(do_tests): Update.
* gdb.cp/try_catch.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/typedef-operator.exp: Use standard_testfile.
* gdb.cp/userdef.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/virtbase.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/virtfunc.exp: Use standard_testfile,
prepare_for_testing.
(do_tests): Update.
* gdb.cp/virtfunc2.exp: Use standard_testfile,
prepare_for_testing.
2012-07-10 15:18:18 +00:00
|
|
|
standard_testfile .cc m-static1.cc
|
2002-05-30 19:09:47 +00:00
|
|
|
|
2012-06-21 20:46:25 +00:00
|
|
|
if [get_compiler_info] {
|
2011-07-02 12:08:44 +00:00
|
|
|
return -1
|
|
|
|
}
|
|
|
|
|
* gdb.cp/abstract-origin.exp: Use standard_testfile.
* gdb.cp/ambiguous.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/annota2.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/annota3.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/anon-ns.exp: Use standard_testfile.
* gdb.cp/anon-struct.exp: Use standard_testfile.
* gdb.cp/anon-union.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/arg-reference.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/bool.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/breakpoint.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/bs15503.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/call-c.exp: Use standard_testfile, clean_restart,
standard_output_file.
* gdb.cp/casts.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/class2.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/classes.exp: Use standard_testfile, prepare_for_testing.
(test_static_members): Update.
* gdb.cp/cmpd-minsyms.exp: Use standard_testfile.
* gdb.cp/converts.exp: Use standard_testfile.
* gdb.cp/cp-relocate.exp: Use standard_testfile.
* gdb.cp/cpcompletion.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/cpexprs.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/cplabel.exp: Use standard_testfile.
* gdb.cp/cplusfuncs.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/ctti.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/derivation.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/destrprint.exp: Use standard_testfile.
* gdb.cp/dispcxx.exp: Use standard_testfile.
* gdb.cp/exception.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/expand-psymtabs-cxx.exp: Use standard_testfile.
* gdb.cp/extern-c.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/formatted-ref.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/fpointer.exp: Use standard_testfile.
* gdb.cp/gdb1355.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/gdb2384.exp: Use standard_testfile, clean_restart,
standard_output_file.
* gdb.cp/gdb2495.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/hang.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/infcall-dlopen.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/inherit.exp: Use standard_testfile, prepare_for_testing.
(do_tests): Update.
* gdb.cp/koenig.exp: Use standard_testfile.
* gdb.cp/local.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/m-data.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/m-static.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/mb-ctor.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/mb-inline.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/mb-templates.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/member-ptr.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/meth-typedefs.exp: Use standard_testfile.
* gdb.cp/method.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/method2.exp: Use standard_testfile.
* gdb.cp/minsym-fallback.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/misc.exp: Use standard_testfile, prepare_for_testing.
(do_tests): Update.
* gdb.cp/namespace-enum.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/namespace-nested-import.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/namespace.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nextoverthrow.exp: Use standard_testfile.
* gdb.cp/no-dmgl-verbose.exp: Use standard_testfile.
* gdb.cp/nsdecl.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/nsimport.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsnested.exp: Use standard_testfile.
* gdb.cp/nsnoimports.exp: Use standard_testfile.
* gdb.cp/nsrecurs.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsstress.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsusing.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/operator.exp: Use standard_testfile.
* gdb.cp/oranking.exp: Use standard_testfile.
* gdb.cp/overload-const.exp: Use standard_testfile.
* gdb.cp/overload.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/ovldbreak.exp: Use standard_testfile.
* gdb.cp/ovsrch.exp: Use standard_testfile.
* gdb.cp/paren-type.exp: Use standard_testfile.
* gdb.cp/pass-by-ref.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/pr-1023.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr-1210.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr-574.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr10687.exp: Use standard_testfile, clean_restart.
* gdb.cp/pr10728.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/pr12028.exp: Use standard_testfile.
* gdb.cp/pr9067.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr9167.exp: Use standard_testfile.
* gdb.cp/pr9631.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/printmethod.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/psmang.exp: Use standard_testfile, clean_restart.
* gdb.cp/psymtab-parameter.exp: Use standard_testfile.
* gdb.cp/ptype-cv-cp.exp: Use standard_testfile.
* gdb.cp/re-set-overloaded.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/readnow-language.exp: Use standard_testfile.
* gdb.cp/ref-params.exp: Use standard_testfile, build_executable.
(gdb_start_again): Use clean_restart.
* gdb.cp/ref-types.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/rtti.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/shadow.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/smartp.exp: Use standard_testfile.
* gdb.cp/static-method.exp: Use standard_testfile.
* gdb.cp/static-print-quit.exp: Use standard_testfile.
* gdb.cp/temargs.exp: Use standard_testfile.
* gdb.cp/templates.exp: Use standard_testfile,
prepare_for_testing.
(do_tests): Update.
* gdb.cp/try_catch.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/typedef-operator.exp: Use standard_testfile.
* gdb.cp/userdef.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/virtbase.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/virtfunc.exp: Use standard_testfile,
prepare_for_testing.
(do_tests): Update.
* gdb.cp/virtfunc2.exp: Use standard_testfile,
prepare_for_testing.
2012-07-10 15:18:18 +00:00
|
|
|
if {[prepare_for_testing $testfile.exp $testfile \
|
|
|
|
[list $srcfile $srcfile2] {debug c++}]} {
|
|
|
|
return -1
|
|
|
|
}
|
2002-05-30 19:09:47 +00:00
|
|
|
|
|
|
|
if ![runto_main] then {
|
|
|
|
perror "couldn't run to breakpoint"
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
2010-06-29 16:53:10 +00:00
|
|
|
get_debug_format
|
|
|
|
set non_dwarf [expr ! [test_debug_format "DWARF 2"]]
|
|
|
|
|
2002-09-18 18:48:43 +00:00
|
|
|
# First, run to after we've constructed all the objects:
|
|
|
|
|
|
|
|
gdb_breakpoint [gdb_get_line_number "constructs-done"]
|
|
|
|
gdb_continue_to_breakpoint "end of constructors"
|
|
|
|
|
|
|
|
|
2002-05-30 19:09:47 +00:00
|
|
|
# One.
|
|
|
|
|
From: Sergio Durigan Junior <sergiodj@redhat.com>
Subject: [PATCH] Fix for PR c++/15203 and PR c++/15210
Date: Sat, 09 Mar 2013 02:50:49 -0300 (5 days, 4 hours, 57 minutes ago)
Message-ID: <m3a9qdnmti.fsf@redhat.com>
Hi,
This bug was reported internally at our Bugzilla, along with a proposed
fix. After talking to Keith about it, he investigated and came up with
another patch needed to really fix the issue on CVS HEAD.
The first part of the fix is the patch to cp-namespace.c. It handles
the case when we are accessing a static variable inside a function
(inside a class) by the full linespec (is it right, Keith?). E.g.:
class foo
{
public:
int bar()
{
static int var = 0;
}
};
And then, printing the value of `var':
(gdb) print 'foo::bar()::var'
GDB would fall in an internal_error:
gdb/cp-namespace.c:816: internal-error: cp_lookup_nested_symbol called on a non-aggregate type.
This is because `cp_lookup_nested_symbol' is not handling the case when
TYPE_CODE is either _FUNC or _METHOD. This patch fixes it by returning
NULL in this case.
The second part of the fix is the patch to elfread.c. It is needed
because the BSF_GNU_UNIQUE flag was added to some symbols in
<http://sourceware.org/ml/binutils/2009-06/msg00016.html>. Because of
that, (still) the command:
(gdb) print 'foo::bar()::var'
where `var' is a static variable returns:
"No symbol "foo::bar()::var" in current context."
So with the second patch applied the command finally DTRT:
(gdb) print 'foo::bar()::var'
$1 = 0
This may not be the ideal solution, according to Keith it would be good
to implement productions on c-exp.y in order to recognize
CLASS::FUNCTION::VARIABLE, but it is a solution which works with what we
have today.
I regtested it in Fedora 17 x86_64 with -m64 and -m32, including
gdbserver, without regressions.
gdb/:
2013-03-14 Keith Seitz <keiths@redhat.com>
Alan Matsuoka <alanm@redhat.com>
PR c++/15203
PR c++/15210
* cp-namespace.c (cp_lookup_nested_symbol): Handle TYPE_CODE_FUNC and
TYPE_CODE_METHOD.
* elfread.c (elf_symtab_read): Handle BSF_GNU_UNIQUE for certain
symbols.
gdb/testsuite/:
2013-03-14 Sergio Durigan Junior <sergiodj@redhat.com>
PR c++/15203
PR c++/15210
* gdb.cp/m-static.cc (keepalive_int): New function.
(gnu_obj_1::method): New variable `sintvar', call `keepalive_int'.
* gdb.cp/m-static.exp: New test for `sintvar'.
2013-03-14 11:13:36 +00:00
|
|
|
# simple object, static const int, accessing via 'class::method::variable'
|
|
|
|
# Regression test for PR c++/15203 and PR c++/15210
|
|
|
|
gdb_test "print 'gnu_obj_1::method()::sintvar'" "\\$\[0-9\]+ = 4" \
|
|
|
|
"simple object, static const int, accessing via 'class::method::variable"
|
|
|
|
|
2002-05-30 19:09:47 +00:00
|
|
|
# simple object, static const bool
|
|
|
|
gdb_test "print test1.test" "\\$\[0-9\]* = true" "simple object, static const bool"
|
|
|
|
|
|
|
|
# simple object, static const int
|
|
|
|
gdb_test "print test1.key1" "\\$\[0-9\]* = 5" "simple object, static const int"
|
|
|
|
|
|
|
|
# simple object, static long
|
|
|
|
gdb_test "print test1.key2" "\\$\[0-9\]* = 77" "simple object, static long"
|
|
|
|
|
|
|
|
# simple object, static enum
|
|
|
|
gdb_test "print test1.value" "\\$\[0-9\]* = oriental" "simple object, static enum"
|
|
|
|
|
2013-06-07 08:47:09 +00:00
|
|
|
if { [istarget arm*-*-*] } {
|
|
|
|
gdb_test "print test5.single_constructor" \
|
|
|
|
{ = {single_constructor \*\(single_constructor \* const\)} 0x[0-9a-f]+ <single_constructor::single_constructor\(\)>} \
|
|
|
|
"simple object instance, print constructor"
|
|
|
|
gdb_test "ptype test5.single_constructor" \
|
|
|
|
{type = class single_constructor {\r\n public:\r\n single_constructor\(void\);\r\n ~single_constructor\(int\);\r\n} \*\(single_constructor \* const\)} \
|
|
|
|
"simple object instance, ptype constructor"
|
|
|
|
gdb_test "ptype single_constructor::single_constructor" \
|
|
|
|
{type = class single_constructor {\r\n public:\r\n single_constructor\(void\);\r\n ~single_constructor\(int\);\r\n} \*\(single_constructor \* const\)} \
|
|
|
|
"simple object class, ptype constructor"
|
|
|
|
|
|
|
|
gdb_test "print test1.~gnu_obj_1" \
|
|
|
|
{ = {void \*\(gnu_obj_1 \* const, int\)} 0x[0-9a-f]+ <gnu_obj_1::~gnu_obj_1\(\)>} \
|
|
|
|
"simple object instance, print destructor"
|
|
|
|
gdb_test "ptype test1.~gnu_obj_1" \
|
|
|
|
{type = void \*\(gnu_obj_1 \* const, int\)} \
|
|
|
|
"simple object instance, ptype destructor"
|
|
|
|
|
|
|
|
gdb_test "print test1.'~gnu_obj_1'" \
|
|
|
|
{ = {void \*\(gnu_obj_1 \*( const)?, int\)} 0x[0-9a-f]+ <gnu_obj_1::~gnu_obj_1\(\)>} \
|
|
|
|
"simple object instance, print quoted destructor"
|
|
|
|
|
|
|
|
gdb_test "ptype gnu_obj_1::'~gnu_obj_1'" \
|
|
|
|
{type = void \*\(gnu_obj_1 \* const\)} \
|
|
|
|
"simple object class, ptype quoted destructor"
|
|
|
|
} else {
|
|
|
|
gdb_test "print test5.single_constructor" \
|
|
|
|
{ = {void \(single_constructor \* const\)} 0x[0-9a-f]+ <single_constructor::single_constructor\(\)>} \
|
|
|
|
"simple object instance, print constructor"
|
|
|
|
gdb_test "ptype test5.single_constructor" \
|
|
|
|
{type = void \(single_constructor \* const\)} \
|
|
|
|
"simple object instance, ptype constructor"
|
|
|
|
gdb_test "ptype single_constructor::single_constructor" \
|
|
|
|
{type = void \(single_constructor \* const\)} \
|
|
|
|
"simple object class, ptype constructor"
|
|
|
|
|
|
|
|
gdb_test "print test1.~gnu_obj_1" \
|
|
|
|
{ = {void \(gnu_obj_1 \* const, int\)} 0x[0-9a-f]+ <gnu_obj_1::~gnu_obj_1\(\)>} \
|
|
|
|
"simple object instance, print destructor"
|
|
|
|
gdb_test "ptype test1.~gnu_obj_1" \
|
|
|
|
{type = void \(gnu_obj_1 \* const, int\)} \
|
|
|
|
"simple object instance, ptype destructor"
|
|
|
|
|
|
|
|
gdb_test "print test1.'~gnu_obj_1'" \
|
|
|
|
{ = {void \(gnu_obj_1 \*( const)?, int\)} 0x[0-9a-f]+ <gnu_obj_1::~gnu_obj_1\(\)>} \
|
|
|
|
"simple object instance, print quoted destructor"
|
|
|
|
|
|
|
|
gdb_test "ptype gnu_obj_1::'~gnu_obj_1'" \
|
|
|
|
{type = void \(gnu_obj_1 \* const\)} \
|
|
|
|
"simple object class, ptype quoted destructor"
|
|
|
|
}
|
2013-02-12 20:27:36 +00:00
|
|
|
|
2002-05-30 19:09:47 +00:00
|
|
|
# Two.
|
|
|
|
|
|
|
|
# derived template object, base static const bool
|
|
|
|
gdb_test "print test2.test" "\\$\[0-9\]* = true" "derived template object, base static const bool"
|
|
|
|
|
|
|
|
# derived template object, base static const int
|
|
|
|
gdb_test "print test2.key1" "\\$\[0-9\]* = 5" "derived template object, base static const int"
|
|
|
|
|
|
|
|
# derived template object, base static long
|
|
|
|
gdb_test "print test2.key2" "\\$\[0-9\]* = 77" "derived template object, base static long"
|
|
|
|
|
|
|
|
# derived template object, base static enum
|
|
|
|
gdb_test "print test2.value" "\\$\[0-9\].* = oriental" "derived template object, base static enum"
|
|
|
|
|
|
|
|
# derived template object, static enum
|
|
|
|
gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan" "derived template object, static enum"
|
|
|
|
|
|
|
|
# Three.
|
|
|
|
|
|
|
|
# template object, static derived template data member's base static const bool
|
|
|
|
gdb_test "print test3.data.test" "\\$\[0-9\].* = true" "template object, static const bool"
|
|
|
|
|
|
|
|
# template object, static derived template data member's base static const int
|
|
|
|
gdb_test "print test3.data.key1" "\\$\[0-9\].* = 5" "template object, static const int"
|
|
|
|
|
|
|
|
# template object, static derived template data member's base static long
|
|
|
|
gdb_test "print test3.data.key2" "\\$\[0-9\].* = 77" "template object, static long"
|
|
|
|
|
|
|
|
# template object, static derived template data member's base static enum
|
|
|
|
gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental" "template object, static enum"
|
|
|
|
|
|
|
|
# template object, static derived template data member's static enum
|
|
|
|
gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan" "template object, static derived enum"
|
|
|
|
|
2002-09-18 18:48:43 +00:00
|
|
|
# 2002-08-16
|
|
|
|
# Four.
|
|
|
|
|
|
|
|
# static const int initialized in another file.
|
|
|
|
gdb_test "print test4.elsewhere" "\\$\[0-9\].* = 221" "static const int initialized elsewhere"
|
|
|
|
|
|
|
|
# static const int that nobody initializes. From PR gdb/635.
|
2011-07-02 12:08:44 +00:00
|
|
|
if {[test_compiler_info {gcc-[0-3]-*}]
|
|
|
|
|| [test_compiler_info {gcc-4-[0-4]-*}]} {
|
|
|
|
# There was an extra CU-level DW_TAG_variable as DW_AT_declaration
|
|
|
|
# with DW_AT_name = nowhere
|
|
|
|
# and DW_AT_MIPS_linkage_name = _ZN9gnu_obj_47nowhereE .
|
|
|
|
setup_xfail *-*-*
|
|
|
|
}
|
2010-06-27 17:19:54 +00:00
|
|
|
gdb_test "print test4.nowhere" "field nowhere is nonexistent or has been optimized out" "static const int initialized nowhere"
|
2002-09-18 18:48:43 +00:00
|
|
|
|
2010-06-29 16:53:10 +00:00
|
|
|
# static const initialized in the class definition, PR gdb/11702.
|
|
|
|
if { $non_dwarf } { setup_xfail *-*-* }
|
|
|
|
gdb_test "print test4.everywhere" "\\$\[0-9\].* = 317" "static const int initialized in class definition"
|
|
|
|
if { $non_dwarf } { setup_xfail *-*-* }
|
|
|
|
gdb_test "print test4.somewhere" "\\$\[0-9\].* = 3.14\[0-9\]*" "static const float initialized in class definition"
|
|
|
|
|
|
|
|
# Also make sure static const members can be found via "info var".
|
|
|
|
if { $non_dwarf } { setup_xfail *-*-* }
|
|
|
|
gdb_test "info variable everywhere" "File .*/m-static\[.\]h.*const int gnu_obj_4::everywhere;" "info variable everywhere"
|
|
|
|
|
2002-09-18 18:48:43 +00:00
|
|
|
# Perhaps at some point test4 should also include a test for a static
|
|
|
|
# const int that was initialized in the header file. But I'm not sure
|
|
|
|
# that GDB's current behavior in such situations is either consistent
|
|
|
|
# across platforms or optimal, so I'm not including one now.
|
|
|
|
|
2010-03-13 00:27:12 +00:00
|
|
|
# Step into test1.method and examine the method-scoped static.
|
|
|
|
# This is a regression test for PR 9708.
|
|
|
|
gdb_test "step" "gnu_obj_1::method.*"
|
|
|
|
gdb_test "print svar" " = true"
|
|
|
|
|
2002-05-30 19:09:47 +00:00
|
|
|
gdb_exit
|
|
|
|
return 0
|