diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/reread.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/reread.exp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/reread.exp b/gdb/testsuite/gdb.base/reread.exp new file mode 100644 index 00000000000..ccdabd5306a --- /dev/null +++ b/gdb/testsuite/gdb.base/reread.exp @@ -0,0 +1,117 @@ +# Copyright (C) 1998 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +set prototypes 1 + +# build the first test case + +set testfile1 "reread1" +set srcfile1 ${testfile1}.c +set binfile1 ${objdir}/${subdir}/${testfile1} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile1}" executable {debug additional_flags=-w}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +# build the second test case + +set testfile2 "reread2" +set srcfile2 ${testfile2}.c +set binfile2 ${objdir}/${subdir}/${testfile2} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug additional_flags=-w}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +# Start with a fresh gdb. + +set testfile "reread" +set binfile ${objdir}/${subdir}/${testfile} + +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +set prms_id 13484 +set bug_id 0 + +# Load the first executable. + +gdb_test "shell mv ${binfile1} ${binfile}" "" "" +gdb_load ${binfile} + +# Set a breakpoint at foo + +gdb_test "break foo" \ + "Breakpoint.*at.* file .*$srcfile1, line 14.*" \ + "breakpoint foo in first file" + + +# Run, should see "Breakpoint 1, foo () at hello1.c:14" + +gdb_run_cmd + +gdb_expect { + -re ".*Breakpoint.* foo .* at .*$srcfile1:14.*$gdb_prompt $" { + pass "run to foo()"; + } + -re ".*$gdb_prompt $" { + fail "run to foo()"; + gdb_suppress_tests; + } + timeout { fail "run to foo() (timeout)" ; gdb_suppress_tests } +} + +# Restore first executable to its original name, and move +# second executable into its place. Ensure that the new +# executable is at least a second older than the old. + +gdb_test "shell mv ${binfile} ${binfile1}" "" "" +gdb_test "shell mv ${binfile2} ${binfile}" "" "" +gdb_test "shell sleep 1" "" "" +gdb_test "shell touch ${binfile}" "" "" + +# Run a second time; GDB should detect that the executable has changed +# and reset the breakpoints correctly. +# Should see "Breakpoint 1, foo () at reread2.c:9" + +gdb_run_cmd +gdb_expect { +# -re ".*re-reading symbols.*Breakpoint.* foo .* at .*$srcfile2:9.*$gdb_prompt $" {} + -re ".*Breakpoint.* foo .* at .*:9.*$gdb_prompt $" { + pass "run to foo() second time "; + } + -re ".*$gdb_prompt $" { + fail "run to foo() second time"; + gdb_suppress_tests; + } + timeout { fail "run to foo() second time (timeout)" ; gdb_suppress_tests } +} + +# End of tests. + +gdb_stop_suppressing_tests + +return 0 |