aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2008-03-14 22:58:58 +0000
committerPedro Alves <palves@redhat.com>2008-03-14 22:58:58 +0000
commit64a0ac840e206800f58917891a9caeaaa0c5478c (patch)
treec4bf66700ff76c64d206ed6f197d61ecf26912e4
parent1fddbabb01cdd8aa6400ca1ff8461259f90ca126 (diff)
downloadgdb-64a0ac840e206800f58917891a9caeaaa0c5478c.zip
gdb-64a0ac840e206800f58917891a9caeaaa0c5478c.tar.gz
gdb-64a0ac840e206800f58917891a9caeaaa0c5478c.tar.bz2
* 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.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/inflow.c43
2 files changed, 32 insertions, 18 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 15098bc..828462e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2008-03-14 Pedro Alves <pedro@codesourcery.com>
+ * 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 <pedro@codesourcery.com>
+
* features/library-list.dtd: Allow "section" elements as children
of "library". Add "section" element and describe its attributes.
diff --git a/gdb/inflow.c b/gdb/inflow.c
index d003a98..cc4b5de 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