This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch/testsuite/cp] bs15503.exp: recall to life


I spruced up this test script.  I removed the restriction on gcc
so that everybody can enjoy the script.  I modernized the boilerplate
code.  I wrote some new tests.

The original test script just set two breakpoints, ran to the
breakpoints, and that was all.  It appears that the original author was
writing a test program for a C++ compiler and a C++ standard library,
not a test script to work the debugger.  So I added some simple data
tests at the end: I just take a string and call some methods on it.

There are a bunch of commented-out tests.  These tests do not work
properly; one test crashes gdb -- not even a call to internal-error,
just a segmentation violation!!  It would be great if someone (probably
me) could file bug reports and then KFAIL these tests against them.
Meanwhile, the existing tests all PASS on all the configurations that I
tested.

I tested on native i686-pc-linux-gnu with gcc 2.95.3, gcc 3.3.2, and gcc
HEAD, with dwarf-2 and stabs+.  All the enabled tests PASS on all
configurations.

I did not test on native hppa2.0w-hp-hpux11.11 because the existing test
program does not even compile, so anything will be an improvement (and
it is okay for new tests to make noise on hpux, as I already have 1836
non-PASS results).

I am committing this now.

Michael C

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.

Index: bs15503.cc
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/bs15503.cc,v
retrieving revision 1.2
diff -c -3 -p -r1.2 bs15503.cc
*** bs15503.cc	8 Jan 2004 08:18:35 -0000	1.2
--- bs15503.cc	8 Jan 2004 09:26:51 -0000
***************
*** 1,6 ****
  /* This testcase is part of GDB, the GNU debugger.
  
!    Copyright 1992 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
--- 1,6 ----
  /* This testcase is part of GDB, the GNU debugger.
  
!    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,26 ****
     bug-gdb@prep.ai.mit.edu  */
  
  #include <string>
! #include <iostream.h>
  
  template <class T>
  class StringTest {
--- 20,27 ----
     bug-gdb@prep.ai.mit.edu  */
  
  #include <string>
! #include <iostream>
! using namespace std;
  
  template <class T>
  class StringTest {
Index: bs15503.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/bs15503.exp,v
retrieving revision 1.2
diff -c -3 -p -r1.2 bs15503.exp
*** bs15503.exp	8 Jan 2004 08:18:35 -0000	1.2
--- bs15503.exp	8 Jan 2004 09:26:51 -0000
***************
*** 1,4 ****
! # Copyright (C) 1992 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
--- 1,4 ----
! # 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,88 ****
  
  # Test case for CLLbs15503
  # This file was written by Sue Kimura (sue_kimura@hp.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
  
! #  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"
  }
! #  Test setting breakpoint on template function
! #
  gdb_test "break StringTest<wchar_t>::testFunction" \
!     "Breakpoint $decimal at $hex: file .*bs15503.cc, line 19." \
!     "break point on function"
  
! gdb_test "run" \
!     "Starting program:.*Breakpoint $decimal, StringTest<wchar_t>::testFunction \\(this=$hex\\).*cout << \"in StringTest\" << endl;.*" \
!     "run to function breakpoint"
  
! #restart with fresh gdb
! gdb_exit
! gdb_start
! gdb_reinitialize_dir $srcdir/$subdir
! gdb_load $binfile
  
! gdb_test "break 53" \
!     "Breakpoint $decimal at $hex: file .*bs15503.cc, line 53." \
!     "break point on line in function"
! 
! gdb_test "run" \
!     ".*32.*string::size_type spos = s.find\\(\"and\"\\);.*" \
!     "run to break point on line in function"
--- 16,100 ----
  
  # 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
  }
  
  set testfile "bs15503"
  set srcfile ${testfile}.cc
  set binfile ${objdir}/${subdir}/${testfile}
  
  if [get_compiler_info ${binfile}] {
      return -1
  }
  
  if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug c++"] != "" } {
      perror "Couldn't compile ${srcfile}"
      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
  }
! 
! # Set breakpoint on template function
! 
  gdb_test "break StringTest<wchar_t>::testFunction" \
!     "Breakpoint $decimal at $hex: file .*${srcfile}, line $decimal."
  
! gdb_test "continue" \
!     ".*Breakpoint $decimal, StringTest<wchar_t>::testFunction \\(this=$hex\\).*" \
!     "continue to StringTest<wchar_t>"
  
! # 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"
! 
! # Call some string methods.
  
! 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\""


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]