This is the mail archive of the gdb-patches@sourceware.org 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: [PATCH 1/3] Assume termios is available, remove support for termio and sgtty


On Thursday, November 02 2017, Pedro Alves wrote:

> This commit garbage collects the termio and sgtty support.
>
> GDB's terminal handling code still has support for the old termio and
> sgtty interfaces in addition to termios.  However, I think it's pretty
> safe to assume that for a long, long time, Unix-like systems provide
> termios.  GNU/Linux, Solaris, Cygwin, AIX, DJGPP, macOS and the BSDs
> all have had termios.h for many years.  Looking around the web, I
> found discussions about FreeBSD folks trying to get rid of old sgtty.h
> a decade ago:
>
>   https://lists.freebsd.org/pipermail/freebsd-hackers/2007-March/019983.html
>
> So I think support for termio and sgtty in GDB is just dead code that
> is never compiled anywhere and is just getting in the way.  For
> example, serial_noflush_set_tty_state and the raw<->cooked concerns
> mentioned in inflow.c only exist because of sgtty (see
> hardwire_noflush_set_tty_state).
>
> Regtested on GNU/Linux.
>
> Confirmed that I can still build Solaris, DJGPP and AIX GDB and that
> that GDB still includes the termios.h-guarded code.  Confirmed

"that that"

> mingw-w64 GDB still builds and skips the termios.h-guarded code.

Thanks for doing that.

You may remember that I also stumbled upon this while doing the
startup-with-shell, but I didn't have the necessary background knowledge
to do a deep cleanup.  It's always nice to see old code being removed.

> gdb/ChangeLog:
> yyyy-mm-ddd  Pedro Alves  <palves@redhat.com>
>
> 	* Makefile.in (SER_HARDWIRE): Update comment.
> 	* common/gdb_termios.h: Delete file.
> 	* common/job-control.c: Include termios.h and unistd.h instead of
> 	gdb_termios.h.
> 	(gdb_setpgid): Remove HAVE_TERMIOS || TIOCGPGRP preprocessor
> 	check.
> 	(have_job_control): Check HAVE_TERMIOS_H instead of HAVE_TERMIOS.
> 	Remove sgtty code.
> 	* configure.ac: No longer check for termio.h and sgtty.h.
> 	* configure: Regenerate.
> 	* inflow.c: Include termios.h instead of gdb_termios.h.  Replace
> 	PROCESS_GROUP_TYPE checks with HAVE_TERMIOS_H checks throughout.
> 	Replace PROCESS_GROUP_TYPE references with pid_t references
> 	throughout.
> 	(gdb_getpgrp): Delete.
> 	(set_initial_gdb_ttystate): Use tcgetpgrp instead of gdb_getpgrp.
> 	(child_terminal_inferior): Remove comment.  Remove sgtty code.
> 	(child_terminal_ours_1): Use tcgetpgrp directly instead of
> 	gdb_getpgrp.  Use serial_set_tty_state instead aof
> 	serial_noflush_set_tty_state.  Remove sgtty code.
> 	* inflow.h: Include unistd.h instead of gdb_termios.h.  Replace
> 	PROCESS_GROUP_TYPE check with HAVE_TERMIOS_H check.
> 	(inferior_process_group): Now returns pid_t.
> 	* ser-base.c (ser_base_noflush_set_tty_state): Delete.
> 	* ser-base.h (ser_base_noflush_set_tty_state): Delete.
> 	* ser-event.c (serial_event_ops): Update.
> 	* ser-go32.c (dos_noflush_set_tty_state): Delete.
> 	(dos_ops): Update.
> 	* ser-mingw.c (hardwire_ops, tty_ops, pipe_ops, tcp_ops): Update.
> 	* ser-pipe.c (pipe_ops): Update.
> 	* ser-tcp.c (tcp_ops): Update.
> 	* ser-unix.c: Include termios.h instead of gdb_termios.h.  Remove
> 	HAVE_TERMIOS checks.
> 	[HAVE_TERMIO] (struct hardwire_ttystate): Delete.
> 	[HAVE_SGTTY] (struct hardwire_ttystate): Delete.
> 	(get_tty_state, set_tty_state): Drop termio and sgtty code, and
> 	assume termios.
> 	(hardwire_noflush_set_tty_state): Delete.
> 	(hardwire_print_tty_state, hardwire_drain_output)
> 	(hardwire_flush_output, hardwire_flush_input)
> 	(hardwire_send_break, hardwire_raw, hardwire_setbaudrate)
> 	(hardwire_setstopbits, hardwire_setparity): Drop termio and sgtty
> 	code, and assume termios.
> 	(hardwire_ops): Update.
> 	(_initialize_ser_hardwire): Remove HAVE_TERMIOS check.
> 	* serial.c (serial_noflush_set_tty_state): Delete.
> 	* serial.h (serial_noflush_set_tty_state): Delete.
> 	(serial_ops::noflush_set_tty_state): Delete.
>
> gdb/gdbserver/ChangeLog:
> yyyy-mm-ddd  Pedro Alves  <palves@redhat.com>
>
> 	* configure.ac: No longer check for termio.h and sgtty.h.
> 	* configure: Regenerate.
> 	* remote-utils.c: Include termios.h instead of gdb_termios.h.
> 	(remote_open): Check HAVE_TERMIOS_H instead of HAVE_TERMIOS.
> 	Remove termio and sgtty code.
> ---
>  gdb/Makefile.in              |   9 +-
>  gdb/common/gdb_termios.h     |  78 -------------
>  gdb/common/job-control.c     |  23 ++--
>  gdb/configure                |   3 +-
>  gdb/configure.ac             |   3 +-
>  gdb/gdbserver/configure      |   2 +-
>  gdb/gdbserver/configure.ac   |   2 +-
>  gdb/gdbserver/remote-utils.c |  33 +-----
>  gdb/inflow.c                 |  88 ++++-----------
>  gdb/inflow.h                 |  12 +-
>  gdb/ser-base.c               |   8 --
>  gdb/ser-base.h               |   3 -
>  gdb/ser-event.c              |   1 -
>  gdb/ser-go32.c               |  12 --
>  gdb/ser-mingw.c              |   4 -
>  gdb/ser-pipe.c               |   1 -
>  gdb/ser-tcp.c                |   1 -
>  gdb/ser-unix.c               | 264 +------------------------------------------
>  gdb/serial.c                 |   8 --
>  gdb/serial.h                 |  12 --
>  20 files changed, 44 insertions(+), 523 deletions(-)
>  delete mode 100644 gdb/common/gdb_termios.h
>
> diff --git a/gdb/Makefile.in b/gdb/Makefile.in
> index 6cb0970..c2f6482 100644
> --- a/gdb/Makefile.in
> +++ b/gdb/Makefile.in
> @@ -729,12 +729,9 @@ XMLFILES = \
>  	$(srcdir)/features/traceframe-info.dtd \
>  	$(srcdir)/features/xinclude.dtd
>  
> -# This is ser-unix.o for any system which supports a v7/BSD/SYSV/POSIX
> -# interface to the serial port.  Hopefully if get ported to OS/2, VMS,
> -# etc., then there will be (as part of the C library or perhaps as
> -# part of libiberty) a POSIX interface.  But at least for now the
> -# host-dependent makefile fragment might need to use something else
> -# besides ser-unix.o
> +# This is ser-unix.o for any system which supports a POSIX interface
> +# to the serial port.  The host-dependent makefile fragment might need
> +# to use something else besides ser-unix.o.
>  SER_HARDWIRE = @SER_HARDWIRE@
>  
>  # The `remote' debugging target is supported for most architectures,

You also need to remove common/gdb_termios.h from HFILES_NO_SRCDIR here.

> diff --git a/gdb/common/gdb_termios.h b/gdb/common/gdb_termios.h
> deleted file mode 100644
> index 1d0544d..0000000
> --- a/gdb/common/gdb_termios.h
> +++ /dev/null
> @@ -1,78 +0,0 @@
> -/* Common terminal interface definitions for GDB and gdbserver.
> -   Copyright (C) 1986-2017 Free Software Foundation, Inc.
> -
> -   This file is part of GDB.
> -
> -   This program is free software; you can redistribute it and/or modify
> -   it under the terms of the GNU General Public License as published by
> -   the Free Software Foundation; either version 3 of the License, or
> -   (at your option) any later version.
> -
> -   This program is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> -   GNU General Public License for more details.
> -
> -   You should have received a copy of the GNU General Public License
> -   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
> -
> -#ifndef GDB_TERMIOS_H
> -#define GDB_TERMIOS_H
> -
> -/* If we're using autoconf, it will define HAVE_TERMIOS_H,
> -   HAVE_TERMIO_H and HAVE_SGTTY_H for us.  One day we can rewrite
> -   ser-unix.c and inflow.c to inspect those names instead of
> -   HAVE_TERMIOS, HAVE_TERMIO and the implicit HAVE_SGTTY (when neither
> -   HAVE_TERMIOS or HAVE_TERMIO is set).  Until then, make sure that
> -   nothing has already defined the one of the names, and do the right
> -   thing.  */
> -
> -#if !defined (HAVE_TERMIOS) && !defined(HAVE_TERMIO) && !defined(HAVE_SGTTY)
> -#if defined(HAVE_TERMIOS_H)
> -#define HAVE_TERMIOS
> -#else /* ! defined (HAVE_TERMIOS_H) */
> -#if defined(HAVE_TERMIO_H)
> -#define HAVE_TERMIO
> -#else /* ! defined (HAVE_TERMIO_H) */
> -#if defined(HAVE_SGTTY_H)
> -#define HAVE_SGTTY
> -#endif /* ! defined (HAVE_SGTTY_H) */
> -#endif /* ! defined (HAVE_TERMIO_H) */
> -#endif /* ! defined (HAVE_TERMIOS_H) */
> -#endif /* !defined (HAVE_TERMIOS) && !defined (HAVE_TERMIO) &&
> -	  !defined (HAVE_SGTTY) */
> -
> -#if defined(HAVE_TERMIOS)
> -#include <termios.h>
> -#endif
> -
> -#if !defined(_WIN32) && !defined (HAVE_TERMIOS)
> -
> -/* Define a common set of macros -- BSD based -- and redefine whatever
> -   the system offers to make it look like that.  FIXME: serial.h and
> -   ser-*.c deal with this in a much cleaner fashion; as soon as stuff
> -   is converted to use them, can get rid of this crap.  */
> -
> -#ifdef HAVE_TERMIO
> -
> -#include <termio.h>
> -
> -#undef TIOCGETP
> -#define TIOCGETP TCGETA
> -#undef TIOCSETN
> -#define TIOCSETN TCSETA
> -#undef TIOCSETP
> -#define TIOCSETP TCSETAF
> -#define TERMINAL struct termio
> -
> -#else /* sgtty */
> -
> -#include <fcntl.h>
> -#include <sgtty.h>
> -#include <sys/ioctl.h>
> -#define TERMINAL struct sgttyb
> -
> -#endif /* sgtty */
> -#endif
> -
> -#endif /* ! GDB_TERMIOS_H */
> diff --git a/gdb/common/job-control.c b/gdb/common/job-control.c
> index d76bc57..78fc672 100644
> --- a/gdb/common/job-control.c
> +++ b/gdb/common/job-control.c
> @@ -20,7 +20,10 @@
>  
>  #include "common-defs.h"
>  #include "job-control.h"
> -#include "gdb_termios.h"
> +#ifdef HAVE_TERMIOS_H
> +#include <termios.h>
> +#endif
> +#include <unistd.h>
>  
>  /* Nonzero if we have job control.  */
>  int job_control;
> @@ -41,7 +44,6 @@ gdb_setpgid ()
>  
>    if (job_control)
>      {
> -#if defined (HAVE_TERMIOS) || defined (TIOCGPGRP)
>  #ifdef HAVE_SETPGID
>        /* The call setpgid (0, 0) is supposed to work and mean the same
>           thing as this, but on Ultrix 4.2A it fails with EPERM (and
> @@ -56,7 +58,6 @@ gdb_setpgid ()
>  #endif
>  #endif /* HAVE_SETPGRP */
>  #endif /* HAVE_SETPGID */
> -#endif /* defined (HAVE_TERMIOS) || defined (TIOCGPGRP) */

Did you decide to remove the check for HAVE_TERMIOS (instead of
replacing it with an "#ifdef HAVE_TERMIOS_H") because we're already
checking for HAVE_SETPGID?

>      }
>  
>    return retval;
> @@ -67,9 +68,9 @@ gdb_setpgid ()
>  void
>  have_job_control ()
>  {
> -  /* OK, figure out whether we have job control.  If neither termios nor
> -     sgtty (i.e. termio or go32), leave job_control 0.  */
> -#if defined (HAVE_TERMIOS)
> +  /* OK, figure out whether we have job control.  If termios is not
> +     available, leave job_control 0.  */
> +#if defined (HAVE_TERMIOS_H)
>    /* Do all systems with termios have the POSIX way of identifying job
>       control?  I hope so.  */
>  #ifdef _POSIX_JOB_CONTROL
> @@ -81,13 +82,5 @@ have_job_control ()
>    job_control = 0;		/* Have to assume the worst.  */
>  #endif /* _SC_JOB_CONTROL */
>  #endif /* _POSIX_JOB_CONTROL */
> -#endif /* HAVE_TERMIOS */
> -
> -#ifdef HAVE_SGTTY
> -#ifdef TIOCGPGRP
> -  job_control = 1;
> -#else
> -  job_control = 0;
> -#endif /* TIOCGPGRP */
> -#endif /* sgtty */
> +#endif /* HAVE_TERMIOS_H */
>  }
> diff --git a/gdb/configure b/gdb/configure
> index 6b445e4..c638652 100755
> --- a/gdb/configure
> +++ b/gdb/configure
> @@ -11554,8 +11554,7 @@ for ac_header in nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
>  		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
>  		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
>  		  sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \
> -		  termios.h termio.h \
> -		  sgtty.h elf_hp.h \
> +		  termios.h elf_hp.h \
>  		  dlfcn.h
>  do :
>    as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
> diff --git a/gdb/configure.ac b/gdb/configure.ac
> index 4e64c80..b909217 100644
> --- a/gdb/configure.ac
> +++ b/gdb/configure.ac
> @@ -1298,8 +1298,7 @@ AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
>  		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
>  		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
>  		  sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \
> -		  termios.h termio.h \
> -		  sgtty.h elf_hp.h \
> +		  termios.h elf_hp.h \
>  		  dlfcn.h])
>  AC_CHECK_HEADERS(sys/proc.h, [], [],
>  [#if HAVE_SYS_PARAM_H
> diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
> index abab163..d5c62fb 100755
> --- a/gdb/gdbserver/configure
> +++ b/gdb/gdbserver/configure
> @@ -6177,7 +6177,7 @@ $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cach
>    cd "$ac_popdir"
>  
>  
> -for ac_header in sgtty.h termio.h termios.h sys/reg.h string.h 		 proc_service.h sys/procfs.h linux/elf.h 		 fcntl.h signal.h sys/file.h 		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h 		 netinet/tcp.h arpa/inet.h
> +for ac_header in termios.h sys/reg.h string.h 		 proc_service.h sys/procfs.h linux/elf.h 		 fcntl.h signal.h sys/file.h 		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h 		 netinet/tcp.h arpa/inet.h
>  do :
>    as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
>  ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
> diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
> index 60e235d..456d3b3 100644
> --- a/gdb/gdbserver/configure.ac
> +++ b/gdb/gdbserver/configure.ac
> @@ -96,7 +96,7 @@ ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"],
>  
>  ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"])
>  
> -AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
> +AC_CHECK_HEADERS(termios.h sys/reg.h string.h dnl
>  		 proc_service.h sys/procfs.h linux/elf.h dnl
>  		 fcntl.h signal.h sys/file.h dnl
>  		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
> diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
> index 66e06522..54f27f4 100644
> --- a/gdb/gdbserver/remote-utils.c
> +++ b/gdb/gdbserver/remote-utils.c
> @@ -17,7 +17,9 @@
>     along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
>  
>  #include "server.h"
> -#include "gdb_termios.h"
> +#if HAVE_TERMIOS_H
> +#include <termios.h>
> +#endif
>  #include "target.h"
>  #include "gdbthread.h"
>  #include "tdesc.h"
> @@ -325,7 +327,7 @@ remote_open (const char *name)
>        if (remote_desc < 0)
>  	perror_with_name ("Could not open remote device");
>  
> -#ifdef HAVE_TERMIOS
> +#if HAVE_TERMIOS_H

Why s/#ifdef/#if/?  I prefer #ifdef BTW.

>        {
>  	struct termios termios;
>  	tcgetattr (remote_desc, &termios);
> @@ -342,33 +344,6 @@ remote_open (const char *name)
>        }
>  #endif
>  
> -#ifdef HAVE_TERMIO
> -      {
> -	struct termio termio;
> -	ioctl (remote_desc, TCGETA, &termio);
> -
> -	termio.c_iflag = 0;
> -	termio.c_oflag = 0;
> -	termio.c_lflag = 0;
> -	termio.c_cflag &= ~(CSIZE | PARENB);
> -	termio.c_cflag |= CLOCAL | CS8;
> -	termio.c_cc[VMIN] = 1;
> -	termio.c_cc[VTIME] = 0;
> -
> -	ioctl (remote_desc, TCSETA, &termio);
> -      }
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -      {
> -	struct sgttyb sg;
> -
> -	ioctl (remote_desc, TIOCGETP, &sg);
> -	sg.sg_flags = RAW;
> -	ioctl (remote_desc, TIOCSETP, &sg);
> -      }
> -#endif
> -
>        fprintf (stderr, "Remote debugging using %s\n", name);
>  
>        enable_async_notification (remote_desc);
> diff --git a/gdb/inflow.c b/gdb/inflow.c
> index d54b8f8..a96d4fc 100644
> --- a/gdb/inflow.c
> +++ b/gdb/inflow.c
> @@ -31,7 +31,9 @@
>  
>  #include "inflow.h"
>  #include "gdbcmd.h"
> -#include "gdb_termios.h"
> +#ifdef HAVE_TERMIOS_H
> +#include <termios.h>
> +#endif
>  #include "job-control.h"
>  
>  #ifdef HAVE_SYS_IOCTL_H
> @@ -64,9 +66,9 @@ struct terminal_info
>       it when it resumes.  */
>    serial_ttystate ttystate;
>  
> -#ifdef PROCESS_GROUP_TYPE
> +#ifdef HAVE_TERMIOS_H
>    /* Process group.  Saved and restored just like ttystate.  */
> -  PROCESS_GROUP_TYPE process_group;
> +  pid_t process_group;
>  #endif
>  
>    /* fcntl flags.  Saved and restored just like ttystate.  */
> @@ -89,11 +91,11 @@ static serial_ttystate initial_gdb_ttystate;
>  
>  static struct terminal_info *get_inflow_inferior_data (struct inferior *);
>  
> -#ifdef PROCESS_GROUP_TYPE
> +#ifdef HAVE_TERMIOS_H
>  
>  /* Return the process group of the current inferior.  */
>  
> -PROCESS_GROUP_TYPE
> +pid_t
>  inferior_process_group (void)
>  {
>    return get_inflow_inferior_data (current_inferior ())->process_group;
> @@ -121,25 +123,6 @@ 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
> -
>  /* See terminal.h.  */
>  
>  void
> @@ -157,8 +140,8 @@ set_initial_gdb_ttystate (void)
>  #ifdef F_GETFL
>        our_terminal_info.tflags = fcntl (0, F_GETFL, 0);
>  #endif
> -#ifdef PROCESS_GROUP_TYPE
> -      our_terminal_info.process_group = gdb_getpgrp ();
> +#ifdef HAVE_TERMIOS_H
> +      our_terminal_info.process_group = tcgetpgrp (0);
>  #endif
>      }
>  }
> @@ -187,7 +170,7 @@ child_terminal_init_with_pgrp (int pgrp)
>    struct inferior *inf = current_inferior ();
>    struct terminal_info *tinfo = get_inflow_inferior_data (inf);
>  
> -#ifdef PROCESS_GROUP_TYPE
> +#ifdef HAVE_TERMIOS_H
>    /* Store the process group even without a terminal as it is used not
>       only to reset the tty foreground process group, but also to
>       interrupt the inferior.  */
> @@ -224,7 +207,7 @@ gdb_save_tty_state (void)
>  void
>  child_terminal_init (struct target_ops *self)
>  {
> -#ifdef PROCESS_GROUP_TYPE
> +#ifdef HAVE_TERMIOS_H
>    /* This is for Lynx, and should be cleaned up by having Lynx be a
>       separate debugging target with a version of target_terminal::init
>       which passes in the process group to a generic routine which does
> @@ -232,7 +215,7 @@ child_terminal_init (struct target_ops *self)
>       pass in inferior_ptid to the same routine).  */
>    /* We assume INFERIOR_PID is also the child's process group.  */
>    child_terminal_init_with_pgrp (ptid_get_pid (inferior_ptid));
> -#endif /* PROCESS_GROUP_TYPE */
> +#endif /* HAVE_TERMIOS_H */
>  }
>  
>  /* Put the inferior's terminal settings into effect.
> @@ -269,11 +252,7 @@ child_terminal_inferior (struct target_ops *self)
>        OOPSY ("fcntl F_SETFL");
>  #endif
>  
> -      /* Because we were careful to not change in or out of raw mode in
> -         terminal_ours, we will not change in our out of raw mode with
> -         this call, so we don't flush any input.  */
> -      result = serial_set_tty_state (stdin_serial,
> -				     tinfo->ttystate);
> +      result = serial_set_tty_state (stdin_serial, tinfo->ttystate);
>        OOPSY ("setting tty state");
>  
>        if (!job_control)
> @@ -298,19 +277,12 @@ child_terminal_inferior (struct target_ops *self)
>  
>        if (job_control)
>  	{
> -#ifdef HAVE_TERMIOS
> +#ifdef HAVE_TERMIOS_H
>  	  result = tcsetpgrp (0, tinfo->process_group);
>  	  if (!inf->attach_flag)
>  	    OOPSY ("tcsetpgrp");
>  #endif
> -
> -#ifdef HAVE_SGTTY
> -	  result = ioctl (0, TIOCSPGRP, &tinfo->process_group);
> -	  if (!inf->attach_flag)
> -	    OOPSY ("TIOCSPGRP");
> -#endif
>  	}
> -
>      }
>    terminal_is_ours = 0;
>  }
> @@ -388,34 +360,20 @@ child_terminal_ours_1 (int output_only)
>        xfree (tinfo->ttystate);
>        tinfo->ttystate = serial_get_tty_state (stdin_serial);
>  
> -#ifdef PROCESS_GROUP_TYPE
> +#ifdef HAVE_TERMIOS_H
>        if (!inf->attach_flag)
> -	/* If setpgrp failed in terminal_inferior, this would give us
> +	/* If tcsetpgrp failed in terminal_inferior, this would give us
>  	   our process group instead of the inferior's.  See
>  	   terminal_inferior for details.  */
> -	tinfo->process_group = gdb_getpgrp ();
> +	tinfo->process_group = tcgetpgrp (0);
>  #endif
>  
> -      /* Here we used to set ICANON in our ttystate, but I believe this
> -         was an artifact from before when we used readline.  Readline sets
> -         the tty state when it needs to.
> -         FIXME-maybe: However, query() expects non-raw mode and doesn't
> -         use readline.  Maybe query should use readline (on the other hand,
> -         this only matters for HAVE_SGTTY, not termio or termios, I think).  */
> -
> -      /* Set tty state to our_ttystate.  We don't change in our out of raw
> -         mode, to avoid flushing input.  We need to do the same thing
> -         regardless of output_only, because we don't have separate
> -         terminal_is_ours and terminal_is_ours_for_output flags.  It's OK,
> -         though, since readline will deal with raw mode when/if it needs
> -         to.  */
> -
> -      serial_noflush_set_tty_state (stdin_serial, our_terminal_info.ttystate,
> -				    tinfo->ttystate);
> +      /* Set tty state to our_ttystate.  */
> +      serial_set_tty_state (stdin_serial, our_terminal_info.ttystate);
>  
>        if (job_control)
>  	{
> -#ifdef HAVE_TERMIOS
> +#ifdef HAVE_TERMIOS_H
>  	  result = tcsetpgrp (0, our_terminal_info.process_group);
>  #if 0
>  	  /* This fails on Ultrix with EINVAL if you run the testsuite
> @@ -428,10 +386,6 @@ child_terminal_ours_1 (int output_only)
>  				safe_strerror (errno));
>  #endif
>  #endif /* termios */
> -
> -#ifdef HAVE_SGTTY
> -	  result = ioctl (0, TIOCSPGRP, &our_terminal_info.process_group);
> -#endif
>  	}
>  
>  #ifdef SIGTTOU
> @@ -616,7 +570,7 @@ child_terminal_info (struct target_ops *self, const char *args, int from_tty)
>      printf_filtered ("\n");
>    }
>  
> -#ifdef PROCESS_GROUP_TYPE
> +#ifdef HAVE_TERMIOS_H
>    printf_filtered ("Process group = %d\n", (int) tinfo->process_group);
>  #endif
>  
> diff --git a/gdb/inflow.h b/gdb/inflow.h
> index 428aed4..0b00c61 100644
> --- a/gdb/inflow.h
> +++ b/gdb/inflow.h
> @@ -20,17 +20,11 @@
>  #ifndef INFLOW_H
>  #define INFLOW_H
>  
> -#include "gdb_termios.h"
> +#include <unistd.h>
>  
> -#ifdef HAVE_TERMIOS
> -# define PROCESS_GROUP_TYPE pid_t
> -#elif defined (HAVE_TERMIO) || defined (HAVE_SGTTY)
> -# define PROCESS_GROUP_TYPE int
> -#endif
> -
> -#ifdef PROCESS_GROUP_TYPE
>  /* Process group of the current inferior.  */
> -extern PROCESS_GROUP_TYPE inferior_process_group (void);
> +#ifdef HAVE_TERMIOS_H
> +extern pid_t inferior_process_group (void);
>  #endif
>  
>  #endif /* inflow.h */
> diff --git a/gdb/ser-base.c b/gdb/ser-base.c
> index 2bfe82b..3262dcc 100644
> --- a/gdb/ser-base.c
> +++ b/gdb/ser-base.c
> @@ -551,14 +551,6 @@ ser_base_set_tty_state (struct serial *scb, serial_ttystate ttystate)
>    return 0;
>  }
>  
> -int
> -ser_base_noflush_set_tty_state (struct serial *scb,
> -				serial_ttystate new_ttystate,
> -				serial_ttystate old_ttystate)
> -{
> -  return 0;
> -}
> -
>  void
>  ser_base_print_tty_state (struct serial *scb, 
>  			  serial_ttystate ttystate,
> diff --git a/gdb/ser-base.h b/gdb/ser-base.h
> index 964d640..ceeb7de 100644
> --- a/gdb/ser-base.h
> +++ b/gdb/ser-base.h
> @@ -40,9 +40,6 @@ extern int ser_base_set_tty_state (struct serial *scb,
>  extern void ser_base_print_tty_state (struct serial *scb,
>  				      serial_ttystate ttystate,
>  				      struct ui_file *stream);
> -extern int ser_base_noflush_set_tty_state (struct serial *scb,
> -					   serial_ttystate new_ttystate,
> -					   serial_ttystate old_ttystate);
>  extern int ser_base_setbaudrate (struct serial *scb, int rate);
>  extern int ser_base_setstopbits (struct serial *scb, int num);
>  extern int ser_base_setparity (struct serial *scb, int parity);
> diff --git a/gdb/ser-event.c b/gdb/ser-event.c
> index 08b56a3..8b88ca0 100644
> --- a/gdb/ser-event.c
> +++ b/gdb/ser-event.c
> @@ -144,7 +144,6 @@ static const struct serial_ops serial_event_ops =
>    NULL, /* copy_tty_state */
>    NULL, /* set_tty_state */
>    NULL, /* print_tty_state */
> -  NULL, /* noflush_set_tty_state */
>    NULL, /* setbaudrate */
>    NULL, /* setstopbits */
>    NULL, /* setparity */
> diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c
> index e352895..6965f19 100644
> --- a/gdb/ser-go32.c
> +++ b/gdb/ser-go32.c
> @@ -689,17 +689,6 @@ dos_set_tty_state (struct serial *scb, serial_ttystate ttystate)
>  }
>  
>  static int
> -dos_noflush_set_tty_state (struct serial *scb, serial_ttystate new_ttystate,
> -			   serial_ttystate old_ttystate)
> -{
> -  struct dos_ttystate *state;
> -
> -  state = (struct dos_ttystate *) new_ttystate;
> -  dos_setbaudrate (scb, state->baudrate);
> -  return 0;
> -}
> -
> -static int
>  dos_flush_input (struct serial *scb)
>  {
>    struct dos_ttystate *port = &ports[scb->fd];
> @@ -882,7 +871,6 @@ static const struct serial_ops dos_ops =
>    dos_copy_tty_state,
>    dos_set_tty_state,
>    dos_print_tty_state,
> -  dos_noflush_set_tty_state,
>    dos_setbaudrate,
>    dos_setstopbits,
>    dos_setparity,
> diff --git a/gdb/ser-mingw.c b/gdb/ser-mingw.c
> index 33e4df3..2359a495 100644
> --- a/gdb/ser-mingw.c
> +++ b/gdb/ser-mingw.c
> @@ -1248,7 +1248,6 @@ static const struct serial_ops hardwire_ops =
>    ser_base_copy_tty_state,
>    ser_base_set_tty_state,
>    ser_base_print_tty_state,
> -  ser_base_noflush_set_tty_state,
>    ser_windows_setbaudrate,
>    ser_windows_setstopbits,
>    ser_windows_setparity,
> @@ -1279,7 +1278,6 @@ static const struct serial_ops tty_ops =
>    ser_base_copy_tty_state,
>    ser_base_set_tty_state,
>    ser_base_print_tty_state,
> -  ser_base_noflush_set_tty_state,
>    NULL,
>    NULL,
>    NULL,
> @@ -1310,7 +1308,6 @@ static const struct serial_ops pipe_ops =
>    ser_base_copy_tty_state,
>    ser_base_set_tty_state,
>    ser_base_print_tty_state,
> -  ser_base_noflush_set_tty_state,
>    ser_base_setbaudrate,
>    ser_base_setstopbits,
>    ser_base_setparity,
> @@ -1341,7 +1338,6 @@ static const struct serial_ops tcp_ops =
>    ser_base_copy_tty_state,
>    ser_base_set_tty_state,
>    ser_base_print_tty_state,
> -  ser_base_noflush_set_tty_state,
>    ser_base_setbaudrate,
>    ser_base_setstopbits,
>    ser_base_setparity,
> diff --git a/gdb/ser-pipe.c b/gdb/ser-pipe.c
> index cb94242..56a91fc 100644
> --- a/gdb/ser-pipe.c
> +++ b/gdb/ser-pipe.c
> @@ -219,7 +219,6 @@ static const struct serial_ops pipe_ops =
>    ser_base_copy_tty_state,
>    ser_base_set_tty_state,
>    ser_base_print_tty_state,
> -  ser_base_noflush_set_tty_state,
>    ser_base_setbaudrate,
>    ser_base_setstopbits,
>    ser_base_setparity,
> diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c
> index 7ff588b..cc6de30 100644
> --- a/gdb/ser-tcp.c
> +++ b/gdb/ser-tcp.c
> @@ -399,7 +399,6 @@ static const struct serial_ops tcp_ops =
>    ser_base_copy_tty_state,
>    ser_base_set_tty_state,
>    ser_base_print_tty_state,
> -  ser_base_noflush_set_tty_state,
>    ser_base_setbaudrate,
>    ser_base_setstopbits,
>    ser_base_setparity,
> diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c
> index 53c33e6..3cbb77f 100644
> --- a/gdb/ser-unix.c
> +++ b/gdb/ser-unix.c
> @@ -31,9 +31,7 @@
>  #include "gdb_select.h"
>  #include "gdbcmd.h"
>  #include "filestuff.h"
> -#include "gdb_termios.h"
> -
> -#ifdef HAVE_TERMIOS
> +#include <termios.h>
>  
>  struct hardwire_ttystate
>    {
> @@ -51,32 +49,6 @@ show_serial_hwflow (struct ui_file *file, int from_tty,
>  }
>  #endif
>  
> -#endif /* termios */
> -
> -#ifdef HAVE_TERMIO
> -
> -/* It is believed that all systems which have added job control to SVR3
> -   (e.g. sco) have also added termios.  Even if not, trying to figure out
> -   all the variations (TIOCGPGRP vs. TCGETPGRP, etc.) would be pretty
> -   bewildering.  So we don't attempt it.  */
> -
> -struct hardwire_ttystate
> -  {
> -    struct termio termio;
> -  };
> -#endif /* termio */
> -
> -#ifdef HAVE_SGTTY
> -struct hardwire_ttystate
> -  {
> -    struct sgttyb sgttyb;
> -    struct tchars tc;
> -    struct ltchars ltc;
> -    /* Line discipline flags.  */
> -    int lmode;
> -  };
> -#endif /* sgtty */
> -
>  static int hardwire_open (struct serial *scb, const char *name);
>  static void hardwire_raw (struct serial *scb);
>  static int rate_to_code (int rate);
> @@ -89,8 +61,6 @@ static int set_tty_state (struct serial *scb,
>  			  struct hardwire_ttystate * state);
>  static serial_ttystate hardwire_get_tty_state (struct serial *scb);
>  static int hardwire_set_tty_state (struct serial *scb, serial_ttystate state);
> -static int hardwire_noflush_set_tty_state (struct serial *, serial_ttystate,
> -					   serial_ttystate);
>  static void hardwire_print_tty_state (struct serial *, serial_ttystate,
>  				      struct ui_file *);
>  static int hardwire_drain_output (struct serial *);
> @@ -114,61 +84,19 @@ hardwire_open (struct serial *scb, const char *name)
>  static int
>  get_tty_state (struct serial *scb, struct hardwire_ttystate *state)
>  {
> -#ifdef HAVE_TERMIOS
>    if (tcgetattr (scb->fd, &state->termios) < 0)
>      return -1;
>  
>    return 0;
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  if (ioctl (scb->fd, TCGETA, &state->termio) < 0)
> -    return -1;
> -  return 0;
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  if (ioctl (scb->fd, TIOCGETP, &state->sgttyb) < 0)
> -    return -1;
> -  if (ioctl (scb->fd, TIOCGETC, &state->tc) < 0)
> -    return -1;
> -  if (ioctl (scb->fd, TIOCGLTC, &state->ltc) < 0)
> -    return -1;
> -  if (ioctl (scb->fd, TIOCLGET, &state->lmode) < 0)
> -    return -1;
> -
> -  return 0;
> -#endif
>  }
>  
>  static int
>  set_tty_state (struct serial *scb, struct hardwire_ttystate *state)
>  {
> -#ifdef HAVE_TERMIOS
>    if (tcsetattr (scb->fd, TCSANOW, &state->termios) < 0)
>      return -1;
>  
>    return 0;
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  if (ioctl (scb->fd, TCSETA, &state->termio) < 0)
> -    return -1;
> -  return 0;
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  if (ioctl (scb->fd, TIOCSETN, &state->sgttyb) < 0)
> -    return -1;
> -  if (ioctl (scb->fd, TIOCSETC, &state->tc) < 0)
> -    return -1;
> -  if (ioctl (scb->fd, TIOCSLTC, &state->ltc) < 0)
> -    return -1;
> -  if (ioctl (scb->fd, TIOCLSET, &state->lmode) < 0)
> -    return -1;
> -
> -  return 0;
> -#endif
>  }
>  
>  static serial_ttystate
> @@ -205,39 +133,6 @@ hardwire_set_tty_state (struct serial *scb, serial_ttystate ttystate)
>    return set_tty_state (scb, state);
>  }
>  
> -static int
> -hardwire_noflush_set_tty_state (struct serial *scb,
> -				serial_ttystate new_ttystate,
> -				serial_ttystate old_ttystate)
> -{
> -  struct hardwire_ttystate new_state;
> -#ifdef HAVE_SGTTY
> -  struct hardwire_ttystate *state = (struct hardwire_ttystate *) old_ttystate;
> -#endif
> -
> -  new_state = *(struct hardwire_ttystate *) new_ttystate;
> -
> -  /* Don't change in or out of raw mode; we don't want to flush input.
> -     termio and termios have no such restriction; for them flushing input
> -     is separate from setting the attributes.  */
> -
> -#ifdef HAVE_SGTTY
> -  if (state->sgttyb.sg_flags & RAW)
> -    new_state.sgttyb.sg_flags |= RAW;
> -  else
> -    new_state.sgttyb.sg_flags &= ~RAW;
> -
> -  /* I'm not sure whether this is necessary; the manpage just mentions
> -     RAW not CBREAK.  */
> -  if (state->sgttyb.sg_flags & CBREAK)
> -    new_state.sgttyb.sg_flags |= CBREAK;
> -  else
> -    new_state.sgttyb.sg_flags &= ~CBREAK;
> -#endif
> -
> -  return set_tty_state (scb, &new_state);
> -}
> -
>  static void
>  hardwire_print_tty_state (struct serial *scb,
>  			  serial_ttystate ttystate,
> @@ -246,7 +141,6 @@ hardwire_print_tty_state (struct serial *scb,
>    struct hardwire_ttystate *state = (struct hardwire_ttystate *) ttystate;
>    int i;
>  
> -#ifdef HAVE_TERMIOS
>    fprintf_filtered (stream, "c_iflag = 0x%x, c_oflag = 0x%x,\n",
>  		    (int) state->termios.c_iflag,
>  		    (int) state->termios.c_oflag);
> @@ -262,36 +156,6 @@ hardwire_print_tty_state (struct serial *scb,
>    for (i = 0; i < NCCS; i += 1)
>      fprintf_filtered (stream, "0x%x ", state->termios.c_cc[i]);
>    fprintf_filtered (stream, "\n");
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  fprintf_filtered (stream, "c_iflag = 0x%x, c_oflag = 0x%x,\n",
> -		    state->termio.c_iflag, state->termio.c_oflag);
> -  fprintf_filtered (stream, "c_cflag = 0x%x, c_lflag = 0x%x, c_line = 0x%x.\n",
> -		    state->termio.c_cflag, state->termio.c_lflag,
> -		    state->termio.c_line);
> -  fprintf_filtered (stream, "c_cc: ");
> -  for (i = 0; i < NCC; i += 1)
> -    fprintf_filtered (stream, "0x%x ", state->termio.c_cc[i]);
> -  fprintf_filtered (stream, "\n");
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  fprintf_filtered (stream, "sgttyb.sg_flags = 0x%x.\n",
> -		    state->sgttyb.sg_flags);
> -
> -  fprintf_filtered (stream, "tchars: ");
> -  for (i = 0; i < (int) sizeof (struct tchars); i++)
> -    fprintf_filtered (stream, "0x%x ", ((unsigned char *) &state->tc)[i]);
> -  fprintf_filtered (stream, "\n");
> -
> -  fprintf_filtered (stream, "ltchars: ");
> -  for (i = 0; i < (int) sizeof (struct ltchars); i++)
> -    fprintf_filtered (stream, "0x%x ", ((unsigned char *) &state->ltc)[i]);
> -  fprintf_filtered (stream, "\n");
> -
> -  fprintf_filtered (stream, "lmode:  0x%x\n", state->lmode);
> -#endif
>  }
>  
>  /* Wait for the output to drain away, as opposed to flushing
> @@ -300,48 +164,13 @@ hardwire_print_tty_state (struct serial *scb,
>  static int
>  hardwire_drain_output (struct serial *scb)
>  {
> -#ifdef HAVE_TERMIOS
>    return tcdrain (scb->fd);
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  return ioctl (scb->fd, TCSBRK, 1);
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  /* Get the current state and then restore it using TIOCSETP,
> -     which should cause the output to drain and pending input
> -     to be discarded.  */
> -  {
> -    struct hardwire_ttystate state;
> -
> -    if (get_tty_state (scb, &state))
> -      {
> -	return (-1);
> -      }
> -    else
> -      {
> -	return (ioctl (scb->fd, TIOCSETP, &state.sgttyb));
> -      }
> -  }
> -#endif
>  }
>  
>  static int
>  hardwire_flush_output (struct serial *scb)
>  {
> -#ifdef HAVE_TERMIOS
>    return tcflush (scb->fd, TCOFLUSH);
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  return ioctl (scb->fd, TCFLSH, 1);
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  /* This flushes both input and output, but we can't do better.  */
> -  return ioctl (scb->fd, TIOCFLUSH, 0);
> -#endif
>  }
>  
>  static int
> @@ -349,45 +178,13 @@ hardwire_flush_input (struct serial *scb)
>  {
>    ser_base_flush_input (scb);
>  
> -#ifdef HAVE_TERMIOS
>    return tcflush (scb->fd, TCIFLUSH);
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  return ioctl (scb->fd, TCFLSH, 0);
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  /* This flushes both input and output, but we can't do better.  */
> -  return ioctl (scb->fd, TIOCFLUSH, 0);
> -#endif
>  }
>  
>  static int
>  hardwire_send_break (struct serial *scb)
>  {
> -#ifdef HAVE_TERMIOS
>    return tcsendbreak (scb->fd, 0);
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  return ioctl (scb->fd, TCSBRK, 0);
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  {
> -    int status;
> -
> -    status = ioctl (scb->fd, TIOCSBRK, 0);
> -
> -    /* Can't use usleep; it doesn't exist in BSD 4.2.  */
> -    /* Note that if this gdb_select() is interrupted by a signal it will not
> -       wait the full length of time.  I think that is OK.  */
> -    gdb_usleep (250000);
> -    status = ioctl (scb->fd, TIOCCBRK, 0);
> -    return status;
> -  }
> -#endif
>  }
>  
>  static void
> @@ -399,7 +196,6 @@ hardwire_raw (struct serial *scb)
>      fprintf_unfiltered (gdb_stderr, "get_tty_state failed: %s\n",
>  			safe_strerror (errno));
>  
> -#ifdef HAVE_TERMIOS
>    state.termios.c_iflag = 0;
>    state.termios.c_oflag = 0;
>    state.termios.c_lflag = 0;
> @@ -420,22 +216,6 @@ hardwire_raw (struct serial *scb)
>  #endif
>    state.termios.c_cc[VMIN] = 0;
>    state.termios.c_cc[VTIME] = 0;
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  state.termio.c_iflag = 0;
> -  state.termio.c_oflag = 0;
> -  state.termio.c_lflag = 0;
> -  state.termio.c_cflag &= ~CSIZE;
> -  state.termio.c_cflag |= CLOCAL | CS8;
> -  state.termio.c_cc[VMIN] = 0;
> -  state.termio.c_cc[VTIME] = 0;
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  state.sgttyb.sg_flags |= RAW | ANYP;
> -  state.sgttyb.sg_flags &= ~(CBREAK | ECHO);
> -#endif
>  
>    if (set_tty_state (scb, &state))
>      fprintf_unfiltered (gdb_stderr, "set_tty_state failed: %s\n",
> @@ -604,24 +384,8 @@ hardwire_setbaudrate (struct serial *scb, int rate)
>    if (get_tty_state (scb, &state))
>      return -1;
>  
> -#ifdef HAVE_TERMIOS
>    cfsetospeed (&state.termios, baud_code);
>    cfsetispeed (&state.termios, baud_code);
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -#ifndef CIBAUD
> -#define CIBAUD CBAUD
> -#endif
> -
> -  state.termio.c_cflag &= ~(CBAUD | CIBAUD);
> -  state.termio.c_cflag |= baud_code;
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  state.sgttyb.sg_ispeed = baud_code;
> -  state.sgttyb.sg_ospeed = baud_code;
> -#endif
>  
>    return set_tty_state (scb, &state);
>  }
> @@ -648,23 +412,10 @@ hardwire_setstopbits (struct serial *scb, int num)
>        return 1;
>      }
>  
> -#ifdef HAVE_TERMIOS
>    if (!newbit)
>      state.termios.c_cflag &= ~CSTOPB;
>    else
>      state.termios.c_cflag |= CSTOPB;	/* two bits */
> -#endif
> -
> -#ifdef HAVE_TERMIO
> -  if (!newbit)
> -    state.termio.c_cflag &= ~CSTOPB;
> -  else
> -    state.termio.c_cflag |= CSTOPB;	/* two bits */
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  return 0;			/* sgtty doesn't support this */
> -#endif
>  
>    return set_tty_state (scb, &state);
>  }
> @@ -697,19 +448,9 @@ hardwire_setparity (struct serial *scb, int parity)
>        return -1;
>      }
>  
> -#ifdef HAVE_TERMIOS
>    state.termios.c_cflag &= ~(PARENB | PARODD);
>    state.termios.c_cflag |= newparity;
> -#endif
>  
> -#ifdef HAVE_TERMIO
> -  state.termio.c_cflag &= ~(PARENB | PARODD);
> -  state.termio.c_cflag |= newparity;
> -#endif
> -
> -#ifdef HAVE_SGTTY
> -  return 0;            /* sgtty doesn't support this */
> -#endif
>    return set_tty_state (scb, &state);
>  }
>  
> @@ -744,7 +485,6 @@ static const struct serial_ops hardwire_ops =
>    hardwire_copy_tty_state,
>    hardwire_set_tty_state,
>    hardwire_print_tty_state,
> -  hardwire_noflush_set_tty_state,
>    hardwire_setbaudrate,
>    hardwire_setstopbits,
>    hardwire_setparity,
> @@ -759,7 +499,6 @@ _initialize_ser_hardwire (void)
>  {
>    serial_add_interface (&hardwire_ops);
>  
> -#ifdef HAVE_TERMIOS
>  #ifdef CRTSCTS
>    add_setshow_boolean_cmd ("remoteflow", no_class,
>  			   &serial_hwflow, _("\
> @@ -771,7 +510,6 @@ when debugging using remote targets."),
>  			   show_serial_hwflow,
>  			   &setlist, &showlist);
>  #endif
> -#endif
>  }
>  
>  int
> diff --git a/gdb/serial.c b/gdb/serial.c
> index 6866549..32d4f5a 100644
> --- a/gdb/serial.c
> +++ b/gdb/serial.c
> @@ -514,14 +514,6 @@ serial_print_tty_state (struct serial *scb,
>  }
>  
>  int
> -serial_noflush_set_tty_state (struct serial *scb,
> -			      serial_ttystate new_ttystate,
> -			      serial_ttystate old_ttystate)
> -{
> -  return scb->ops->noflush_set_tty_state (scb, new_ttystate, old_ttystate);
> -}
> -
> -int
>  serial_setbaudrate (struct serial *scb, int rate)
>  {
>    return scb->ops->setbaudrate (scb, rate);
> diff --git a/gdb/serial.h b/gdb/serial.h
> index c76ddbe..647eab3 100644
> --- a/gdb/serial.h
> +++ b/gdb/serial.h
> @@ -169,16 +169,6 @@ extern void serial_print_tty_state (struct serial *scb,
>  				    serial_ttystate ttystate,
>  				    struct ui_file *);
>  
> -/* Set the tty state to NEW_TTYSTATE, where OLD_TTYSTATE is the
> -   current state (generally obtained from a recent call to
> -   serial_get_tty_state()), but be careful not to discard any input.
> -   This means that we never switch in or out of raw mode, even if
> -   NEW_TTYSTATE specifies a switch.  */
> -
> -extern int serial_noflush_set_tty_state (struct serial *scb,
> -					 serial_ttystate new_ttystate,
> -					 serial_ttystate old_ttystate);
> -
>  /* Set the baudrate to the decimal value supplied.  Returns 0 for
>     success, -1 for failure.  */
>  
> @@ -276,8 +266,6 @@ struct serial_ops
>      int (*set_tty_state) (struct serial *, serial_ttystate);
>      void (*print_tty_state) (struct serial *, serial_ttystate,
>  			     struct ui_file *);
> -    int (*noflush_set_tty_state) (struct serial *, serial_ttystate,
> -				  serial_ttystate);
>      int (*setbaudrate) (struct serial *, int rate);
>      int (*setstopbits) (struct serial *, int num);
>      /* Set the value PARITY as parity setting for serial object.
> -- 
> 2.5.5

As far as I could, I reviewed all the changes, and they seem OK to me
modulo the few nits I pointed.

Thanks,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/


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