--- a/gdb/testsuite/gdb.base/Makefile.in +++ b/gdb/testsuite/gdb.base/Makefile.in @@ -10,7 +10,8 @@ EXECUTABLES = a2-run advance all-types a call-strs callexit callfuncs callfwmall charset checkpoint \ chng-syms code_elim1 code_elim2 commands compiler complex \ condbreak consecutive constvars coremaker cursal cvexpr \ - dbx-test del disasm-end-cu display dump dup-sect dup-sect.debug \ + dbx-test del disasm-end-cu display dprintf-pending dump dup-sect \ + dup-sect.debug \ dup-sect.stripped ending-run execd-prog expand-psymtabs exprs \ fileio find finish fixsection float foll-exec foll-fork foll-vfork \ frame-args freebpcmd fullname funcargs gcore \ @@ -44,7 +45,7 @@ EXECUTABLES = a2-run advance all-types a wchar whatis whatis-exp catch-syscall \ pr10179 gnu_vector -MISCELLANEOUS = coremmap.data ../foobar.baz fixsectshr.sl \ +MISCELLANEOUS = coremmap.data dprintf-pendshr.sl ../foobar.baz fixsectshr.sl \ pendshr.sl shreloc1.sl shreloc2.sl twice-tmp.c \ shr1.sl shr2.sl solib_sl.sl solib1.sl solib2.sl \ unloadshr.sl unloadshr2.sl watchpoint-solib-shr.sl \ --- /dev/null +++ b/gdb/testsuite/gdb.base/dprintf-pending.c @@ -0,0 +1,31 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 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 . */ + +#include + +int k = 0; + +extern void pendfunc (int x); + +int main() +{ + pendfunc (3); /* break main here */ + pendfunc (4); + k = 1; + pendfunc (3); + return 0; +} --- /dev/null +++ b/gdb/testsuite/gdb.base/dprintf-pending.exp @@ -0,0 +1,99 @@ +# Copyright 2013 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 . + +load_lib gdbserver-support.exp + +if {[skip_shlib_tests]} { + return 0 +} + +set testfile "dprintf-pending" +set libfile "dprintf-pendshr" +set srcfile $testfile.c +set libsrc $srcdir/$subdir/$libfile.c +set binfile $objdir/$subdir/$testfile +set lib_sl $objdir/$subdir/$libfile.sl + +set lib_opts debug +set exec_opts [list debug shlib=$lib_sl] + +if { [get_compiler_info] } { + return -1 +} + +if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" + || [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $exec_opts] != ""} { + untested "Could not compile either $libsrc or $srcdir/$subdir/$srcfile." + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test \ + "dprintf pendfunc" \ + "Dprintf.*pendfunc.*pending." \ + "set pending dprintf (without format)" \ + ".*Make dprintf pending.*y or \\\[n\\\]. $" \ + "y" + +gdb_test "file ${binfile}" ".*Error in re-setting breakpoint.*" "load symbols get without format error" + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test \ + "dprintf pendfunc1, \"x=%d\\n\", x" \ + "Dprintf.*pendfunc1.*pending." \ + "set pending dprintf (without symbols)" \ + ".*Make dprintf pending.*y or \\\[n\\\]. $" \ + "y" + +gdb_test "info break" \ + "Num Type\[ \]+Disp Enb Address\[ \]+What.* +\[0-9\]+\[\t \]+dprintf.*keep y.*PENDING.*pendfunc1.*" \ +"single pending dprintf info (without symbols)" + +gdb_load ${binfile} +gdb_load_shlibs $lib_sl + +gdb_run_cmd + +gdb_test "" ".*x=3.*x=4.*x=3.*" "run to resolved dprintf (without symbols)" + +clean_restart ${binfile} +gdb_load_shlibs $lib_sl + +# +# Test setting, querying, and modifying pending breakpoints +# + +gdb_test \ + "dprintf pendfunc1, \"x=%d\\n\", x" \ + "Dprintf.*pendfunc1.*pending." \ + "set pending dprintf" \ + ".*Make dprintf pending.*y or \\\[n\\\]. $" \ + "y" + +gdb_test "info break" \ + "Num Type\[ \]+Disp Enb Address\[ \]+What.* +\[0-9\]+\[\t \]+dprintf.*keep y.*PENDING.*pendfunc1.*" \ +"single pending dprintf info" + +gdb_run_cmd + +gdb_test "" ".*x=3.*x=4.*x=3.*" "run to resolved dprintf" --- /dev/null +++ b/gdb/testsuite/gdb.base/dprintf-pendshr.c @@ -0,0 +1,28 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 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 . */ + +#include + +void pendfunc1 (int x) +{ + int y = x + 4; +} + +void pendfunc (int x) +{ + pendfunc1 (x); +}