old-cross-binutils/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp

59 lines
1.9 KiB
Text
Raw Normal View History

# Copyright 2008-2016 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 stepping.
# Lots of code borrowed from "step-test.exp".
#
# reverse-next over a function call sets a step-resume breakpoint at
# callee's entry point, runs to it, and then does an extra single-step
# to get at the callee's caller. Test that a user breakpoint set at
# the same location as the step-resume breakpoint isn't ignored.
#
if ![supports_reverse] {
return
}
* gdb.reverse/break-precsave.exp: Use standard_testfile. * gdb.reverse/break-reverse.exp: Use standard_testfile. * gdb.reverse/consecutive-precsave.exp: Use standard_testfile. * gdb.reverse/consecutive-reverse.exp: Use standard_testfile. * gdb.reverse/finish-precsave.exp: Use standard_testfile. * gdb.reverse/finish-reverse-bkpt.exp: Use standard_testfile. * gdb.reverse/finish-reverse.exp: Use standard_testfile. * gdb.reverse/i386-precsave.exp: Use standard_testfile, prepare_for_testing. * gdb.reverse/i386-reverse.exp: Use standard_testfile, prepare_for_testing. * gdb.reverse/i386-sse-reverse.exp: Use standard_testfile, prepare_for_testing. * gdb.reverse/i387-env-reverse.exp: Use standard_testfile, prepare_for_testing. * gdb.reverse/i387-stack-reverse.exp: Use standard_testfile, prepare_for_testing * gdb.reverse/machinestate-precsave.exp: Use standard_testfile. * gdb.reverse/machinestate.exp: Use standard_testfile. * gdb.reverse/next-reverse-bkpt-over-sr.exp: Use standard_testfile. * gdb.reverse/sigall-precsave.exp: Use standard_testfile, build_executable. * gdb.reverse/sigall-reverse.exp: Use standard_testfile, build_executable. * gdb.reverse/solib-precsave.exp: Use standard_testfile, standard_output_file. * gdb.reverse/solib-reverse.exp: Use standard_testfile, standard_output_file. * gdb.reverse/step-precsave.exp: Use standard_testfile. * gdb.reverse/step-reverse.exp: Use standard_testfile. * gdb.reverse/until-precsave.exp: Use standard_testfile. * gdb.reverse/until-reverse.exp: Use standard_testfile. * gdb.reverse/watch-precsave.exp: Use standard_testfile. * gdb.reverse/watch-reverse.exp: Use standard_testfile.
2012-06-26 17:54:59 +00:00
standard_testfile step-reverse.c
if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {
return -1
}
if ![runto_main] then {
fail "Can't run to main"
return 0
}
if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
set lineno [gdb_get_line_number "STEP INTO THIS CALL"]
gdb_test "advance $lineno" ".*STEP INTO THIS CALL.*" "get past callee call"
gdb_test "b \*callee" "" "set breakpoint at callee's entry"
Fix gdb.reverse/next-reverse-bkpt-over-sr.exp I see the fail on aarch64-linux, (gdb) reverse-next Breakpoint 2, callee () at /home/yao/SourceCode/gnu/gdb/git/gdb/testsuite/gdb.reverse/step-reverse.c:26^M 26 myglob++; return 0; /* ARRIVED IN CALLEE */ (gdb) FAIL: gdb.reverse/next-reverse-bkpt-over-sr.exp: reverse-next over call trips user breakpoint at function entry The test expects program stops at line 25, but program stops at line 26. (gdb) maintenance info line-table objfile: /scratch/yao/gdb/build-git/aarch64-linux-gnu/gdb/testsuite/outputs/gdb.reverse/next-reverse-bkpt-over-sr/next-reverse-bkpt-over-sr ((struct objfile *) 0x613000002880) compunit_symtab: ((struct compunit_symtab *) 0x621000121760) symtab: /home/yao/SourceCode/gnu/gdb/git/gdb/testsuite/gdb.reverse/step-reverse.c ((struct symtab *) 0x6210001217e0) linetable: ((struct linetable *) 0x6210001520d0): INDEX LINE ADDRESS 0 25 0x0000000000400890 1 26 0x0000000000400890 2 27 0x00000000004008b0 (gdb) disassemble callee Dump of assembler code for function callee: 0x0000000000400890 <+0>: adrp x0, 0x410000 0x0000000000400894 <+4>: add x0, x0, #0xcac the line-table show that the first instruction of function callee is mapped line 25 and 26. I am not sure the line-table is correct, but it is not the point of this test. The goal of this test is to test program hits the breakpoint on the first instruction of function after 'reverse-next', so I change this test to expect the breakpoint number the program hits. gdb/testsuite: 2016-04-07 Yao Qi <yao.qi@linaro.org> * gdb.reverse/next-reverse-bkpt-over-sr.exp: Match the breakpoint number instead of the comments on some line.
2016-04-07 15:57:09 +00:00
set bpnum [get_integer_valueof "\$bpnum" 0]
gdb_test "reverse-next" \
Fix gdb.reverse/next-reverse-bkpt-over-sr.exp I see the fail on aarch64-linux, (gdb) reverse-next Breakpoint 2, callee () at /home/yao/SourceCode/gnu/gdb/git/gdb/testsuite/gdb.reverse/step-reverse.c:26^M 26 myglob++; return 0; /* ARRIVED IN CALLEE */ (gdb) FAIL: gdb.reverse/next-reverse-bkpt-over-sr.exp: reverse-next over call trips user breakpoint at function entry The test expects program stops at line 25, but program stops at line 26. (gdb) maintenance info line-table objfile: /scratch/yao/gdb/build-git/aarch64-linux-gnu/gdb/testsuite/outputs/gdb.reverse/next-reverse-bkpt-over-sr/next-reverse-bkpt-over-sr ((struct objfile *) 0x613000002880) compunit_symtab: ((struct compunit_symtab *) 0x621000121760) symtab: /home/yao/SourceCode/gnu/gdb/git/gdb/testsuite/gdb.reverse/step-reverse.c ((struct symtab *) 0x6210001217e0) linetable: ((struct linetable *) 0x6210001520d0): INDEX LINE ADDRESS 0 25 0x0000000000400890 1 26 0x0000000000400890 2 27 0x00000000004008b0 (gdb) disassemble callee Dump of assembler code for function callee: 0x0000000000400890 <+0>: adrp x0, 0x410000 0x0000000000400894 <+4>: add x0, x0, #0xcac the line-table show that the first instruction of function callee is mapped line 25 and 26. I am not sure the line-table is correct, but it is not the point of this test. The goal of this test is to test program hits the breakpoint on the first instruction of function after 'reverse-next', so I change this test to expect the breakpoint number the program hits. gdb/testsuite: 2016-04-07 Yao Qi <yao.qi@linaro.org> * gdb.reverse/next-reverse-bkpt-over-sr.exp: Match the breakpoint number instead of the comments on some line.
2016-04-07 15:57:09 +00:00
"Breakpoint $bpnum, callee.*" \
"reverse-next over call trips user breakpoint at function entry"
gdb_test "up" \
".*NEXT OVER THIS CALL.*" \
"stopped at the right callee call"