aboutsummaryrefslogtreecommitdiff
path: root/gdb/doc
diff options
context:
space:
mode:
authorSergio Durigan Junior <sergiodj@redhat.com>2016-12-22 22:14:02 -0500
committerSergio Durigan Junior <sergiodj@redhat.com>2017-06-07 19:56:09 -0400
commitaefd8b33d97bded58e51d75271f99e1eaec9fb28 (patch)
treed0d9b9017717644c5344682003d24c7dba73963b /gdb/doc
parent2090129c36c7e582943b7d300968d19b46160d84 (diff)
downloadgdb-aefd8b33d97bded58e51d75271f99e1eaec9fb28.zip
gdb-aefd8b33d97bded58e51d75271f99e1eaec9fb28.tar.gz
gdb-aefd8b33d97bded58e51d75271f99e1eaec9fb28.tar.bz2
Implement proper "startup-with-shell" support on gdbserver
This patch implements the proper support for the "startup-with-shell" feature on gdbserver. A new packet is added, QStartupWithShell, and it is sent on initialization. If the host sends a "QStartupWithShell:1", it means the inferior shall be started using a shell. If the host sends a "QStartupWithShell:0", it means the inferior shall be started without using a shell. Any other value is considered an error. There is no way to remotely set the shell that will be used by the target to start the inferior. In order to do that, the user must start gdbserver while providing a shell via the $SHELL environment variable. The same is true for the host side. The "set startup-with-shell" setting from the host side is used to decide whether to start the remote inferior using a shell. This same setting is also used to decide whether to use a shell to start the host inferior; this means that it is not really possible to start the inferior using different mechanisms on target and host. A documentation patch is included, along with a new testcase for the feature. gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS (Changes since GDB 8.0): Announce that GDBserver is now able to start inferiors using a shell. (New remote packets): Announce new packet "QStartupWithShell". * remote.c: Add PACKET_QStartupWithShell. (extended_remote_create_inferior): Handle new PACKET_QStartupWithShell. (remote_protocol_features) <QStartupWithShell>: New entry for PACKET_QStartupWithShell. (_initialize_remote): Call "add_packet_config_cmd" for QStartupShell. gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * server.c (handle_general_set): Handle new packet "QStartupWithShell". (handle_query): Add "QStartupWithShell" to the list of supported packets. (gdbserver_usage): Add help text explaining the new "--startup-with-shell" and "--no-startup-with-shell" CLI options. (captured_main): Recognize and act upon the presence of the new CLI options. gdb/testsuite/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/startup-with-shell.c: New file. * gdb.base/startup-with-shell.exp: Likewise. gdb/doc/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (Starting) <startup-with-shell>: Add @anchor. (Connecting) <Remote Packet>: Add "startup-with-shell" and "QStartupWithShell" to the table. (Remote Protocol) <QStartupWithShell>: New item, explaining the packet.
Diffstat (limited to 'gdb/doc')
-rw-r--r--gdb/doc/ChangeLog8
-rw-r--r--gdb/doc/gdb.texinfo39
2 files changed, 47 insertions, 0 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 000f3c8..868cde9 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,11 @@
+2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
+
+ * gdb.texinfo (Starting) <startup-with-shell>: Add @anchor.
+ (Connecting) <Remote Packet>: Add "startup-with-shell"
+ and "QStartupWithShell" to the table.
+ (Remote Protocol) <QStartupWithShell>: New item, explaining the
+ packet.
+
2017-05-22 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.texinfo (Packets): Document vMustReplyEmpty packet.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 9fb70f6..8d7a1c9 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -2153,6 +2153,7 @@ This command is available when debugging locally on most targets, excluding
@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
@kindex set startup-with-shell
+@anchor{set startup-with-shell}
@item set startup-with-shell
@itemx set startup-with-shell on
@itemx set startup-with-shell off
@@ -20811,6 +20812,10 @@ are:
@tab @code{QDisableRandomization}
@tab @code{set disable-randomization}
+@item @code{startup-with-shell}
+@tab @code{QStartupWithShell}
+@tab @code{set startup-with-shell}
+
@item @code{conditional-breakpoints-packet}
@tab @code{Z0 and Z1}
@tab @code{Support for target-side breakpoint condition evaluation}
@@ -36435,6 +36440,40 @@ by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
This should only be done on targets that actually support disabling
address space randomization.
+@item QStartupWithShell:@var{value}
+@cindex startup with shell, remote request
+@cindex @samp{QStartupWithShell} packet
+On UNIX-like targets, it is possible to start the inferior using a
+shell program. This is the default behavior on both @value{GDBN} and
+@command{gdbserver} (@pxref{set startup-with-shell}). This packet is
+used to inform @command{gdbserver} whether it should start the
+inferior using a shell or not.
+
+If @var{value} is @samp{0}, @command{gdbserver} will not use a shell
+to start the inferior. If @var{value} is @samp{1},
+@command{gdbserver} will use a shell to start the inferior. All other
+values are considered an error.
+
+This packet is only available in extended mode (@pxref{extended
+mode}).
+
+Reply:
+@table @samp
+@item OK
+The request succeeded.
+
+@item E @var{nn}
+An error occurred. The error number @var{nn} is given as hex digits.
+@end table
+
+This packet is not probed by default; the remote stub must request it,
+by supplying an appropriate @samp{qSupported} response
+(@pxref{qSupported}). This should only be done on targets that
+actually support starting the inferior using a shell.
+
+Use of this packet is controlled by the @code{set startup-with-shell}
+command; @pxref{set startup-with-shell}.
+
@item qfThreadInfo
@itemx qsThreadInfo
@cindex list active threads, remote request