From 7ee554b50ec4250da314bde4ff0fdfb0e70a88d3 Mon Sep 17 00:00:00 2001 From: Mark Alexander Date: Sun, 17 May 1998 06:49:55 +0000 Subject: [PATCH] * gdb.base/reread.exp: New file. * gdb.base/reread1.c: New file. * gdb.base/reread2.c: New file. --- gdb/testsuite/ChangeLog | 6 ++ gdb/testsuite/gdb.base/.Sanitize | 3 + gdb/testsuite/gdb.base/reread.exp | 115 ++++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/reread1.c | 26 +++++++ gdb/testsuite/gdb.base/reread2.c | 21 ++++++ 5 files changed, 171 insertions(+) create mode 100644 gdb/testsuite/gdb.base/reread.exp create mode 100644 gdb/testsuite/gdb.base/reread1.c create mode 100644 gdb/testsuite/gdb.base/reread2.c diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7f5408cfcc8..ea46ea12e4d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +Sat May 16 23:43:35 1998 Mark Alexander + + * gdb.base/reread.exp: New file. + * gdb.base/reread1.c: New file. + * gdb.base/reread2.c: New file. + Sat May 16 23:22:09 1998 Mark Alexander * config/sim.exp: Use 'target sim -sparclite' when running diff --git a/gdb/testsuite/gdb.base/.Sanitize b/gdb/testsuite/gdb.base/.Sanitize index 1ff2d7d6b5e..72aa535b29c 100644 --- a/gdb/testsuite/gdb.base/.Sanitize +++ b/gdb/testsuite/gdb.base/.Sanitize @@ -94,6 +94,9 @@ radix.exp recurse.c recurse.exp regs.exp +reread.exp +reread1.c +reread2.c return.c return.exp run.c diff --git a/gdb/testsuite/gdb.base/reread.exp b/gdb/testsuite/gdb.base/reread.exp new file mode 100644 index 00000000000..05fc0542238 --- /dev/null +++ b/gdb/testsuite/gdb.base/reread.exp @@ -0,0 +1,115 @@ +# 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. + +gdb_test "shell mv ${binfile} ${binfile1}" "" "" +gdb_test "shell mv ${binfile2} ${binfile}" "" "" +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 diff --git a/gdb/testsuite/gdb.base/reread1.c b/gdb/testsuite/gdb.base/reread1.c new file mode 100644 index 00000000000..ae9801047d4 --- /dev/null +++ b/gdb/testsuite/gdb.base/reread1.c @@ -0,0 +1,26 @@ +/* pr 13484 */ + +#include + +int x; + +void bar() +{ + x--; +} + +void foo() +{ + x++; +} + +int main() +{ +#ifdef usestubs + set_debug_traps (); + breakpoint (); +#endif + foo(); + bar(); + return 0; +} diff --git a/gdb/testsuite/gdb.base/reread2.c b/gdb/testsuite/gdb.base/reread2.c new file mode 100644 index 00000000000..fd9f7b7ad64 --- /dev/null +++ b/gdb/testsuite/gdb.base/reread2.c @@ -0,0 +1,21 @@ +/* pr 13484 */ + +#include + +int x; + +void foo() +{ + x++; + printf("This is foo\n"); +} + +int main() +{ +#ifdef usestubs + set_debug_traps (); + breakpoint (); +#endif + foo(); + return 0; +} -- 2.30.2