From 7cee1e5405310dae3ab7f6356d56f6b5f69e4b2c Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 15 Feb 2012 12:48:55 +0000 Subject: [PATCH] gdb/ 2012-02-15 Pedro Alves * 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 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. --- gdb/ChangeLog | 6 ++++ gdb/remote.c | 47 +++++++++++++++---------- gdb/testsuite/ChangeLog | 9 +++++ gdb/testsuite/gdb.base/attach.exp | 23 +++++++++++- gdb/testsuite/gdb.server/ext-attach.exp | 8 +++-- 5 files changed, 71 insertions(+), 22 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a8fb900f239..5462b5bfdd2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2012-02-15 Pedro Alves + + * 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 * NEWS: Mention enable count command. diff --git a/gdb/remote.c b/gdb/remote.c index 3187ac00328..14c343bed6f 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -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. */ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 463a6aeb8bc..86da87fbf18 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-02-15 Pedro Alves + + 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 * gdb.base/ena-dis-br.exp: Add enable count test. diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp index 87a22deab07..ff1b6bc62f7 100644 --- a/gdb/testsuite/gdb.base/attach.exp +++ b/gdb/testsuite/gdb.base/attach.exp @@ -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" + } } } diff --git a/gdb/testsuite/gdb.server/ext-attach.exp b/gdb/testsuite/gdb.server/ext-attach.exp index edf08fd4c97..d9c7c0cdc7a 100644 --- a/gdb/testsuite/gdb.server/ext-attach.exp +++ b/gdb/testsuite/gdb.server/ext-attach.exp @@ -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" -- 2.30.2