diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/bs15503.cc | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/bs15503.exp | 98 |
3 files changed, 65 insertions, 45 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c978d54..b8ce75d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2004-01-07 Michael Chastain <mec.gnu@mindspring.com> + * gdb.cp/bs15503.cc: Include <iostream>, not <iostream.h>. + * gdb.cp/bs15503.exp: Remove hp-only restriction. Use modern + boilerplate code for compiling and running the program under + test. Add some string method tests. + +2004-01-07 Michael Chastain <mec.gnu@mindspring.com> + * gdb.cp/bs15503.cc: Add copyright notice. * gdb.cp/bs15503.exp: Adjust line number. diff --git a/gdb/testsuite/gdb.cp/bs15503.cc b/gdb/testsuite/gdb.cp/bs15503.cc index 13f4377..aec5a0b 100644 --- a/gdb/testsuite/gdb.cp/bs15503.cc +++ b/gdb/testsuite/gdb.cp/bs15503.cc @@ -1,6 +1,6 @@ /* This testcase is part of GDB, the GNU debugger. - Copyright 1992 Free Software Foundation, Inc. + Copyright 1992, 2004 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 @@ -20,7 +20,8 @@ bug-gdb@prep.ai.mit.edu */ #include <string> -#include <iostream.h> +#include <iostream> +using namespace std; template <class T> class StringTest { diff --git a/gdb/testsuite/gdb.cp/bs15503.exp b/gdb/testsuite/gdb.cp/bs15503.exp index c6700fc..9b6095b 100644 --- a/gdb/testsuite/gdb.cp/bs15503.exp +++ b/gdb/testsuite/gdb.cp/bs15503.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1992 Free Software Foundation, Inc. +# Copyright 1992, 2004 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 @@ -16,73 +16,85 @@ # Test case for CLLbs15503 # This file was written by Sue Kimura (sue_kimura@hp.com) +# Rewritten by Michael Chastain (mec.gnu@mindspring.com) if $tracelevel { strace $tracelevel } -if { [skip_hp_tests] } { continue } - set testfile "bs15503" set srcfile ${testfile}.cc set binfile ${objdir}/${subdir}/${testfile} -# Create and source the file that provides information about the compiler -# used to compile the test case. if [get_compiler_info ${binfile}] { return -1 } -# The testcode is non-conforming and rejected by GCC. So bypass this -# test completely unless we're compiling with HP's compiler. -if {!$hp_aCC_compiler && !$hp_cc_compiler} { - return 0 -} - if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug c++"] != "" } { perror "Couldn't compile ${srcfile}" return -1 } - -# Start with a fresh gdb. gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} -# Load $binfile -- there should be no warnings about "Procedure ... spans -# file or module boundaries", "No symbols in psymtab for file ..." or -# "File ... has ending address after starting address of next file..." - -if [istarget "hppa64-hp-hpux*" ] { - gdb_test "file $binfile" \ - "Detected 64-bit executable..*Invoking .*gdb64..*Use \"run\" to continue execution." \ - "loading $binfile" -} else { - gdb_test "file $binfile" \ - "Reading symbols from $binfile...done." \ - "loading $binfile" +if ![runto_main] then { + perror "couldn't run to breakpoint" + continue } -# Test setting breakpoint on template function -# + +# Set breakpoint on template function + gdb_test "break StringTest<wchar_t>::testFunction" \ - "Breakpoint $decimal at $hex: file .*bs15503.cc, line 19." \ - "break point on function" + "Breakpoint $decimal at $hex: file .*${srcfile}, line $decimal." -gdb_test "run" \ - "Starting program:.*Breakpoint $decimal, StringTest<wchar_t>::testFunction \\(this=$hex\\).*cout << \"in StringTest\" << endl;.*" \ - "run to function breakpoint" +gdb_test "continue" \ + ".*Breakpoint $decimal, StringTest<wchar_t>::testFunction \\(this=$hex\\).*" \ + "continue to StringTest<wchar_t>" -#restart with fresh gdb -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load $binfile +# Run to some random point in the middle of the function. + +gdb_breakpoint [gdb_get_line_number "find position where blank needs to be inserted"] +gdb_continue_to_breakpoint "find position where blank needs to be inserted" -gdb_test "break 53" \ - "Breakpoint $decimal at $hex: file .*bs15503.cc, line 53." \ - "break point on line in function" +# Call some string methods. -gdb_test "run" \ - ".*32.*string::size_type spos = s.find\\(\"and\"\\);.*" \ - "run to break point on line in function" +gdb_test "print s.length()" "\\$\[0-9\]+ = 42" +gdb_test "print s\[0\]" "\\$\[0-9\]+ =.* 'I'" +gdb_test "print s\[s.length()-1\]" "\\$\[0-9\]+ =.* 'g'" +gdb_test "print (const char *) s" \ + "\\$\[0-9\]+ = $hex \"I am a short stringand now a longer string\"" + +# TODO: tests that do not work with gcc 2.95.3 +# -- chastain 2004-01-07 +# +# gdb_test "print s.compare(s)" "\\$\[0-9\]+ = 0" +# gdb_test "print s.compare(\"AAA\")" "\\$\[0-9\]+ = 1" +# gdb_test "print s.compare(\"ZZZ\")" "\\$\[0-9\]+ = -1" + +# TODO: tests that do not work with gcc 2.95.3 and gcc 3.3.2. +# cannot call overloaded non-member operator. -- chastain 2004-01-07 +# +# gdb_test "print s == s" "\\$\[0-9\]+ = true" +# gdb_test "print s > "AAA" "\\$\[0-9\]+ = true" +# gdb_test "print s < "ZZZ" "\\$\[0-9\]+ = true" + +# TODO crash gdb! This is going to be a great test! +# -- chastain 2004-01-07 +# +# gdb_test "print s == \"I am a short stringand now a longer string\"" \ +# "\\$\[0-9\]+ = "true" + +gdb_test "print (const char *) s.substr(0,4)" "\\$\[0-9\]+ = $hex \"I am\"" +gdb_test "print (const char *) (s=s.substr(0,4))" \ + "\\$\[0-9\]+ = $hex \"I am\"" + +# TODO: cannot call overloaded non-member operator again. +# -- chastain 2004-01-07 +# +# gdb_test "print (const char *) (s + s)" \ +# "\\$\[0-9\]+ = $hex \"I amI am\"" +# gdb_test "print (const char *) (s + \" \" + s)" \ +# "\\$\[0-9\]+ = $hex \"I am I am\"" |