old-cross-binutils/gdb/testsuite/gdb.reverse/break-precsave.exp
Luis Machado 470e2f4e30 I caught a few mingw32-specific failures for some of the gdb.reverse
tests.

FAIL: gdb.reverse/consecutive-precsave.exp: reload precord save file
FAIL: gdb.reverse/finish-precsave.exp: reload precord save file
FAIL: gdb.reverse/until-precsave.exp: reload core file
FAIL: gdb.reverse/watch-precsave.exp: reload core file
FAIL: gdb.reverse/step-precsave.exp: reload core file
FAIL: gdb.reverse/break-precsave.exp: reload precord save file
FAIL: gdb.reverse/sigall-precsave.exp: reload precord save file

They happen for two reasons.

- mingw32 does not define SIGTRAP, so upon recording a core file, the
signal information will be missing, which in turn causes GDB to not
display the stopping signal when it loads the same core file.  An
earlier message warns about this:

"warning: Signal SIGTRAP does not exist on this system."

- The testcase is crafted in a way that expects a pattern of the
stopping signal message instead of a successful core file read message.

The following patch fixes this by changing the old pattern to a more
reasonable one, while still ignoring the fact that mingw32-based GDB
does not record a SIGTRAP in a core file because it does not define
it.

gdb/testsuite/

2014-11-18  Luis Machado  <lgustavo@codesourcery.com>

	* gdb.reverse/break-precsave: Expect completion message for
	core file reads.
	* gdb.reverse/consecutive-precsave.exp: Likewise.
	* gdb.reverse/finish-precsave.exp: Likewise.
	* gdb.reverse/i386-precsave.exp: Likewise.
	* gdb.reverse/machinestate-precsave.exp: Likewise.
	* gdb.reverse/sigall-precsave.exp: Likewise.
	* gdb.reverse/solib-precsave.exp: Likewise.
	* gdb.reverse/step-precsave.exp: Likewise.
	* gdb.reverse/until-precsave.exp: Likewise.
	* gdb.reverse/watch-precsave.exp: Likewise.
2014-11-18 11:16:37 -02:00

112 lines
3.7 KiB
Text

# Copyright 2008-2014 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 3 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, see <http://www.gnu.org/licenses/>.
# This file is part of the GDB testsuite. It tests reverse debugging
# with breakpoints in a process record logfile.
# This test suitable only for process record-replay
if ![supports_process_record] {
return
}
standard_testfile break-reverse.c
set precsave [standard_output_file break.precsave]
if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {
return -1
}
set foo_location [gdb_get_line_number "break in foo" ]
set bar_location [gdb_get_line_number "break in bar" ]
set main_location [gdb_get_line_number "break in main"]
set end_location [gdb_get_line_number "end of main" ]
proc precsave_tests {} {
global foo_location bar_location main_location end_location
global decimal srcfile precsave gdb_prompt
runto main
if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
gdb_test "break $end_location" \
"Breakpoint $decimal at .*$srcfile, line $end_location\." \
"BP at end of main"
gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main"
gdb_test "record save $precsave" \
"Saved core file $precsave with execution log\." \
"save process recfile"
gdb_test "kill" "" "Kill process, prepare to debug log file" \
"Kill the program being debugged\\? \\(y or n\\) " "y"
gdb_test "record restore $precsave" \
"Restored records from core file .*" \
"reload precord save file"
gdb_test "break foo" \
"Breakpoint $decimal at .* line $foo_location\." \
"set breakpoint on foo"
gdb_test "break bar" \
"Breakpoint $decimal at .* line $bar_location\." \
"set breakpoint on bar"
gdb_continue_to_breakpoint "foo" ".*$srcfile:$foo_location.*"
gdb_continue_to_breakpoint "bar" ".*$srcfile:$bar_location.*"
gdb_test_multiple "continue" "go to end of main forward" {
-re ".*Breakpoint $decimal,.*$srcfile:$end_location.*$gdb_prompt $" {
pass "go to end of main forward"
}
-re "No more reverse-execution history.* end of main .*$gdb_prompt $" {
pass "go to end of main forward"
}
}
gdb_test_no_output "set exec-direction reverse" "set reverse"
gdb_continue_to_breakpoint "bar backward" ".*$srcfile:$bar_location.*"
gdb_continue_to_breakpoint "foo backward" ".*$srcfile:$foo_location.*"
gdb_test_multiple "continue" "main backward" {
-re ".*Breakpoint $decimal,.*$srcfile:$main_location.*$gdb_prompt $" {
pass "main backward"
}
-re "No more reverse-execution history.* break in main .*$gdb_prompt $" {
pass "main backward"
}
}
gdb_test_no_output "set exec-direction forward" "set forward"
gdb_continue_to_breakpoint "foo" ".*$srcfile:$foo_location.*"
gdb_continue_to_breakpoint "bar" ".*$srcfile:$bar_location.*"
gdb_test_multiple "continue" "end of record log" {
-re ".*Breakpoint $decimal,.*$srcfile:$end_location.*$gdb_prompt $" {
pass "end of record log"
}
-re "No more reverse-execution history.* end of main .*$gdb_prompt $" {
pass "end of record log"
}
}
}
precsave_tests