1b6e6f5c7f
This commit modifies remote_add_inferior to take an extra argument try_open_exec. If this is nonzero, remote_add_inferior will attempt to open this inferior's executable as the main executable if no main executable is open already. Callers are updated appropriately. With this commit, remote debugging can now be initiated using only a "target remote" or "target extended-remote" command; no "set sysroot" or "file" commands are required, e.g. bash$ gdb -q (gdb) target remote | gdbserver - /bin/sh Remote debugging using | gdbserver - /bin/sh Process /bin/sh created; pid = 32166 stdin/stdout redirected Remote debugging using stdio Reading symbols from target:/bin/bash... One testcase required updating as a result of this commit. The test checked that GDB's "info files" command does not crash if no main executable is open, and relied on GDB's inability to access the main executable over the remote protocol. The test was updated to inhibit this new behavior. gdb/ChangeLog: * remote.c (remote_add_inferior): New argument try_open_exec. If nonzero, attempt to open the inferior's executable file as the main executable if no main executable is open already. All callers updated. * NEWS: Mention that GDB now supports automatic location and retrieval of executable + files from remote targets. gdb/doc/ChangeLog: * gdb.texinfo (Connecting to a Remote Target): Mention that GDB can access program files from remote targets that support qXfer:exec-file:read and Host I/O packets. gdb/testsuite/ChangeLog: * gdb.server/server-exec-info.exp: Inhibit GDB from accessing the main executable over the remote protocol.
35 lines
1.3 KiB
Text
35 lines
1.3 KiB
Text
# Copyright (C) 2012-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/>.
|
|
|
|
load_lib gdbserver-support.exp
|
|
|
|
# We test for skip_shlib_tests in this test because without a main
|
|
# exec file we only have the exec target loaded if shared libraries
|
|
# are present.
|
|
if {[skip_gdbserver_tests] || [skip_shlib_tests]} {
|
|
return
|
|
}
|
|
|
|
standard_testfile server.c
|
|
if [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] {
|
|
return -1
|
|
}
|
|
|
|
gdb_test_no_output "set remote pid-to-exec-file-packet off"
|
|
gdb_test "file" ".*" "file" \
|
|
{Discard symbol table from `.*'\? \(y or n\) } "y"
|
|
gdbserver_run ""
|
|
gdb_test "set sysroot remote:"
|
|
gdb_test "info files" "\r\nLocal exec file:\r\n\t<no file loaded>"
|