diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ee5c9ea478e..605aeef603b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-07-26 Tom de Vries + + PR breakpoints/23366 + * infcmd.c (info_program_command): Handle ptid == minus_one_ptid. + 2018-07-26 Tom de Vries * dwarf2read.c (read_subrange_type): Warn if DW_AT_upper_bound or diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 821bcc6544c..74d5956765f 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2091,7 +2091,7 @@ info_program_command (const char *args, int from_tty) get_last_target_status (&ptid, &ws); } - if (ptid == null_ptid) + if (ptid == null_ptid || ptid == minus_one_ptid) error (_("No selected thread.")); thread_info *tp = find_thread_ptid (ptid); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ab50f70e28c..aa8b06a0723 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-07-26 Tom de Vries + + PR breakpoints/23366 + * gdb.base/catch-follow-exec.c: New test. + * gdb.base/catch-follow-exec.exp: New file. + 2018-07-25 Tom de Vries * gdb.base/vla-optimized-out-o3.exp: New file. Reuse diff --git a/gdb/testsuite/gdb.base/catch-follow-exec.c b/gdb/testsuite/gdb.base/catch-follow-exec.c new file mode 100644 index 00000000000..fa68a2a34e4 --- /dev/null +++ b/gdb/testsuite/gdb.base/catch-follow-exec.c @@ -0,0 +1,10 @@ +#include +#include +#include + +int +main (void) +{ + char *exec_args[] = { "/bin/ls", "ppp", NULL }; + execve (exec_args[0], exec_args, NULL); +} diff --git a/gdb/testsuite/gdb.base/catch-follow-exec.exp b/gdb/testsuite/gdb.base/catch-follow-exec.exp new file mode 100644 index 00000000000..0e32ed4a6f6 --- /dev/null +++ b/gdb/testsuite/gdb.base/catch-follow-exec.exp @@ -0,0 +1,58 @@ +# Copyright 2018 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 . + +# Check whether finish respects the print pretty user setting when printing the +# function result. + +standard_testfile + +if {[build_executable "failed to prepare" $testfile $srcfile debug] == -1} { + return -1 +} + +if { ![remote_file target exists /bin/bash] } { + unsupported "no bash" + return +} + +if { ![remote_file target exists /bin/ls] } { + unsupported "no ls" + return +} + +proc catch_follow_exec { } { + global binfile + global GDB + + set test "catch-follow-exec" + + append FLAGS " \"$binfile\"" + append FLAGS " -batch" + append FLAGS " -ex \"catch exec\"" + append FLAGS " -ex \"set follow-exec-mode new\"" + append FLAGS " -ex \"run\"" + append FLAGS " -ex \"info prog\"" + + catch {exec /bin/bash -c "$GDB $FLAGS"} catchlog + send_log "$catchlog\n" + + if { [regexp {No selected thread} $catchlog] } { + pass $test + } else { + fail $test + } +} + +catch_follow_exec