[binutils-gdb] windows gdb: Fix -target-attach result
Claudiu Zissulescu via Gdb-cvs <[email protected]> Thu, 25 Jun 2026 14:43:33 +0000 (GMT)
| Newsgroups | gmane.comp.gdb.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9deb94fdd530dcb988dc90abab392f15088ef6fe commit 9deb94fdd530dcb988dc90abab392f15088ef6fe Author: Claudiu Zissulescu <[email protected]> Date: Fri Jun 12 04:25:40 2026 -0500 windows gdb: Fix -target-attach result This patch fixes a Windows issue with "-target-attach <pid>", where "running" is emitted instead of "done". The "done" message should be synchronous for "-target-attach", but "mi_proceeded" variable is incorrectly set to "1" when clear_proceed_status(0, true) is called. As a result, "mi_interp::on_about_to_proceed" sets mi_proceed to 1, and later "mi_interp::on_resume" emits "running" instead of "done". Remove redundant clear_proceed_status(0) call (the notify argument is set to true by default). The init_wait_for_inferior(), which runs on the very next line, already calls clear_proceed_status (0, false). A new test is added too. Signed-off-by: Claudiu Zissulescu <[email protected]> Approved-By: Pedro Alves <[email protected]> Approved-By: Simon Marchi <[email protected]> Diff: --- gdb/testsuite/gdb.mi/mi-attach.c | 37 +++++++++++++++++++++++++++++++++++++ gdb/testsuite/gdb.mi/mi-attach.exp | 33 +++++++++++++++++++++++++++++++++ gdb/windows-nat.c | 1 - 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.mi/mi-attach.c b/gdb/testsuite/gdb.mi/mi-attach.c new file mode 100644 index 00000000000..0ec0a0c161f --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi-attach.c @@ -0,0 +1,37 @@ +/* Copyright 2026 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 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/>. */ + +#include <stdio.h> +#include <stdlib.h> + +#ifdef _WIN32 +#include <windows.h> +#else +#include <unistd.h> +#endif + +int +main (void) +{ + /* Sleep long enough (5 min) to be attached to. */ +#ifdef _WIN32 + Sleep (300000); +#else + sleep (300); +#endif + return 0; +} diff --git a/gdb/testsuite/gdb.mi/mi-attach.exp b/gdb/testsuite/gdb.mi/mi-attach.exp new file mode 100644 index 00000000000..9c58ccb3728 --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi-attach.exp @@ -0,0 +1,33 @@ +# Copyright 2026 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/>. + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +require can_spawn_for_attach + +standard_testfile + +if {[build_executable "failed to prepare" $testfile $srcfile {debug}]} { + return +} + +set spawn_id [spawn_wait_for_attach $::binfile] +set prog_pid [spawn_id_get_pid $spawn_id] + +mi_clean_restart + +mi_gdb_test "-target-attach $prog_pid" ".*\\^done.*" "attach \$PROG_PID" +kill_wait_spawned_process $spawn_id diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 3399b8c3303..d2940afadff 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -1935,7 +1935,6 @@ windows_nat_target::do_initial_windows_stuff (DWORD pid, bool attaching) if (!inf->target_is_pushed (this)) inf->push_target (this); windows_clear_solib (); - clear_proceed_status (0); init_wait_for_inferior (); inferior_appeared (inf, pid);