]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[gdb] Handle ^C in ~scoped_remote_fd
authorTom de Vries <tdevries@suse.de>
Tue, 24 Sep 2024 13:17:57 +0000 (15:17 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 24 Sep 2024 13:17:57 +0000 (15:17 +0200)
commit07d74e51ba8691826b3bc758c2f7d2c1283e4d9b
tree91f10edc92083c4e4b2775a09c033a2e36a869fd
parent63b87d7c85ac25fffa3c8a590a55aa5ccd42b5fc
[gdb] Handle ^C in ~scoped_remote_fd

While reviewing "catch (...)" uses I came across:
...
try
  {
    fileio_error remote_errno;
    m_remote->remote_hostio_close (m_fd, &remote_errno);
  }
catch (...)
  {
    /* Swallow exception before it escapes the dtor.  If
       something goes wrong, likely the connection is gone,
       and there's nothing else that can be done.  */
  }
...

This also swallows gdb_exception_quit and gdb_exception_forced_quit.  I don't
know whether these can actually happen here, but if not it's better to
accommodate for the possibility anyway.

Fix this by handling gdb_exception_quit and gdb_exception_forced_quit
explicitly.

It could be that "catch (...)" should be replaced by
"catch (const gdb_exception &)" but that depends on what kind of exception
remote_hostio_close is expected to throw, and I don't know that, so I'm
leaving it as is.

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/remote.c