This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] testsuite/gdb.base/bang.exp: Allow trailing text after "Program exited normally"


On Mon, Sep 08, 2003 at 02:52:28PM -0400, Andrew Cagney wrote:
> >On Mon, Sep 08, 2003 at 01:42:01PM +0200, Corinna Vinschen wrote:
> >
> >>Hi,
> >>
> >>while testing I found that a test for ending the program in
> >>gdb.base/bang.exp failed, even though the target had actually
> >>exited normally.  The cause of the FAIL is that bang.exp doesn't
> >>expect anything after the string "Program exited normally.".
> >>On the sh target at least, the output after exiting contains a
> >>bit more text:
> >>
> >>  Program exited normally.
> >>  [Switching to process 0] 
> >>
> >>Since that trailing output after a normal exit doesn't change
> >>anything with respect to the testresult, I propose to allow
> >>trailing characters:
> >
> >
> >But isn't the [Switching to process 0] a bug?  We aren't switching
> >processes, the inferior is dead.
> 
> Yes.  The message is both a bug and a very long standing regression.
> 
> Andrew
> 
> PS: Suggest a reminder comment that SIGNALED is really "terminated with 
> signal" :-)

Good idea.  WIFSIGNALLED confuses me every time.  Checked in to HEAD.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

2003-09-08  Daniel Jacobowitz  <drow@mvista.com>

	* infrun.c (normal_stop): Don't print a message if the inferior
	has exited.

Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.111
diff -u -p -r1.111 infrun.c
--- infrun.c	7 Sep 2003 15:15:01 -0000	1.111
+++ infrun.c	8 Sep 2003 20:12:29 -0000
@@ -3054,14 +3054,22 @@ print_stop_reason (enum inferior_stop_re
 void
 normal_stop (void)
 {
+  struct target_waitstatus last;
+  ptid_t last_ptid;
+
+  get_last_target_status (&last_ptid, &last);
+
   /* As with the notification of thread events, we want to delay
      notifying the user that we've switched thread context until
      the inferior actually stops.
 
-     (Note that there's no point in saying anything if the inferior
-     has exited!) */
+     There's no point in saying anything if the inferior has exited.
+     Note that SIGNALLED here means "exited with a signal", not
+     "received a signal".  */
   if (!ptid_equal (previous_inferior_ptid, inferior_ptid)
-      && target_has_execution)
+      && target_has_execution
+      && last.kind != TARGET_WAITKIND_SIGNALLED
+      && last.kind != TARGET_WAITKIND_EXITED)
     {
       target_terminal_ours_for_output ();
       printf_filtered ("[Switching to %s]\n",


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]