From 3207ec212c07f4564cd272d2d2cc50a4b1f25813 Mon Sep 17 00:00:00 2001 From: Kevin Buettner Date: Tue, 27 Mar 2001 01:32:45 +0000 Subject: [PATCH] Add new step-line test. --- gdb/testsuite/ChangeLog | 9 +++ gdb/testsuite/gdb.base/Makefile.in | 3 +- gdb/testsuite/gdb.base/step-line.c | 84 ++++++++++++++++++++++++ gdb/testsuite/gdb.base/step-line.exp | 95 ++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/step-line.inp | 41 ++++++++++++ 5 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 gdb/testsuite/gdb.base/step-line.c create mode 100644 gdb/testsuite/gdb.base/step-line.exp create mode 100644 gdb/testsuite/gdb.base/step-line.inp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1e6896ec0c1..26a60774316 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2001-03-26 Kevin Buettner + + * gdb.base/Makefile.in (EXECUTABLES): Add step-line. + * gdb.base/step-line.exp: New file. Test step/next in presence of + #line directives. + * gdb.base/step-line.c: New file. Test program for the above. + * gdb.base/step-line.inp: New file. We pretend that this file has + been transformed by some other tool into step-line.c. + 2001-03-21 Jim Blandy * gdb.c++/userdef.exp: Check that GDB tolerates whitespace in diff --git a/gdb/testsuite/gdb.base/Makefile.in b/gdb/testsuite/gdb.base/Makefile.in index 7dbe519cf9a..c878f15de7c 100644 --- a/gdb/testsuite/gdb.base/Makefile.in +++ b/gdb/testsuite/gdb.base/Makefile.in @@ -10,7 +10,8 @@ EXECUTABLES = all-types annota1 bitfields break \ pointers pointers2 printcmds ptype \ recurse reread reread1 restore return run \ scope section_command setshow setvar shmain sigall signals \ - solib solib_sl so-impl-ld so-indr-cl step-test structs structs2 \ + solib solib_sl so-impl-ld so-indr-cl \ + step-line step-test structs structs2 \ twice-tmp varargs vforked-prog watchpoint whatis MISCELLANEOUS = coremmap.data ../foobar.baz \ diff --git a/gdb/testsuite/gdb.base/step-line.c b/gdb/testsuite/gdb.base/step-line.c new file mode 100644 index 00000000000..f961120ab1c --- /dev/null +++ b/gdb/testsuite/gdb.base/step-line.c @@ -0,0 +1,84 @@ +/* Test step/next in presence of #line directives. + Copyright 2001 + Free Software Foundation, Inc. + + This file is part of GDB. + + 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. */ + +void dummy (int, int); +int f1 (int); +int f2 (int); + +int +main (int argc, char **argv) +{ + int i; + i = f1 (4); + i = f1 (i); + dummy (0, i); + return 0; +} + +int +f1 (int i) +{ +#line 40 "step-line.c" + dummy (1, i); +#line 24 "step-line.inp" + i = f2 (i); +#line 44 "step-line.c" + dummy (2, i); +#line 25 "step-line.inp" + i = f2 (i); +#line 48 "step-line.c" + dummy (3, i); +#line 26 "step-line.inp" + return i; +#line 52 "step-line.c" +} + +int +f2 (int i) +{ +#line 31 "step-line.inp" + int j; +#line 60 "step-line.c" + dummy (4, i); +#line 32 "step-line.inp" + j = i; +#line 64 "step-line.c" + dummy (5, i); + dummy (6, j); +#line 33 "step-line.inp" + j = j + 1; +#line 69 "step-line.c" + dummy (7, i); + dummy (8, j); +#line 34 "step-line.inp" + j = j - i; +#line 74 "step-line.c" + dummy (9, i); + dummy (10, j); +#line 35 "step-line.inp" + return i; +#line 79 "step-line.c" +} + +void +dummy (int num, int i) +{ +} diff --git a/gdb/testsuite/gdb.base/step-line.exp b/gdb/testsuite/gdb.base/step-line.exp new file mode 100644 index 00000000000..cac3128fcec --- /dev/null +++ b/gdb/testsuite/gdb.base/step-line.exp @@ -0,0 +1,95 @@ +# Copyright 2001 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 +# use this to debug: +# +#log_user 1 + +# step-line.exp -- Expect script to test stepping in files with +# #line directives. + +if $tracelevel then { + strace $tracelevel +} + +set testfile step-line +set srcfile ${srcdir}/${subdir}/${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +remote_exec build "rm -f ${binfile}" +if { [gdb_compile "${srcfile}" "${binfile}" executable {debug}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if ![runto_main] then { + fail "Can't run to main" + return 0 +} + +gdb_test "break f1" ".*Breakpoint 2 at .* file step-line.c.*" "break f1" +gdb_test "continue" \ + "Continuing.*Breakpoint 2, f1 \\(i=4\\).*dummy \\(1, i\\);" \ + "continue to f1" +gdb_test "next" \ + ".*i = f2 \\(i\\);.*" \ + "next over dummy 1" +gdb_test "next" \ + ".*dummy \\(2, i\\);.*" \ + "next to dummy 2" +gdb_test "next" \ + ".*i = f2 \\(i\\);.*" \ + "next over dummy 2" +gdb_test "step" \ + ".*f2 \\(i=4\\).*dummy \\(4, i\\);.*" \ + "step into f2" +gdb_test "next" \ + ".*j = i;.*" \ + "next over dummy 4" +gdb_test "next" \ + ".*dummy \\(5, i\\);.*" \ + "next to dummy 5" +gdb_test "next" \ + ".*dummy \\(6, j\\);.*" \ + "next to dummy 6" +gdb_test "next" \ + ".*j = SUCC \\(j\\);.*" \ + "next over dummy 6" +gdb_test "next" \ + ".*dummy \\(7, i\\);.*" \ + "next to dummy 7" +gdb_test "next" \ + ".*dummy \\(8, j\\);.*" \ + "next to dummy 8" +gdb_test "next" \ + ".*j = j - i;.*" \ + "next over dummy 8" +gdb_test "next" \ + ".*dummy \\(9, i\\);.*" \ + "next to dummy 9" +gdb_test "next" \ + ".*dummy \\(10, j\\);.*" \ + "next to dummy 10" +gdb_test "next" \ + ".*RETURN \\(j\\);.*" \ + "next over dummy 10" +return 0 diff --git a/gdb/testsuite/gdb.base/step-line.inp b/gdb/testsuite/gdb.base/step-line.inp new file mode 100644 index 00000000000..f4060a94152 --- /dev/null +++ b/gdb/testsuite/gdb.base/step-line.inp @@ -0,0 +1,41 @@ +# Test step/next in presence of #line directives +# Copyright 2001 +# 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. */ + +# We pretend that this file has been transformed by some other tool +# into step-line.c. + +FUNCTION f1 (i : INTEGER); + BEGIN + i = f2 (i); + i = f2 (i); + RETURN (i); + END + +FUNCTION f2 (i : INTEGER); + BEGIN + VARIABLE j : INTEGER + j = i; + j = SUCC (j); + j = j - i; + RETURN (j); + END + +BEGIN + VARIABLE i : INTEGER;; + +END -- 2.30.2