gdb: Improve scoped_switch_fork_info class

After committing this patch I got this feedback:

   https://sourceware.org/ml/gdb-patches/2019-01/msg00181.html

This patch makes the constructor of scoped_switch_fork_info explicit,
and wraps the core of the destructor in a TRY/CATCH block.

I've run this through the testsuite on X86-64/GNU Linux, however, this
code is not exercised, so this patch is untested.

gdb/ChangeLog:

	* linux-fork.c (scoped_switch_fork_info)
	<scoped_switch_fork_info>: Make explicit.
	<~scoped_switch_fork_info>: Wrap core in TRY/CATCH.
This commit is contained in:
Andrew Burgess 2019-01-09 14:02:39 +00:00
parent 59aa9b0be1
commit 1ef8573cc7
2 changed files with 19 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2019-01-10 Andrew Burgess <andrew.burgess@embecosm.com>
* linux-fork.c (scoped_switch_fork_info)
<scoped_switch_fork_info>: Make explicit.
<~scoped_switch_fork_info>: Wrap core in TRY/CATCH.
2019-01-10 Tom Tromey <tom@tromey.com>
* objfiles.h (objfile::reset_psymtabs): Update.

View File

@ -446,7 +446,7 @@ class scoped_switch_fork_info
public:
/* Switch to the infrun state held on the fork_info identified by
PPTID. If PPTID is the current inferior then no switch is done. */
scoped_switch_fork_info (ptid_t pptid)
explicit scoped_switch_fork_info (ptid_t pptid)
: m_oldfp (nullptr)
{
if (pptid != inferior_ptid)
@ -472,9 +472,18 @@ class scoped_switch_fork_info
if (m_oldfp != nullptr)
{
/* Switch back to inferior_ptid. */
remove_breakpoints ();
fork_load_infrun_state (m_oldfp);
insert_breakpoints ();
TRY
{
remove_breakpoints ();
fork_load_infrun_state (m_oldfp);
insert_breakpoints ();
}
CATCH (ex, RETURN_MASK_ALL)
{
warning (_("Couldn't restore checkpoint state in %s: %s"),
target_pid_to_str (fp->ptid), ex.message);
}
END_CATCH
}
}