Follow-fork message printing improvements
authorDon Breazeal <donb@codesourcery.com>
Fri, 24 Oct 2014 18:36:06 +0000 (11:36 -0700)
committerDon Breazeal <donb@codesourcery.com>
Fri, 24 Oct 2014 18:36:06 +0000 (11:36 -0700)
This commit modifies the code that prints attach and detach messages
related to following fork and vfork.  The changes include using
target_terminal_ours_for_output instead of target_terminal_ours,
printing "vfork" instead of "fork" for all vfork-related messages,
and using _() for the format strings of all of the messages.

We also add a "detach" message for when a fork parent is detached.
Previously in this case the only message was notification of attaching
to the child.  We still do not print any messages when following the
parent and detaching the child (the default).  The rationale for this
is that from the user's perspective the new child was never attached.

Note that all of these messages are only printed when 'verbose' is set
or when debugging is turned on.

The tests gdb.base/foll-fork.exp and gdb.base/foll-vfork.exp were
modified to check for the new message.

Tested on x64 Ubuntu Lucid, native only.

gdb/ChangeLog:

* infrun.c (follow_fork_inferior): Update fork message printing
to use target_terminal_ours_for_output instead of
target_terminal_ours, to use _() for all format strings, to print
"vfork" instead of "fork" for vforks, and to add a detach message.
(handle_vfork_child_exec_or_exit): Update message printing to use
target_terminal_ours_for_output instead of target_terminal_ours, to
use _() for all format strings, and to fix some formatting.

gdb/testsuite/ChangeLog:

* gdb.base/foll-fork.exp (test_follow_fork,
catch_fork_child_follow): Check for updated fork messages emitted
from infrun.c.
* gdb.base/foll-vfork.exp (vfork_parent_follow_through_step,
vfork_parent_follow_to_bp, vfork_and_exec_child_follow_to_main_bp,
vfork_and_exec_child_follow_through_step): Check for updated vfork
messages emitted from infrun.c.

gdb/ChangeLog
gdb/infrun.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/foll-fork.exp
gdb/testsuite/gdb.base/foll-vfork.exp

index ea055b1f33e3090bfb03ee51ecfc61a18b5b5396..0221554ee773259bcf63db2170e99751bd478be7 100644 (file)
@@ -1,3 +1,13 @@
+2014-10-24  Don Breazeal  <donb@codesourcery.com>
+
+       * infrun.c (follow_fork_inferior): Update fork message printing
+       to use target_terminal_ours_for_output instead of
+       target_terminal_ours, to use _() for all format strings, to print
+       "vfork" instead of "fork" for vforks, and to add a detach message.
+       (handle_vfork_child_exec_or_exit): Update message printing to use
+       target_terminal_ours_for_output instead of target_terminal_ours, to
+       use _() for all format strings, and to fix some formatting.
+
 2014-10-24  Pedro Alves  <palves@redhat.com>
 
        * Makefile.in (ALLDEPFILES): Remove vax-nat.c.
index 23c79f210e580008f4d35f7e11650dfb53db1c38..90a31235ad502642e509fa31f676284d45e354d8 100644 (file)
@@ -458,10 +458,11 @@ holding the child stopped.  Try \"set detach-on-fork\" or \
 
          if (info_verbose || debug_infrun)
            {
-             target_terminal_ours ();
+             target_terminal_ours_for_output ();
              fprintf_filtered (gdb_stdlog,
-                               "Detaching after fork from "
-                               "child process %d.\n",
+                               _("Detaching after %s from "
+                                 "child process %d.\n"),
+                               has_vforked ? "vfork" : "fork",
                                child_pid);
            }
        }
@@ -546,17 +547,13 @@ holding the child stopped.  Try \"set detach-on-fork\" or \
 
       if (info_verbose || debug_infrun)
        {
-         target_terminal_ours ();
-         if (has_vforked)
-           fprintf_filtered (gdb_stdlog,
-                             _("Attaching after process %d "
-                               "vfork to child process %d.\n"),
-                             parent_pid, child_pid);
-         else
-           fprintf_filtered (gdb_stdlog,
-                             _("Attaching after process %d "
-                               "fork to child process %d.\n"),
-                             parent_pid, child_pid);
+         target_terminal_ours_for_output ();
+         fprintf_filtered (gdb_stdlog,
+                           _("Attaching after process %d "
+                             "%s to child process %d.\n"),
+                           parent_pid,
+                           has_vforked ? "vfork" : "fork",
+                           child_pid);
        }
 
       /* Add the new inferior first, so that the target_detach below
@@ -593,7 +590,18 @@ holding the child stopped.  Try \"set detach-on-fork\" or \
          parent_inf->waiting_for_vfork_done = 0;
        }
       else if (detach_fork)
-       target_detach (NULL, 0);
+       {
+         if (info_verbose || debug_infrun)
+           {
+             target_terminal_ours_for_output ();
+             fprintf_filtered (gdb_stdlog,
+                               _("Detaching after fork from "
+                                 "child process %d.\n"),
+                               child_pid);
+           }
+
+         target_detach (NULL, 0);
+       }
 
       /* Note that the detach above makes PARENT_INF dangling.  */
 
@@ -927,18 +935,22 @@ handle_vfork_child_exec_or_exit (int exec)
 
          if (debug_infrun || info_verbose)
            {
-             target_terminal_ours ();
+             target_terminal_ours_for_output ();
 
              if (exec)
-               fprintf_filtered (gdb_stdlog,
-                                 "Detaching vfork parent process "
-                                 "%d after child exec.\n",
-                                 inf->vfork_parent->pid);
+               {
+                 fprintf_filtered (gdb_stdlog,
+                                   _("Detaching vfork parent process "
+                                     "%d after child exec.\n"),
+                                   inf->vfork_parent->pid);
+               }
              else
-               fprintf_filtered (gdb_stdlog,
-                                 "Detaching vfork parent process "
-                                 "%d after child exit.\n",
-                                 inf->vfork_parent->pid);
+               {
+                 fprintf_filtered (gdb_stdlog,
+                                   _("Detaching vfork parent process "
+                                     "%d after child exit.\n"),
+                                   inf->vfork_parent->pid);
+               }
            }
 
          target_detach (NULL, 0);
index 7a20002033dc14852b3bf71981254144fb04d452..036da6d03684e5a0c8d210eda5b67d51895425f4 100644 (file)
@@ -1,3 +1,13 @@
+2014-10-24  Don Breazeal  <donb@codesourcery.com>
+
+       * gdb.base/foll-fork.exp (test_follow_fork,
+       catch_fork_child_follow): Check for updated fork messages emitted
+       from infrun.c.
+       * gdb.base/foll-vfork.exp (vfork_parent_follow_through_step,
+       vfork_parent_follow_to_bp, vfork_and_exec_child_follow_to_main_bp,
+       vfork_and_exec_child_follow_through_step): Check for updated vfork
+       messages emitted from infrun.c.
+
 2014-10-24  Pedro Alves  <palves@redhat.com>
 
        * gdb.base/corefile.exp: Remove references to ultrix.
index ad8b750e70f682913c4acd733c2312a21989c0c6..b2e2979ee95c782596be198dcb32eebd2d0d6c84 100644 (file)
@@ -115,7 +115,11 @@ proc test_follow_fork { who detach cmd } {
        # Set up the output we expect to see after we run.
        set expected_re ""
        if {$who == "child"} {
-           set expected_re "Attaching after.* fork to.*set breakpoint here.*"
+           set expected_re "Attaching after.* fork to.*"
+           if {$detach == "on"} {
+               append expected_re "Detaching after fork from .*"
+           }
+           append expected_re "set breakpoint here.*"
        } elseif {$who == "parent" && $detach == "on"} {
            set expected_re "Detaching after fork from .*set breakpoint here.*"
        } else {
@@ -218,9 +222,9 @@ proc catch_fork_child_follow {} {
        "Temporary breakpoint.*, line $bp_after_fork.*" \
        "set follow-fork child, tbreak"
 
-    gdb_test "continue" \
-       "Attaching after.* fork to.* at .*$bp_after_fork.*" \
-       "set follow-fork child, hit tbreak"
+    set expected_re "Attaching after.* fork to.*Detaching after fork from"
+    append expected_re ".* at .*$bp_after_fork.*"
+    gdb_test "continue" $expected_re "set follow-fork child, hit tbreak"
 
     # The parent has been detached; allow time for any output it might
     # generate to arrive, so that output doesn't get confused with
index fe3663cba20fbc71be4abf24d9906bbe03a5858e..968db13a44400375d2217e2984dfa3b26b51aa82 100644 (file)
@@ -121,7 +121,7 @@ proc vfork_parent_follow_through_step {} {
 
    set test "step"
    gdb_test_multiple "next" $test {
-       -re "Detaching after fork from.*if \\(pid == 0\\).*$gdb_prompt " {
+       -re "Detaching after vfork from.*if \\(pid == 0\\).*$gdb_prompt " {
           pass $test
        }
    }
@@ -146,7 +146,7 @@ proc vfork_parent_follow_to_bp {} {
 
    set test "continue to bp"
    gdb_test_multiple "continue" $test {
-       -re ".*Detaching after fork from child process.*Breakpoint.*${bp_location}.*$gdb_prompt " {
+       -re ".*Detaching after vfork from child process.*Breakpoint.*${bp_location}.*$gdb_prompt " {
           pass $test
        }
    }
@@ -195,7 +195,7 @@ proc vfork_and_exec_child_follow_to_main_bp {} {
 
    set test "continue to bp"
    gdb_test_multiple "continue" $test {
-      -re "Attaching after.* vfork to.*xecuting new program.*Breakpoint.*vforked-prog.c:${linenum}.*$gdb_prompt " {
+      -re "Attaching after.* vfork to.*Detaching vfork parent.*xecuting new program.*Breakpoint.*vforked-prog.c:${linenum}.*$gdb_prompt " {
          pass $test
       }
    }
@@ -239,7 +239,7 @@ proc vfork_and_exec_child_follow_through_step {} {
        #
        set linenum [gdb_get_line_number "printf(\"Hello from vforked-prog" ${srcfile2}]
        gdb_test_multiple "next" $test {
-          -re "Attaching after fork to.*Executing new program.*Breakpoint.*vforked-prog.c:${linenum}.*$gdb_prompt " {
+          -re "Attaching after vfork to.*Executing new program.*Breakpoint.*vforked-prog.c:${linenum}.*$gdb_prompt " {
               pass "$test"
           }
        }