]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.reverse/solib-reverse.exp
Copyright year update in most files of the GDB Project.
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.reverse / solib-reverse.exp
CommitLineData
c5a57081 1# Copyright 2009-2012 Free Software Foundation, Inc.
28d41a99
MS
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16# This file is part of the GDB testsuite. It tests reverse debugging
17# with shared libraries.
18
d3895d7d 19if ![supports_reverse] {
28d41a99
MS
20 return
21}
22
23set testfile "solib-reverse"
24set srcfile ${testfile}.c
25set libfile "shr2"
26set libsrc ${libfile}.c
27set library ${objdir}/${subdir}/${libfile}.sl
28set binfile ${objdir}/${subdir}/${testfile}
29
30if [get_compiler_info ${binfile}] {
31 return -1
32}
33
34if { [gdb_compile_shlib ${srcdir}/${subdir}/${libsrc} ${library} "debug"] != "" } {
35 untested "Could not compile shared library."
36 return -1
37}
38
39set exec_opts [list debug shlib=${library}]
40
41if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable $exec_opts] != "" } {
42 untested "Could not compile $binfile."
43 return -1
44}
45
46# Start with a fresh gdb.
47
48gdb_exit
49gdb_start
50gdb_reinitialize_dir $srcdir/$subdir
51gdb_load ${binfile}
52
53
54runto main
55
d3895d7d 56if [supports_process_record] {
28d41a99 57 # Activate process record/replay
bcd2dc50 58 gdb_test_no_output "record" "Turn on process record"
28d41a99
MS
59}
60
61#
62# Test reverse-step over undebuggable solib functions.
63#
64
65# Run forward past some solib function calls.
66
67set end_part_one [gdb_get_line_number " end part one" "$srcfile"]
68set end_part_two [gdb_get_line_number " end part two" "$srcfile"]
69gdb_test "until $end_part_one" " end part one.*" "run until end part one"
70
71gdb_test "reverse-step" " sleep three .*" "reverse-step third sleep"
72gdb_test "reverse-step" " sleep two .*" "reverse-step second sleep"
73gdb_test "reverse-step" " sleep one .*" \
74 "reverse-step first sleep, dynsym resolve"
75
76gdb_test "reverse-step" " printf three .*" "reverse-step third printf"
77gdb_test "reverse-step" " printf two .*" "reverse-step second printf"
78gdb_test "reverse-step" " printf one .*" \
79 "reverse-step first printf, dynsym resolve"
80gdb_test "reverse-step" " generic statement.*" "reverse-step generic"
81
82
83#
84# Test reverse-next over undebuggable solib functions.
85#
86
87# Run forward again...
88
89gdb_test "until $end_part_one" " end part one.*" "forward to end part one"
90
91gdb_test "reverse-next" " sleep three .*" "reverse-next third sleep"
92gdb_test "reverse-next" " sleep two .*" "reverse-next second sleep"
93gdb_test "reverse-next" " sleep one .*" \
94 "reverse-next first sleep, dynsym resolve"
95
96gdb_test "reverse-next" " printf three .*" "reverse-next third printf"
97gdb_test "reverse-next" " printf two .*" "reverse-next second printf"
98gdb_test "reverse-next" " printf one .*" \
99 "reverse-next first printf, dynsym resolve"
100gdb_test "reverse-next" " generic statement.*" "reverse-next generic"
101
102
103#
104# Test reverse-step into debuggable solib function
105#
106
107gdb_test "reverse-step" "${libsrc}.*" "reverse-step into solib function one"
108gdb_test "reverse-step" "return 2.x.*" "reverse-step within solib function one"
109gdb_test "reverse-step" " middle part two.*" "reverse-step back to main one"
110
111gdb_test "reverse-step" "${libsrc}.*" "reverse-step into solib function two"
112gdb_test "reverse-step" "return 2.x.*" "reverse-step within solib function two"
113gdb_test "reverse-step" " begin part two.*" "reverse-step back to main two"
114
115#
116# Test reverse-next over debuggable solib function
117#
118
119gdb_test "until $end_part_two" " end part two.*" "run until end part two"
120
121gdb_test "reverse-next" " middle part two.*" "reverse-next over solib function one"
122gdb_test "reverse-next" " begin part two.*" "reverse-next over solib function two"