]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/linux-fork.c
Automatic date update in version.in
[thirdparty/binutils-gdb.git] / gdb / linux-fork.c
index fe401b2b3b2cac910cb1810a12733de253e88bdb..357188685d071f41642abc4e82cda0f12b717187 100644 (file)
@@ -1,6 +1,6 @@
 /* GNU/Linux native-dependent code for debugging multiple forks.
 
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -31,7 +31,7 @@
 #include "source.h"
 
 #include "nat/gdb_ptrace.h"
-#include "common/gdb_wait.h"
+#include "gdbsupport/gdb_wait.h"
 #include <dirent.h>
 #include <ctype.h>
 
@@ -110,8 +110,7 @@ find_last_fork (void)
 static bool
 one_fork_p ()
 {
-  return (!fork_list.empty ()
-         && &fork_list.front () == &fork_list.back ());
+  return fork_list.size () == 1;
 }
 
 /* Add a new fork to the internal fork list.  */
@@ -215,7 +214,6 @@ call_lseek (int fd, off_t offset, int whence)
 static void
 fork_load_infrun_state (struct fork_info *fp)
 {
-  extern void nullify_last_target_wait_ptid ();
   int i;
 
   linux_nat_switch_fork (fp->ptid);
@@ -427,19 +425,18 @@ public:
     if (m_oldfp != nullptr)
       {
        /* Switch back to inferior_ptid.  */
-       TRY
+       try
          {
            remove_breakpoints ();
            fork_load_infrun_state (m_oldfp);
            insert_breakpoints ();
          }
-       CATCH (ex, RETURN_MASK_ALL)
+       catch (const gdb_exception &ex)
          {
            warning (_("Couldn't restore checkpoint state in %s: %s"),
                     target_pid_to_str (m_oldfp->ptid).c_str (),
                     ex.what ());
          }
-       END_CATCH
       }
   }
 
@@ -521,7 +518,7 @@ Please switch to another checkpoint before deleting the current one"));
      list, waitpid the ptid.
      If fi->parent_ptid is a part of lwp and it is stopped, waitpid the
      ptid.  */
-  thread_info *parent = find_thread_ptid (pptid);
+  thread_info *parent = find_thread_ptid (linux_target, pptid);
   if ((parent == NULL && find_fork_ptid (pptid))
       || (parent != NULL && parent->state == THREAD_STOPPED))
     {
@@ -598,7 +595,7 @@ info_checkpoints_command (const char *arg, int from_tty)
 
          msym = lookup_minimal_symbol_by_pc (pc);
          if (msym.minsym)
-           printf_filtered (", <%s>", MSYMBOL_LINKAGE_NAME (msym.minsym));
+           printf_filtered (", <%s>", msym.minsym->linkage_name ());
        }
 
       putchar_filtered ('\n');
@@ -681,7 +678,7 @@ checkpoint_command (const char *args, int from_tty)
     error (_("checkpoint: call_function_by_hand returned null."));
 
   retpid = value_as_long (ret);
-  get_last_target_status (&last_target_ptid, &last_target_waitstatus);
+  get_last_target_status (nullptr, &last_target_ptid, &last_target_waitstatus);
 
   fp = find_fork_pid (retpid);
 
@@ -753,8 +750,9 @@ restart_command (const char *args, int from_tty)
   linux_fork_context (fp, from_tty);
 }
 
+void _initialize_linux_fork ();
 void
-_initialize_linux_fork (void)
+_initialize_linux_fork ()
 {
   /* Checkpoint command: create a fork of the inferior process
      and set it aside for later debugging.  */
@@ -766,7 +764,8 @@ Fork a duplicate process (experimental)."));
      process.  */
 
   add_com ("restart", class_obscure, restart_command, _("\
-restart N: restore program context from a checkpoint.\n\
+Restore program context from a checkpoint.\n\
+Usage: restart N\n\
 Argument N is checkpoint ID, as displayed by 'info checkpoints'."));
 
   /* Delete checkpoint command: kill the process and remove it from