Go to file
Simon Marchi 439706e6a9 gdb: use interruptible_select when connecting to a remote
When GDB is waiting trying to connect to a remote target and it receives
a SIGWINCH (terminal gets resized), the blocking system call gets
interrupted and we abort.

For example, I connect to some port (on which nothing listens):

    (gdb) tar rem :1234
    ... GDB blocks here, resize the terminal ...
    🔢 Interrupted system call.

The backtrace where GDB is blocked while waiting for the connection to
establish is:

    #0  0x00007fe9db805b7b in select () from /usr/lib/libc.so.6
    #1  0x000055f2472e9c42 in gdb_select (n=0, readfds=0x0, writefds=0x0, exceptfds=0x0, timeout=0x7ffe8fafe050) at /home/simark/src/binutils-gdb/gdb/posix-hdep.c:31
    #2  0x000055f24759c212 in wait_for_connect (sock=-1, polls=0x7ffe8fafe300) at /home/simark/src/binutils-gdb/gdb/ser-tcp.c:147
    #3  0x000055f24759d0e8 in net_open (scb=0x62500015b900, name=0x6020000601d8 ":1234") at /home/simark/src/binutils-gdb/gdb/ser-tcp.c:356
    #4  0x000055f2475a0395 in serial_open_ops_1 (ops=0x55f24892ca60 <tcp_ops>, open_name=0x6020000601d8 ":1234") at /home/simark/src/binutils-gdb/gdb/serial.c:244
    #5  0x000055f2475a01d6 in serial_open (name=0x6020000601d8 ":1234") at /home/simark/src/binutils-gdb/gdb/serial.c:231
    #6  0x000055f2474d5274 in remote_serial_open (name=0x6020000601d8 ":1234") at /home/simark/src/binutils-gdb/gdb/remote.c:5019
    #7  0x000055f2474d7025 in remote_target::open_1 (name=0x6020000601d8 ":1234", from_tty=1, extended_p=0) at /home/simark/src/binutils-gdb/gdb/remote.c:5571
    #8  0x000055f2474d47d5 in remote_target::open (name=0x6020000601d8 ":1234", from_tty=1) at /home/simark/src/binutils-gdb/gdb/remote.c:4898
    #9  0x000055f24776379f in open_target (args=0x6020000601d8 ":1234", from_tty=1, command=0x611000042bc0) at /home/simark/src/binutils-gdb/gdb/target.c:242

Fix that by using interruptible_select in wait_for_connect, instead of
gdb_select.  Resizing the terminal now no longer aborts the connection.
It is still possible to interrupt the connection using ctrl-c.

gdb/ChangeLog:

	* ser-tcp.c (wait_for_connect): Use interruptible_select instead
	of gdb_select.

Change-Id: Ie25577bd1e5699e4847b6b53fdfa10b8c0dc5c89
2021-01-21 14:04:52 -05:00
bfd Automatic date update in version.in 2021-01-21 00:00:17 +00:00
binutils Tidy inflateEnd calls 2021-01-16 11:11:52 +10:30
config Implement a workaround for GNU mak jobserver 2021-01-12 05:45:44 -08:00
contrib Import mklog.py from gcc repo 2020-09-25 10:24:44 -04:00
cpu Add Changelog entries and NEWS entries for 2.36 branch 2021-01-09 10:40:28 +00:00
elfcpp Add Changelog entries and NEWS entries for 2.36 branch 2021-01-09 10:40:28 +00:00
etc Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gas PR27221, 058430b4a1 warnings while assembling the Linux kernel 2021-01-21 19:10:15 +10:30
gdb gdb: use interruptible_select when connecting to a remote 2021-01-21 14:04:52 -05:00
gdbserver gdb: make some variables static 2021-01-20 20:55:05 -05:00
gdbsupport gdb: check for empty strings in get_standard_cache_dir/get_standard_config_dir 2021-01-08 13:46:56 -05:00
gnulib Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gold [GOLD] powerpc assertion failure 2021-01-19 13:27:13 +10:30
gprof Regen Makefile.in for jobserver.m4 aclocal.m4 dependency 2021-01-13 22:06:02 +10:30
include RISC-V: Indent and GNU coding standards tidy, also aligned the code. 2021-01-15 17:41:18 +08:00
intl Regen with blessed automake-1.15.1 2020-02-20 13:02:24 +10:30
ld mips XPASS pr26936 2021-01-21 16:48:35 +10:30
libctf libctf, create: fix ctf_type_add of structs with unnamed members 2021-01-19 12:45:20 +00:00
libdecnumber Run autoreconf -vf throughout 2020-07-29 16:03:55 -04:00
libiberty GCC: Check if AR works with --plugin and rc 2021-01-11 16:26:51 -08:00
opcodes RISC-V: Indent and GNU coding standards tidy, also aligned the code. 2021-01-15 17:41:18 +08:00
readline Update readline/README to mention patchlevel 2020-06-30 15:17:07 -06:00
sim sim: ppc: update version script usage 2021-01-19 10:54:06 -05:00
texinfo
zlib GCC: Check if AR works with --plugin and rc 2021-01-11 16:26:51 -08:00
.cvsignore
.gitattributes
.gitignore Add gnu global outputs to .gitignore 2020-12-02 10:00:27 -05:00
ar-lib Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
ChangeLog src-release: fix indentation 2021-01-12 18:19:20 -05:00
compile
config-ml.in
config.guess Update config.sub and config.guess 2021-01-05 15:55:59 +10:30
config.rpath
config.sub config.sub update broke powerpc-eabivle 2021-01-07 08:56:28 +10:30
configure binuitils: Check if AR is usable for LTO build 2021-01-11 16:37:13 -08:00
configure.ac binuitils: Check if AR is usable for LTO build 2021-01-11 16:37:13 -08:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4 GCC: Check if AR works with --plugin and rc 2021-01-11 16:26:51 -08:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS Move gdbserver to top level 2020-02-07 08:42:25 -07:00
Makefile.def libctf: new testsuite 2021-01-05 14:53:40 +00:00
Makefile.in Support the PGO build for binutils+gdb 2021-01-09 06:51:51 -08:00
Makefile.tpl Support the PGO build for binutils+gdb 2021-01-09 06:51:51 -08:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am Merge autoconf / automake update changes from GCC. 2018-10-31 17:10:56 +00:00
README
README-maintainer-mode Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
setup.com
src-release.sh src-release: fix indentation 2021-01-12 18:19:20 -05:00
symlink-tree
test-driver Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
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.