X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Finflow.c;h=28ebf7d152db18b1d43bbf5f66a213233616c10d;hb=9733f989bbfcefd612a9712683eeebff74329bf4;hp=da25bd46a78ae1d39ab45698b584a74151de042d;hpb=c5aa993b1f4add48fbdc6cc3117059f616e49875;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/inflow.c b/gdb/inflow.c index da25bd46a7..28ebf7d152 100644 --- a/gdb/inflow.c +++ b/gdb/inflow.c @@ -1,5 +1,6 @@ /* Low level interface to ptrace, for GDB when running under Unix. - Copyright 1986-87, 1989, 1991-92, 1995, 1998 Free Software Foundation, Inc. + Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, + 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GDB. @@ -22,7 +23,6 @@ #include "frame.h" #include "inferior.h" #include "command.h" -#include "signals.h" #include "serial.h" #include "terminal.h" #include "target.h" @@ -31,9 +31,6 @@ #include "gdb_string.h" #include #include -#ifdef HAVE_UNISTD_H -#include -#endif #ifdef HAVE_SYS_SELECT_H #include #endif @@ -55,21 +52,21 @@ #endif #endif /* sgtty */ +#ifdef HAVE_SYS_IOCTL_H +#include +#endif + #if defined (SIGIO) && defined (FASYNC) && defined (FD_SET) && defined (F_SETOWN) -static void -handle_sigio PARAMS ((int)); +static void handle_sigio (int); #endif -extern void _initialize_inflow PARAMS ((void)); +extern void _initialize_inflow (void); -static void -pass_signal PARAMS ((int)); +static void pass_signal (int); -static void -kill_command PARAMS ((char *, int)); +static void kill_command (char *, int); -static void -terminal_ours_1 PARAMS ((int)); +static void terminal_ours_1 (int); /* Record terminal status separately for debugger and inferior. */ @@ -123,7 +120,7 @@ gdb_has_a_terminal_flag = have_not_checked; /* Does GDB have a terminal (on stdin)? */ int -gdb_has_a_terminal () +gdb_has_a_terminal (void) { switch (gdb_has_a_terminal_flag) { @@ -175,21 +172,20 @@ gdb_has_a_terminal () fprintf_unfiltered(gdb_stderr, "[%s failed in terminal_inferior: %s]\n", \ what, strerror (errno)) -static void terminal_ours_1 PARAMS ((int)); +static void terminal_ours_1 (int); /* Initialize the terminal settings we record for the inferior, before we actually run the inferior. */ void -terminal_init_inferior_with_pgrp (pgrp) - int pgrp; +terminal_init_inferior_with_pgrp (int pgrp) { if (gdb_has_a_terminal ()) { /* We could just as well copy our_ttystate (if we felt like adding a new function SERIAL_COPY_TTY_STATE). */ if (inferior_ttystate) - free (inferior_ttystate); + xfree (inferior_ttystate); inferior_ttystate = SERIAL_GET_TTY_STATE (stdin_serial); #ifdef PROCESS_GROUP_TYPE @@ -204,16 +200,16 @@ terminal_init_inferior_with_pgrp (pgrp) } void -terminal_init_inferior () +terminal_init_inferior (void) { #ifdef PROCESS_GROUP_TYPE /* This is for Lynx, and should be cleaned up by having Lynx be a separate debugging target with a version of target_terminal_init_inferior which passes in the process group to a generic routine which does all the work (and the non-threaded child_terminal_init_inferior can just pass in - inferior_pid to the same routine). */ + inferior_ptid to the same routine). */ /* We assume INFERIOR_PID is also the child's process group. */ - terminal_init_inferior_with_pgrp (PIDGET (inferior_pid)); + terminal_init_inferior_with_pgrp (PIDGET (inferior_ptid)); #endif /* PROCESS_GROUP_TYPE */ } @@ -221,7 +217,7 @@ terminal_init_inferior () This is preparation for starting or resuming the inferior. */ void -terminal_inferior () +terminal_inferior (void) { if (gdb_has_a_terminal () && terminal_is_ours && inferior_thisrun_terminal == 0) @@ -291,7 +287,7 @@ terminal_inferior () should be called to get back to a normal state of affairs. */ void -terminal_ours_for_output () +terminal_ours_for_output (void) { terminal_ours_1 (1); } @@ -301,7 +297,7 @@ terminal_ours_for_output () so they can be restored properly later. */ void -terminal_ours () +terminal_ours (void) { terminal_ours_1 (0); } @@ -311,8 +307,7 @@ terminal_ours () flags. */ static void -terminal_ours_1 (output_only) - int output_only; +terminal_ours_1 (int output_only) { /* Checking inferior_thisrun_terminal is necessary so that if GDB is running in the background, it won't block trying @@ -323,9 +318,11 @@ terminal_ours_1 (output_only) if (!terminal_is_ours) { +#ifdef SIGTTOU /* Ignore this signal since it will happen when we try to set the pgrp. */ - void (*osigttou) (); + void (*osigttou) () = NULL; +#endif int result; terminal_is_ours = 1; @@ -336,7 +333,7 @@ terminal_ours_1 (output_only) #endif if (inferior_ttystate) - free (inferior_ttystate); + xfree (inferior_ttystate); inferior_ttystate = SERIAL_GET_TTY_STATE (stdin_serial); #ifdef HAVE_TERMIOS inferior_process_group = tcgetpgrp (0); @@ -414,18 +411,14 @@ terminal_ours_1 (output_only) /* ARGSUSED */ void -term_info (arg, from_tty) - char *arg; - int from_tty; +term_info (char *arg, int from_tty) { target_terminal_info (arg, from_tty); } /* ARGSUSED */ void -child_terminal_info (args, from_tty) - char *args; - int from_tty; +child_terminal_info (char *args, int from_tty) { if (!gdb_has_a_terminal ()) { @@ -492,10 +485,11 @@ child_terminal_info (args, from_tty) } #ifdef PROCESS_GROUP_TYPE - printf_filtered ("Process group = %d\n", inferior_process_group); + printf_filtered ("Process group = %d\n", + (int) inferior_process_group); #endif - SERIAL_PRINT_TTY_STATE (stdin_serial, inferior_ttystate); + SERIAL_PRINT_TTY_STATE (stdin_serial, inferior_ttystate, gdb_stdout); } /* NEW_TTY_PREFORK is called before forking a new child process, @@ -508,8 +502,7 @@ child_terminal_info (args, from_tty) the terminal specified in the NEW_TTY_PREFORK call. */ void -new_tty_prefork (ttyname) - char *ttyname; +new_tty_prefork (char *ttyname) { /* Save the name for later, for determining whether we and the child are sharing a tty. */ @@ -517,7 +510,7 @@ new_tty_prefork (ttyname) } void -new_tty () +new_tty (void) { register int tty; @@ -578,15 +571,13 @@ new_tty () /* ARGSUSED */ static void -kill_command (arg, from_tty) - char *arg; - int from_tty; +kill_command (char *arg, int from_tty) { - /* FIXME: This should not really be inferior_pid (or target_has_execution). + /* FIXME: This should not really be inferior_ptid (or target_has_execution). It should be a distinct flag that indicates that a target is active, cuz some targets don't have processes! */ - if (inferior_pid == 0) + if (ptid_equal (inferior_ptid, null_ptid)) error ("The program is not being run."); if (!query ("Kill the program being debugged? ")) error ("Not confirmed."); @@ -611,18 +602,17 @@ kill_command (arg, from_tty) /* ARGSUSED */ static void -pass_signal (signo) - int signo; +pass_signal (int signo) { #ifndef _WIN32 - kill (PIDGET (inferior_pid), SIGINT); + kill (PIDGET (inferior_ptid), SIGINT); #endif } static void (*osig) (); void -set_sigint_trap () +set_sigint_trap (void) { if (attach_flag || inferior_thisrun_terminal) { @@ -631,7 +621,7 @@ set_sigint_trap () } void -clear_sigint_trap () +clear_sigint_trap (void) { if (attach_flag || inferior_thisrun_terminal) { @@ -643,8 +633,7 @@ clear_sigint_trap () static void (*old_sigio) (); static void -handle_sigio (signo) - int signo; +handle_sigio (int signo) { int numfds; fd_set readfds; @@ -658,7 +647,7 @@ handle_sigio (signo) { #ifndef _WIN32 if ((*target_activity_function) ()) - kill (inferior_pid, SIGINT); + kill (PIDGET (inferior_ptid), SIGINT); #endif } } @@ -666,7 +655,7 @@ handle_sigio (signo) static int old_fcntl_flags; void -set_sigio_trap () +set_sigio_trap (void) { if (target_activity_function) { @@ -678,7 +667,7 @@ set_sigio_trap () } void -clear_sigio_trap () +clear_sigio_trap (void) { if (target_activity_function) { @@ -688,17 +677,17 @@ clear_sigio_trap () } #else /* No SIGIO. */ void -set_sigio_trap () +set_sigio_trap (void) { if (target_activity_function) - abort (); + internal_error (__FILE__, __LINE__, "failed internal consistency check"); } void -clear_sigio_trap () +clear_sigio_trap (void) { if (target_activity_function) - abort (); + internal_error (__FILE__, __LINE__, "failed internal consistency check"); } #endif /* No SIGIO. */ @@ -713,7 +702,7 @@ clear_sigio_trap () calls setpgrp and a setpgrp which does nothing (any system with job control will have one or the other). */ int -gdb_setpgid () +gdb_setpgid (void) { int retval = 0; @@ -738,7 +727,7 @@ gdb_setpgid () } void -_initialize_inflow () +_initialize_inflow (void) { add_info ("terminal", term_info, "Print inferior's saved terminal status."); @@ -746,7 +735,7 @@ _initialize_inflow () add_com ("kill", class_run, kill_command, "Kill execution of program being debugged."); - inferior_pid = 0; + inferior_ptid = null_ptid; terminal_is_ours = 1;