+2015-08-24 Pedro Alves <palves@redhat.com>
+
+ * inferiors.c (get_first_process): New function.
+ * inferiors.h (get_first_process): New declaration.
+ * remote-utils.c (read_ptid): Default to the first process in the
+ list, instead of to the current thread's process.
+
2015-08-24 Pedro Alves <palves@redhat.com>
* debug.c: Include gdb_sys_time.h instead of sys/time.h.
find_inferior_id (&all_processes, pid_to_ptid (pid));
}
+/* Wrapper around get_first_inferior to return a struct process_info *. */
+
+struct process_info *
+get_first_process (void)
+{
+ return (struct process_info *) get_first_inferior (&all_processes);
+}
+
/* Return non-zero if INF, a struct process_info, was started by us,
i.e. not attached to. */
struct inferior_list_entry *get_first_inferior (struct inferior_list *list);
+/* Return the first process in the processes list. */
+struct process_info *get_first_process (void);
+
struct process_info *add_process (int pid, int attached);
void remove_process (struct process_info *process);
struct process_info *find_process_pid (int pid);
/* No multi-process. Just a tid. */
tid = hex_or_minus_one (p, &pp);
- /* Since the stub is not sending a process id, then default to
- what's in the current inferior. */
- pid = ptid_get_pid (current_ptid);
+ /* Since GDB is not sending a process id (multi-process extensions
+ are off), then there's only one process. Default to the first in
+ the list. */
+ pid = pid_of (get_first_process ());
if (obuf)
*obuf = pp;
+2015-08-24 Pedro Alves <palves@redhat.com>
+
+ * gdb.server/connect-without-multi-process.c: New file.
+ * gdb.server/connect-without-multi-process.exp: New file.
+
2015-08-24 Luis Machado <lgustavo@codesourcery.com>
* gdb.opt/inline-markers.c: Make z int.
--- /dev/null
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2015 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/>. */
+
+int
+main (void)
+{
+ return 0;
+}
--- /dev/null
+# Copyright 2015 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 that we can connect to GDBserver with the multiprocess
+# extensions disabled, and run to main.
+
+load_lib gdbserver-support.exp
+
+if {[skip_gdbserver_tests]} {
+ return
+}
+
+standard_testfile
+
+if {[build_executable "failed to prepare" $testfile $srcfile debug]} {
+ return -1
+}
+
+# Test spawning gdbserver with a program, connect to it and run to
+# main, with both multiprocess extensions on and off.
+proc do_test {multiprocess} {
+ global binfile
+
+ clean_restart $binfile
+
+ # Make sure we're disconnected, in case we're testing with an
+ # extended-remote board, therefore already connected.
+ gdb_test "disconnect" ".*"
+
+ gdb_test_no_output "set remote multiprocess-feature $multiprocess"
+
+ set res [gdbserver_spawn ${binfile}]
+ set gdbserver_protocol [lindex $res 0]
+ set gdbserver_gdbport [lindex $res 1]
+
+ gdb_test "break main" "Breakpoint .*"
+
+ gdb_test "target $gdbserver_protocol $gdbserver_gdbport" \
+ "Remote debugging using .*" \
+ "target $gdbserver_protocol"
+
+ gdb_test "continue" "main .*" "continue to main"
+}
+
+foreach multiprocess { "off" "auto" } {
+ with_test_prefix "multiprocess=$multiprocess" {
+ do_test $multiprocess
+ }
+}