* serial.h (SERIAL_SET_TTY_STATE): Comment return value.
[deliverable/binutils-gdb.git] / gdb / inflow.c
index 55569d08fe549163d1d43618d3f6dfe8040c78b4..f3757d5e3a98b760a12ecbc917770c4bc3764c09 100644 (file)
@@ -25,6 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "serial.h"
 #include "terminal.h"
 #include "target.h"
+#include "thread.h"
 
 #include <signal.h>
 #include <fcntl.h>
@@ -140,12 +141,15 @@ gdb_has_a_terminal ()
              our_process_group = tcgetpgrp (0);
 #endif
 #ifdef HAVE_SGTTY
-             ioctl (scb->fd, TIOCGPGRP, &our_process_group);
+             ioctl (0, TIOCGPGRP, &our_process_group);
 #endif
            }
        }
 
       return gdb_has_a_terminal_flag == yes;
+    default:
+      /* "Can't happen".  */
+      return 0;
     }
 }
 
@@ -153,7 +157,7 @@ gdb_has_a_terminal ()
 
 #define        OOPSY(what)     \
   if (result == -1)    \
-    fprintf(stderr, "[%s failed in terminal_inferior: %s]\n", \
+    fprintf_unfiltered(gdb_stderr, "[%s failed in terminal_inferior: %s]\n", \
            what, strerror (errno))
 
 static void terminal_ours_1 PARAMS ((int));
@@ -172,7 +176,11 @@ terminal_init_inferior ()
        free (inferior_ttystate);
       inferior_ttystate = SERIAL_GET_TTY_STATE (stdin_serial);
 #ifdef PROCESS_GROUP_TYPE
+#ifdef PIDGET                  /* XXX Lynx */
+      inferior_process_group = PIDGET (inferior_pid);
+#else
       inferior_process_group = inferior_pid;
+#endif
 #endif
 
       /* Make sure that next time we call terminal_inferior (which will be
@@ -235,7 +243,7 @@ terminal_inferior ()
 #endif
 
 #ifdef HAVE_SGTTY
-         result = ioctl (0, TIOCSPGRP, inferior_process_group);
+         result = ioctl (0, TIOCSPGRP, &inferior_process_group);
          if (!attach_flag)
            OOPSY ("TIOCSPGRP");
 #endif
@@ -305,7 +313,7 @@ terminal_ours_1 (output_only)
       inferior_process_group = tcgetpgrp (0);
 #endif
 #ifdef HAVE_SGTTY
-      ioctl (scb->fd, TIOCGPGRP, &inferior_process_group);
+      ioctl (0, TIOCGPGRP, &inferior_process_group);
 #endif
 
       /* Here we used to set ICANON in our ttystate, but I believe this
@@ -325,12 +333,19 @@ terminal_ours_1 (output_only)
        {
 #ifdef HAVE_TERMIOS
          result = tcsetpgrp (0, our_process_group);
-         OOPSY ("tcsetpgrp");
+#if 0
+         /* This fails on Ultrix with EINVAL if you run the testsuite
+            in the background with nohup, and then log out.  GDB never
+            used to check for an error here, so perhaps there are other
+            such situations as well.  */
+         if (result == -1)
+           fprintf_unfiltered (gdb_stderr, "[tcsetpgrp failed in terminal_ours: %s]\n",
+                    strerror (errno));
 #endif
+#endif /* termios */
 
 #ifdef HAVE_SGTTY
-         result = ioctl (0, TIOCSPGRP, our_process_group);
-         OOPSY ("TIOCSPGRP");
+         result = ioctl (0, TIOCSPGRP, &our_process_group);
 #endif
        }
 
@@ -521,12 +536,14 @@ kill_command (arg, from_tty)
     error ("Not confirmed.");
   target_kill ();
 
+  init_thread_list();          /* Destroy thread info */
+
   /* Killing off the inferior can leave us with a core file.  If so,
      print the state we are left in.  */
   if (target_has_stack) {
     printf_filtered ("In %s,\n", current_target->to_longname);
     if (selected_frame == NULL)
-      fputs_filtered ("No selected stack frame.\n", stdout);
+      fputs_filtered ("No selected stack frame.\n", gdb_stdout);
     else
       print_stack_frame (selected_frame, selected_frame_level, 1);
   }
This page took 0.024429 seconds and 4 git commands to generate.