diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/linux-fork.c | 17 |
2 files changed, 19 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 32fe0bb..f449d68 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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. diff --git a/gdb/linux-fork.c b/gdb/linux-fork.c index f3231ba..9bbf9c4 100644 --- a/gdb/linux-fork.c +++ b/gdb/linux-fork.c @@ -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 @@ public: 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 } } |