1# Copyright 2002 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 2 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program; if not, write to the Free Software 15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 17# Tests for member data 18# 2002-05-13 Benjamin Kosnik <bkoz@redhat.com> 19 20# This file is part of the gdb testsuite 21 22if $tracelevel then { 23 strace $tracelevel 24 } 25 26if { [skip_cplus_tests] } { continue } 27 28# 29# test running programs 30# 31set prms_id 0 32set bug_id 0 33 34set testfile "m-data" 35set srcfile ${testfile}.cc 36set binfile ${objdir}/${subdir}/${testfile} 37 38if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { 39 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 40} 41 42if [get_compiler_info ${binfile} "c++"] { 43 return -1 44} 45 46gdb_exit 47gdb_start 48gdb_reinitialize_dir $srcdir/$subdir 49gdb_load ${binfile} 50 51 52if ![runto_main] then { 53 perror "couldn't run to breakpoint" 54 continue 55} 56 57# First, run to after we've constructed all the gnu_obj_N's: 58 59gdb_breakpoint [gdb_get_line_number "first-constructs-done"] 60gdb_continue_to_breakpoint "end of first constructors" 61 62# One. 63 64# simple object, const bool 65gdb_test "print test1.test" "\\$\[0-9\]* = true" "simple object, const bool" 66 67# simple object, const int 68gdb_test "print test1.key1" "\\$\[0-9\]* = 5" "simple object, const int" 69 70# simple object, long 71gdb_test "print test1.key2" "\\$\[0-9\]* = 4589" "simple object, long" 72 73# simple object, enum 74gdb_test "print test1.value" "\\$\[0-9\]* = egyptian" "simple object, enum" 75 76# Two. 77 78# derived template object, base const bool 79gdb_test "print test2.test" "\\$\[0-9\]* = true" "derived template object, base const bool" 80 81# derived template object, base const int 82gdb_test "print test2.key1" "\\$\[0-9\]* = 5" "derived template object, base const int" 83 84# derived template object, base long 85gdb_test "print test2.key2" "\\$\[0-9\]* = 7" "derived template object, base long" 86 87# derived template object, base enum 88gdb_test "print test2.value" "\\$\[0-9\]* = oriental" "derived template object, base enum" 89 90# derived template object, enum 91gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman" "derived template object, derived enum" 92 93# Three. 94 95# template object, derived template data member's base const bool 96gdb_test "print test3.data.test" "\\$\[0-9\]* = true" "template object, const bool" 97 98# template object, derived template data member's base const int 99gdb_test "print test3.data.key1" "\\$\[0-9\]* = 5" "template object, const int" 100 101# template object, derived template data member's base long 102gdb_test "print test3.data.key2" "\\$\[0-9\]* = 7" "template object, long" 103 104# template object, derived template data member's base enum 105gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental" "template object, base enum" 106 107# template object, derived template data member's enum 108gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan" "template object, derived enum" 109 110# Now some tests for shadowing (see PR gdb/804): 111 112gdb_breakpoint "C::marker" 113gdb_continue_to_breakpoint "continue to shadow breakpoint" 114 115gdb_test "print shadow" "\\$\[0-9]\* = 1" "shadowing member" 116gdb_test "print ::shadow" "\\$\[0-9]\* = 0" "shadowed global variable" 117 118gdb_exit 119return 0 120