From: Pedro Alves Date: Fri, 14 Mar 2008 22:58:58 +0000 (+0000) Subject: * inflow.c (gdb_getpgrp): New. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=64a0ac840e206800f58917891a9caeaaa0c5478c;p=binutils-gdb.git * inflow.c (gdb_getpgrp): New. (gdb_has_a_terminal): Use get_getpgrp. (terminal_ours_1): If attach_flag is set, don't refetch inferior_process_group. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 15098bcd3e0..828462e2dbc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2008-03-14 Pedro Alves + + * inflow.c (gdb_getpgrp): New. + (gdb_has_a_terminal): Use get_getpgrp. + (terminal_ours_1): If attach_flag is set, don't refetch + inferior_process_group. + 2008-03-14 Pedro Alves * features/library-list.dtd: Allow "section" elements as children diff --git a/gdb/inflow.c b/gdb/inflow.c index d003a98dcd1..cc4b5dea435 100644 --- a/gdb/inflow.c +++ b/gdb/inflow.c @@ -98,6 +98,24 @@ static const char *inferior_thisrun_terminal; int terminal_is_ours; +#ifdef PROCESS_GROUP_TYPE +static PROCESS_GROUP_TYPE +gdb_getpgrp (void) +{ + int process_group = -1; +#ifdef HAVE_TERMIOS + process_group = tcgetpgrp (0); +#endif +#ifdef HAVE_TERMIO + process_group = getpgrp (); +#endif +#ifdef HAVE_SGTTY + ioctl (0, TIOCGPGRP, &process_group); +#endif + return process_group; +} +#endif + enum { yes, no, have_not_checked @@ -132,15 +150,7 @@ gdb_has_a_terminal (void) if (our_ttystate != NULL) { gdb_has_a_terminal_flag = yes; -#ifdef HAVE_TERMIOS - our_process_group = tcgetpgrp (0); -#endif -#ifdef HAVE_TERMIO - our_process_group = getpgrp (); -#endif -#ifdef HAVE_SGTTY - ioctl (0, TIOCGPGRP, &our_process_group); -#endif + our_process_group = gdb_getpgrp (); } } @@ -339,15 +349,12 @@ terminal_ours_1 (int output_only) if (inferior_ttystate) xfree (inferior_ttystate); inferior_ttystate = serial_get_tty_state (stdin_serial); -#ifdef HAVE_TERMIOS - inferior_process_group = tcgetpgrp (0); -#endif -#ifdef HAVE_TERMIO - inferior_process_group = getpgrp (); -#endif -#ifdef HAVE_SGTTY - ioctl (0, TIOCGPGRP, &inferior_process_group); -#endif + + if (!attach_flag) + /* If setpgrp failed in terminal_inferior, this would give us + our process group instead of the inferior's. See + terminal_inferior for details. */ + inferior_process_group = gdb_getpgrp (); /* Here we used to set ICANON in our ttystate, but I believe this was an artifact from before when we used readline. Readline sets