2012-02-15  Pedro Alves  <palves@redhat.com>

	* remote.c (remote_detach_1, extended_remote_attach_1): Tweak
	output to be like native targets'.
	(remote_pid_to_str): Special case the null ptid.

gdb/testsuite/
2012-02-15  Pedro Alves  <palves@redhat.com>

	Support extended-remote.  Avoid cascading timeouts.

	* gdb.base/attach.exp (do_attach_tests): Add expected output for
	the extended-remote target.  If attaching with no file fails, load
	the file manually.
	* gdb.server/ext-attach.exp: Adjust expected attach/detach output.
This commit is contained in:
Pedro Alves 2012-02-15 12:48:55 +00:00
parent f9fa4a6341
commit 7cee1e5405
5 changed files with 71 additions and 22 deletions

View File

@ -1,3 +1,9 @@
2012-02-15 Pedro Alves <palves@redhat.com>
* remote.c (remote_detach_1, extended_remote_attach_1): Tweak
output to be like native targets'.
(remote_pid_to_str): Special case the null ptid.
2012-02-14 Stan Shebs <stan@codesourcery.com>
* NEWS: Mention enable count command.

View File

@ -4205,6 +4205,16 @@ remote_detach_1 (char *args, int from_tty, int extended)
if (!target_has_execution)
error (_("No process to detach from."));
if (from_tty)
{
char *exec_file = get_exec_file (0);
if (exec_file == NULL)
exec_file = "";
printf_unfiltered (_("Detaching from program: %s, %s\n"), exec_file,
target_pid_to_str (pid_to_ptid (pid)));
gdb_flush (gdb_stdout);
}
/* Tell the remote target to detach. */
if (remote_multi_process_p (rs))
sprintf (rs->buf, "D;%x", pid);
@ -4221,19 +4231,8 @@ remote_detach_1 (char *args, int from_tty, int extended)
else
error (_("Can't detach process."));
if (from_tty)
{
if (remote_multi_process_p (rs))
printf_filtered (_("Detached from remote %s.\n"),
target_pid_to_str (pid_to_ptid (pid)));
else
{
if (extended)
puts_filtered (_("Detached from remote process.\n"));
else
puts_filtered (_("Ending remote debugging.\n"));
}
}
if (from_tty && !extended)
puts_filtered (_("Ending remote debugging.\n"));
discard_pending_stop_replies (pid);
target_mourn_inferior ();
@ -4286,6 +4285,20 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty)
if (remote_protocol_packets[PACKET_vAttach].support == PACKET_DISABLE)
error (_("This target does not support attaching to a process"));
if (from_tty)
{
char *exec_file = get_exec_file (0);
if (exec_file)
printf_unfiltered (_("Attaching to program: %s, %s\n"), exec_file,
target_pid_to_str (pid_to_ptid (pid)));
else
printf_unfiltered (_("Attaching to %s\n"),
target_pid_to_str (pid_to_ptid (pid)));
gdb_flush (gdb_stdout);
}
sprintf (rs->buf, "vAttach;%x", pid);
putpkt (rs->buf);
getpkt (&rs->buf, &rs->buf_size, 0);
@ -4293,10 +4306,6 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty)
if (packet_ok (rs->buf,
&remote_protocol_packets[PACKET_vAttach]) == PACKET_OK)
{
if (from_tty)
printf_unfiltered (_("Attached to %s\n"),
target_pid_to_str (pid_to_ptid (pid)));
if (!non_stop)
{
/* Save the reply for later. */
@ -8823,7 +8832,9 @@ remote_pid_to_str (struct target_ops *ops, ptid_t ptid)
static char buf[64];
struct remote_state *rs = get_remote_state ();
if (ptid_is_pid (ptid))
if (ptid_equal (ptid, null_ptid))
return normal_pid_to_str (ptid);
else if (ptid_is_pid (ptid))
{
/* Printing an inferior target id. */

View File

@ -1,3 +1,12 @@
2012-02-15 Pedro Alves <palves@redhat.com>
Support extended-remote. Avoid cascading timeouts.
* gdb.base/attach.exp (do_attach_tests): Add expected output for
the extended-remote target. If attaching with no file fails, load
the file manually.
* gdb.server/ext-attach.exp: Adjust expected attach/detach output.
2012-02-14 Stan Shebs <stan@codesourcery.com>
* gdb.base/ena-dis-br.exp: Add enable count test.

View File

@ -160,6 +160,10 @@ proc do_attach_tests {} {
# Response expected on Cygwin
pass "$test"
}
-re "Attaching to.*, process $boguspid.*failed.*$gdb_prompt $" {
# Response expected on the extended-remote target.
pass "$test"
}
}
# Verify that we can attach to the process by first giving its
@ -224,7 +228,8 @@ proc do_attach_tests {} {
# Verify that we can attach to the process just by giving the
# process ID.
set test "set file, before attach2"
set test "attach2, with no file"
set found_exec_file 0
gdb_test_multiple "attach $testpid" "$test" {
-re "Attaching to process $testpid.*Load new symbol table from \"$escapedbinfile\.exe\".*y or n. $" {
# On Cygwin, the DLL's symbol tables are loaded prior to the
@ -233,9 +238,25 @@ proc do_attach_tests {} {
# executable.
gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \
"$test (reset file)"
set found_exec_file 1
}
-re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*main.*at .*$gdb_prompt $" {
pass "$test"
set found_exec_file 1
}
}
if {$found_exec_file == 0} {
set test "load file manually, after attach2"
gdb_test_multiple "file $binfile" "$test" {
-re "A program is being debugged already..*Are you sure you want to change the file.*y or n. $" {
gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \
"$test (re-read)"
}
-re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $" {
pass "$test"
}
}
}

View File

@ -57,14 +57,16 @@ if { [istarget "*-*-cygwin*"] } {
set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
}
gdb_test "attach $testpid" "Attached to.*" \
gdb_test "attach $testpid" \
"Attaching to program: .*, process $testpid.*(in|at).*" \
"attach to remote program 1"
gdb_test "backtrace" ".*main.*" "backtrace 1"
gdb_test "detach" "Detached from remote process.*\\."
gdb_test "detach" "Detaching from program.*process.*"
gdb_test "backtrace" "No stack\\." "backtrace with no program"
gdb_test "attach $testpid" "Attached to.*" \
gdb_test "attach $testpid" \
"Attaching to program: .*, process $testpid.*(in|at).*" \
"attach to remote program 2"
gdb_test "backtrace" ".*main.*" "backtrace 2"