Suppress SIGTTOU when handling errors
authorAlan Hayward <alan.hayward@arm.com>
Tue, 28 May 2019 09:07:54 +0000 (10:07 +0100)
committerAlan Hayward <alan.hayward@arm.com>
Tue, 28 May 2019 09:07:54 +0000 (10:07 +0100)
commit766f883622ef008230250aa5aecef9fb9b29f233
treee1302190a7dc0b839e38d03dfbc192af18701dd6
parent0f4a61b42002f568473f821f00dd240413beadd0
Suppress SIGTTOU when handling errors

Calls to error () can cause SIGTTOU to send gdb to the background.

For example, on an Arm build:
  (gdb) b main
  Breakpoint 1 at 0x10774: file /build/gdb/testsuite/../../../src/binutils-gdb/gdb/testsuite/gdb.base/watchpoint.c, line 174.
  (gdb) r
  Starting program: /build/gdb/testsuite/outputs/gdb.base/watchpoint/watchpoint

  [1]+  Stopped                 ../gdb ./outputs/gdb.base/watchpoint/watchpoint
  localhost$ fg
  ../gdb ./outputs/gdb.base/watchpoint/watchpoint
  Cannot parse expression `.L1199 4@r4'.
  warning: Probes-based dynamic linker interface failed.
  Reverting to original interface.

The SIGTTOU is raised whilst inside a syscall during the call to tcdrain.
Fix is to use scoped_ignore_sigttou to ensure SIGTTOU is blocked.

In addition fix include comments - job_control is not included via terminal.h

gdb/ChangeLog:

* event-top.c: Remove include comment.
* inflow.c (class scoped_ignore_sigttou): Move from here...
* inflow.h (class scoped_ignore_sigttou): ...to here.
* ser-unix.c (hardwire_drain_output): Block SIGTTOU during drain.
* top.c:  Remove include comment.
gdb/ChangeLog
gdb/event-top.c
gdb/inflow.c
gdb/inflow.h
gdb/ser-unix.c
gdb/top.c