From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13895 invoked by alias); 30 May 2002 19:08:58 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 13885 invoked from network); 30 May 2002 19:08:54 -0000 Received: from unknown (HELO duracef.shout.net) (204.253.184.12) by sources.redhat.com with SMTP; 30 May 2002 19:08:54 -0000 Received: (from mec@localhost) by duracef.shout.net (8.11.6/8.11.6) id g4UJ8oQ31962; Thu, 30 May 2002 14:08:50 -0500 Date: Thu, 30 May 2002 12:12:00 -0000 From: Michael Elizabeth Chastain Message-Id: <200205301908.g4UJ8oQ31962@duracef.shout.net> To: bkoz@redhat.com Subject: Re: gdb.c++ testsuite 1.3: member_data_static.exp (resend) Cc: drow@mvista.com, gdb-patches@sources.redhat.com X-SW-Source: 2002-05/txt/msg01032.txt.bz2 Benjamin Kosnik writes: > template class __gnu_test::gnu_obj_3; > template class __gnu_test::gnu_obj_2; This technique works for me in all tested configurations. I added an instantiation for gnu_obj_2 as well. I'm about to commit these files. Here is what I'm committing. Michael C === m-static.cc // 2002-05-13 namespace __gnu_test { enum region { oriental, egyptian, greek, etruscan, roman }; // Test one. class gnu_obj_1 { protected: typedef region antiquities; static const bool test = true; static const int key1 = 5; static long key2; static antiquities value; public: gnu_obj_1(antiquities a, long l) {} }; const bool gnu_obj_1::test; const int gnu_obj_1::key1; long gnu_obj_1::key2 = 77; gnu_obj_1::antiquities gnu_obj_1::value = oriental; // Test two. template class gnu_obj_2: public virtual gnu_obj_1 { public: static antiquities value_derived; public: gnu_obj_2(antiquities b): gnu_obj_1(oriental, 7) { } }; template typename gnu_obj_2::antiquities gnu_obj_2::value_derived = etruscan; // Test three. template class gnu_obj_3 { public: typedef region antiquities; static gnu_obj_2 data; public: gnu_obj_3(antiquities b) { } }; template gnu_obj_2 gnu_obj_3::data(etruscan); } // instantiate templates explicitly so their static members will exist template class __gnu_test::gnu_obj_2; template class __gnu_test::gnu_obj_2; template class __gnu_test::gnu_obj_3; int main() { using namespace __gnu_test; gnu_obj_1 test1(egyptian, 4589); gnu_obj_2 test2(roman); gnu_obj_3 test3(greek); return 0; } === m-static.exp # Copyright 2002 Free Software Foundation, Inc. # 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 # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Tests for member static data # 2002-05-13 Benjamin Kosnik # This file is part of the gdb testsuite if $tracelevel then { strace $tracelevel } if { [skip_cplus_tests] } { continue } # # test running programs # set prms_id 0 set bug_id 0 set testfile "m-static" set srcfile ${testfile}.cc set binfile ${objdir}/${subdir}/${testfile} if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } if [get_compiler_info ${binfile} "c++"] { return -1 } gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} if ![runto_main] then { perror "couldn't run to breakpoint" continue } # One. gdb_test "break 68" "Breakpoint \[0-9\]*.*line 68\\." gdb_test "continue" "Continuing\\.\r\n\r\nBreakpoint.*at.*m-static\\.cc:68\r\n.*" "continue to 68" # 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" # Two. gdb_test "break 69" "Breakpoint \[0-9\]*.*line 69\\." gdb_test "continue" "Continuing\\.\r\n\r\nBreakpoint.*at.*m-static\\.cc:69\r\n.*" "continue to 69" # 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. gdb_test "break 71" "Breakpoint \[0-9\]*.*line 71\\." gdb_test "continue" "Continuing\\.\r\n\r\nBreakpoint.*at.*m-static\\.cc:71\r\n.*" "continue to 71" # 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" gdb_exit return 0