diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infcmd.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/catch-follow-exec.c | 10 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/catch-follow-exec.exp | 58 |
5 files changed, 80 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ee5c9ea..605aeef 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2018-07-26 Tom de Vries <tdevries@suse.de> + PR breakpoints/23366 + * infcmd.c (info_program_command): Handle ptid == minus_one_ptid. + +2018-07-26 Tom de Vries <tdevries@suse.de> + * dwarf2read.c (read_subrange_type): Warn if DW_AT_upper_bound or DW_AT_count can't be translated to a dynamic prop. diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 821bcc6..74d5956 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 ab50f70..aa8b06a 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-07-26 Tom de Vries <tdevries@suse.de> + + 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 <tdevries@suse.de> * 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 0000000..fa68a2a --- /dev/null +++ b/gdb/testsuite/gdb.base/catch-follow-exec.c @@ -0,0 +1,10 @@ +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +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 0000000..0e32ed4 --- /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 <http://www.gnu.org/licenses/>. + +# 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 |