Go to file
Pedro Alves 336b30e58a Don't call sigtimedwait for scoped_ignore_sigttou
Because SIGTTOU is sent to the whole process instead of to a specific
thread, consuming a pending SIGTTOU in the destructor of
scoped_ignore_sigttou could consume a SIGTTOU signal raised due to
actions done by some other thread.  Simply avoid sigtimedwait in
scoped_ignore_sigttou, thus plugging the race.  This works because we
know that when the thread writes to the terminal and the signal is
blocked, the kernel does not raise the signal at all.

Tested on GNU/Linux, Solaris 11 and FreeBSD.

gdb/ChangeLog:
yyyy-mm-dd  Pedro Alves  <pedro@palves.net>

	* scoped_ignore_signal.h (scoped_ignore_signal): Add
	ConsumePending template parameter.
	(scoped_ignore_signal::~scoped_ignore_signal): Skip calling
	sigtimedwait if ConsumePending is false.
	(scoped_ignore_sigpipe): Initialize with ConsumePending=true.
	* scoped_ignore_sigttou.h (scoped_ignore_sigttou)
	<m_ignore_signal>: Initialize with ConsumePending=false.

Change-Id: I92f754dbc45c45819dce2ce68b8c067d8d5c61b1
2021-06-17 19:39:08 +01:00
bfd Automatic date update in version.in 2021-06-17 00:00:08 +00:00
binutils Allow readelf to recognise GO buildid notes. 2021-06-15 11:43:43 +01:00
config GNU gettext introduced this change[0] in version 0.19.8 to fix gettext detection with musl libc, since it does not define these internal symbols. 2021-06-14 14:05:39 +01:00
contrib
cpu
elfcpp
etc
gas Fix an assertion failure in the AArch64 assembler triggered by incorrect instruction syntax. 2021-06-17 16:19:20 +01:00
gdb Don't call sigtimedwait for scoped_ignore_sigttou 2021-06-17 19:39:08 +01:00
gdbserver gnulib: define the path to gnulib's parent dir 2021-06-14 18:01:20 -04:00
gdbsupport Don't call sigtimedwait for scoped_ignore_sigttou 2021-06-17 19:39:08 +01:00
gnulib gnulib: define the path to gnulib's parent dir 2021-06-14 18:01:20 -04:00
gold [GOLD] PR27815, gold fails to build with latest GCC 2021-05-25 16:47:16 +09:30
gprof PR4283, update gprof manual with note about GMON_OUT_PREFIX 2021-06-03 21:26:33 +09:30
include Allow readelf to recognise GO buildid notes. 2021-06-15 11:43:43 +01:00
intl GNU gettext introduced this change[0] in version 0.19.8 to fix gettext detection with musl libc, since it does not define these internal symbols. 2021-06-14 14:05:39 +01:00
ld x86-64: Use $NOPIE_LDFLAGS/$NOPIE_CFLAGS on protected-func-1 2021-06-17 10:36:15 -07:00
libctf
libdecnumber
libiberty
opcodes powerpc: move cell "or rx,rx,rx" hints 2021-06-17 15:38:09 +09:30
readline
sim sim: mn10300: tweak static inlines 2021-06-17 00:14:02 -04:00
texinfo
zlib
.cvsignore
.gitattributes
.gitignore
ar-lib
ChangeLog sim: leverage gnulib 2021-05-29 11:56:43 -04:00
compile
config-ml.in
config.guess
config.rpath
config.sub
configure sim: leverage gnulib 2021-05-29 11:56:43 -04:00
configure.ac sim: leverage gnulib 2021-05-29 11:56:43 -04:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS MAINTAINERS: Update path to readline config.{sub,guess} files 2021-05-24 18:11:49 +02:00
Makefile.def
Makefile.in
Makefile.tpl
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
setup.com
src-release.sh
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.