1# Copyright 2002, 2004 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 static data 18# 2002-05-13 Benjamin Kosnik <bkoz@redhat.com> 19# 2002-08-22 David Carlton <carlton@math.stanford.edu> 20 21# This file is part of the gdb testsuite 22 23if $tracelevel then { 24 strace $tracelevel 25 } 26 27if { [skip_cplus_tests] } { continue } 28 29# 30# test running programs 31# 32set prms_id 0 33set bug_id 0 34 35set testfile "m-static" 36set srcfile "${testfile}.cc" 37set srcfile1 "${testfile}1.cc" 38set objfile "${testfile}.o" 39set objfile1 "${testfile}1.o" 40set binfile "${objdir}/${subdir}/${testfile}" 41 42if { [gdb_compile "$srcdir/$subdir/$srcfile" "$objdir/$subdir/$objfile" object {debug c++}] != "" } { 43 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 44} 45 46if { [gdb_compile "$srcdir/$subdir/$srcfile1" "$objdir/$subdir/$objfile1" object {debug c++}] != "" } { 47 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 48} 49 50if { [gdb_compile "$objdir/$subdir/$objfile $objdir/$subdir/$objfile1" "${binfile}" executable {debug c++}] != "" } { 51 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 52} 53 54gdb_exit 55gdb_start 56gdb_reinitialize_dir $srcdir/$subdir 57gdb_load ${binfile} 58 59 60if ![runto_main] then { 61 perror "couldn't run to breakpoint" 62 continue 63} 64 65# First, run to after we've constructed all the objects: 66 67gdb_breakpoint [gdb_get_line_number "constructs-done"] 68gdb_continue_to_breakpoint "end of constructors" 69 70 71# One. 72 73# simple object, static const bool 74gdb_test "print test1.test" "\\$\[0-9\]* = true" "simple object, static const bool" 75 76# simple object, static const int 77gdb_test "print test1.key1" "\\$\[0-9\]* = 5" "simple object, static const int" 78 79# simple object, static long 80gdb_test "print test1.key2" "\\$\[0-9\]* = 77" "simple object, static long" 81 82# simple object, static enum 83gdb_test "print test1.value" "\\$\[0-9\]* = oriental" "simple object, static enum" 84 85# Two. 86 87# derived template object, base static const bool 88gdb_test "print test2.test" "\\$\[0-9\]* = true" "derived template object, base static const bool" 89 90# derived template object, base static const int 91gdb_test "print test2.key1" "\\$\[0-9\]* = 5" "derived template object, base static const int" 92 93# derived template object, base static long 94gdb_test "print test2.key2" "\\$\[0-9\]* = 77" "derived template object, base static long" 95 96# derived template object, base static enum 97gdb_test "print test2.value" "\\$\[0-9\].* = oriental" "derived template object, base static enum" 98 99# derived template object, static enum 100gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan" "derived template object, static enum" 101 102# Three. 103 104# template object, static derived template data member's base static const bool 105gdb_test "print test3.data.test" "\\$\[0-9\].* = true" "template object, static const bool" 106 107# template object, static derived template data member's base static const int 108gdb_test "print test3.data.key1" "\\$\[0-9\].* = 5" "template object, static const int" 109 110# template object, static derived template data member's base static long 111gdb_test "print test3.data.key2" "\\$\[0-9\].* = 77" "template object, static long" 112 113# template object, static derived template data member's base static enum 114gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental" "template object, static enum" 115 116# template object, static derived template data member's static enum 117gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan" "template object, static derived enum" 118 119# 2002-08-16 120# Four. 121 122# static const int initialized in another file. 123gdb_test "print test4.elsewhere" "\\$\[0-9\].* = 221" "static const int initialized elsewhere" 124 125# static const int that nobody initializes. From PR gdb/635. 126gdb_test "print test4.nowhere" "field nowhere is nonexistent or has been optimised out" "static const int initialized nowhere" 127 128# Perhaps at some point test4 should also include a test for a static 129# const int that was initialized in the header file. But I'm not sure 130# that GDB's current behavior in such situations is either consistent 131# across platforms or optimal, so I'm not including one now. 132 133gdb_exit 134return 0 135