testsuite: tcl exec& -> 'kill -9 $pid' is racy (attach-many-short-lived-thread.exp...
[deliverable/binutils-gdb.git] / gdb / nto-procfs.c
index 7a96cc9d9eafb2520c83656bf92cb029973163eb..262c41f8fdff19f89d5b30ff2130d6ff3f129e8d 100644 (file)
@@ -1,7 +1,7 @@
 /* Machine independent support for QNX Neutrino /proc (process file system)
    for GDB.  Written by Colin Burgess at QNX Software Systems Limited.
 
-   Copyright (C) 2003-2014 Free Software Foundation, Inc.
+   Copyright (C) 2003-2015 Free Software Foundation, Inc.
 
    Contributed by QNX Software Systems Ltd.
 
@@ -30,8 +30,6 @@
 #include <sys/syspage.h>
 #include <dirent.h>
 #include <sys/netmgr.h>
-
-#include "exceptions.h"
 #include "gdbcore.h"
 #include "inferior.h"
 #include "target.h"
@@ -56,14 +54,16 @@ static procfs_run run;
 static ptid_t do_attach (ptid_t ptid);
 
 static int procfs_can_use_hw_breakpoint (struct target_ops *self,
-                                        int, int, int);
+                                        enum target_hw_bp_type, int, int);
 
 static int procfs_insert_hw_watchpoint (struct target_ops *self,
-                                       CORE_ADDR addr, int len, int type,
+                                       CORE_ADDR addr, int len,
+                                       enum target_hw_bp_type type,
                                        struct expression *cond);
 
 static int procfs_remove_hw_watchpoint (struct target_ops *self,
-                                       CORE_ADDR addr, int len, int type,
+                                       CORE_ADDR addr, int len,
+                                       enum target_hw_bp_type type,
                                        struct expression *cond);
 
 static int procfs_stopped_by_watchpoint (struct target_ops *ops);
@@ -249,24 +249,24 @@ update_thread_private_data_name (struct thread_info *new_thread,
   gdb_assert (newname != NULL);
   gdb_assert (new_thread != NULL);
   newnamelen = strlen (newname);
-  if (!new_thread->private)
+  if (!new_thread->priv)
     {
-      new_thread->private = xmalloc (offsetof (struct private_thread_info,
+      new_thread->priv = xmalloc (offsetof (struct private_thread_info,
                                               name)
                                     + newnamelen + 1);
-      memcpy (new_thread->private->name, newname, newnamelen + 1);
+      memcpy (new_thread->priv->name, newname, newnamelen + 1);
     }
-  else if (strcmp (newname, new_thread->private->name) != 0)
+  else if (strcmp (newname, new_thread->priv->name) != 0)
     {
       /* Reallocate if neccessary.  */
-      int oldnamelen = strlen (new_thread->private->name);
+      int oldnamelen = strlen (new_thread->priv->name);
 
       if (oldnamelen < newnamelen)
-       new_thread->private = xrealloc (new_thread->private,
+       new_thread->priv = xrealloc (new_thread->priv,
                                        offsetof (struct private_thread_info,
                                                  name)
                                        + newnamelen + 1);
-      memcpy (new_thread->private->name, newname, newnamelen + 1);
+      memcpy (new_thread->priv->name, newname, newnamelen + 1);
     }
 }
 
@@ -301,7 +301,7 @@ update_thread_private_data (struct thread_info *new_thread,
 
   update_thread_private_data_name (new_thread, tn->name_buf);
 
-  pti = (struct private_thread_info *) new_thread->private;
+  pti = (struct private_thread_info *) new_thread->priv;
   pti->tid = tid;
   pti->state = state;
   pti->flags = flags;
@@ -309,7 +309,7 @@ update_thread_private_data (struct thread_info *new_thread,
 }
 
 static void
-procfs_find_new_threads (struct target_ops *ops)
+procfs_update_thread_list (struct target_ops *ops)
 {
   procfs_status status;
   pid_t pid;
@@ -320,6 +320,8 @@ procfs_find_new_threads (struct target_ops *ops)
   if (ctl_fd == -1)
     return;
 
+  prune_threads ();
+
   pid = ptid_get_pid (inferior_ptid);
 
   status.tid = 1;
@@ -633,7 +635,7 @@ procfs_attach (struct target_ops *ops, const char *args, int from_tty)
   if (!target_is_pushed (ops))
     push_target (ops);
 
-  procfs_find_new_threads (ops);
+  procfs_update_thread_list (ops);
 }
 
 static void
@@ -1197,7 +1199,7 @@ procfs_create_inferior (struct target_ops *ops, char *exec_file,
     close (fds[2]);
 
   inferior_ptid = do_attach (pid_to_ptid (pid));
-  procfs_find_new_threads (ops);
+  procfs_update_thread_list (ops);
 
   inf = current_inferior ();
   inferior_appeared (inf, pid);
@@ -1442,7 +1444,7 @@ init_procfs_targets (void)
   t->to_mourn_inferior = procfs_mourn_inferior;
   t->to_pass_signals = procfs_pass_signals;
   t->to_thread_alive = procfs_thread_alive;
-  t->to_find_new_threads = procfs_find_new_threads;
+  t->to_update_thread_list = procfs_update_thread_list;
   t->to_pid_to_str = procfs_pid_to_str;
   t->to_stop = procfs_stop;
   t->to_have_continuable_watchpoint = 1;
@@ -1494,16 +1496,16 @@ _initialize_procfs (void)
 
 
 static int
-procfs_hw_watchpoint (int addr, int len, int type)
+procfs_hw_watchpoint (int addr, int len, enum target_hw_bp_type type)
 {
   procfs_break brk;
 
   switch (type)
     {
-    case 1:                    /* Read.  */
+    case hw_read:
       brk.type = _DEBUG_BREAK_RD;
       break;
-    case 2:                    /* Read/Write.  */
+    case hw_access:
       brk.type = _DEBUG_BREAK_RW;
       break;
     default:                   /* Modify.  */
@@ -1525,14 +1527,16 @@ procfs_hw_watchpoint (int addr, int len, int type)
 
 static int
 procfs_can_use_hw_breakpoint (struct target_ops *self,
-                             int type, int cnt, int othertype)
+                             enum bptype type,
+                             int cnt, int othertype)
 {
   return 1;
 }
 
 static int
 procfs_remove_hw_watchpoint (struct target_ops *self,
-                            CORE_ADDR addr, int len, int type,
+                            CORE_ADDR addr, int len,
+                            enum target_hw_bp_type type,
                             struct expression *cond)
 {
   return procfs_hw_watchpoint (addr, -1, type);
@@ -1540,7 +1544,8 @@ procfs_remove_hw_watchpoint (struct target_ops *self,
 
 static int
 procfs_insert_hw_watchpoint (struct target_ops *self,
-                            CORE_ADDR addr, int len, int type,
+                            CORE_ADDR addr, int len,
+                            enum target_hw_bp_type type,
                             struct expression *cond)
 {
   return procfs_hw_watchpoint (addr, len, type);
This page took 0.026957 seconds and 4 git commands to generate.