GDB/MI: Document support for -exec-run --start in -list-features
[deliverable/binutils-gdb.git] / gdb / ctf.c
index 240e909aa11fa5c58612c11b11a72327cee6daec..b886d67fa18238bbc74425b9a4332cab7f084340 100644 (file)
--- a/gdb/ctf.c
+++ b/gdb/ctf.c
@@ -23,7 +23,7 @@
 #include "ctf.h"
 #include "tracepoint.h"
 #include "regcache.h"
-#include "gdb_stat.h"
+#include <sys/stat.h>
 #include "exec.h"
 #include "completer.h"
 
@@ -313,18 +313,7 @@ ctf_start (struct trace_file_writer *self, const char *dirname)
   struct ctf_trace_file_writer *writer
     = (struct ctf_trace_file_writer *) self;
   int i;
-  mode_t hmode = S_IRUSR | S_IWUSR | S_IXUSR
-#ifdef S_IRGRP
-    | S_IRGRP
-#endif
-#ifdef S_IXGRP
-    | S_IXGRP
-#endif
-    | S_IROTH /* Defined in common/gdb_stat.h if not defined.  */
-#ifdef S_IXOTH
-    | S_IXOTH
-#endif
-    ;
+  mode_t hmode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH;
 
   /* Create DIRNAME.  */
   if (mkdir (dirname, hmode) && errno != EEXIST)
@@ -1212,6 +1201,8 @@ ctf_close (void)
   ctf_destroy ();
   xfree (trace_dirname);
   trace_dirname = NULL;
+
+  trace_reset_local_state ();
 }
 
 /* This is the implementation of target_ops method to_files_info.
@@ -1234,7 +1225,7 @@ ctf_fetch_registers (struct target_ops *ops,
 {
   struct gdbarch *gdbarch = get_regcache_arch (regcache);
   int offset, regn, regsize, pc_regno;
-  char *regs = NULL;
+  gdb_byte *regs = NULL;
   struct bt_ctf_event *event = NULL;
   struct bt_iter_pos *pos;
 
@@ -1280,7 +1271,7 @@ ctf_fetch_registers (struct target_ops *ops,
       const struct bt_definition *array
        = bt_ctf_get_field (event, scope, "contents");
 
-      regs = bt_ctf_get_char_array (array);
+      regs = (gdb_byte *) bt_ctf_get_char_array (array);
       /* Assume the block is laid out in GDB register number order,
         each register with the size that it has in GDB.  */
       offset = 0;
@@ -1776,6 +1767,18 @@ ctf_traceframe_info (void)
          def = bt_ctf_get_field (event, scope, "length");
          r->length = (uint16_t) bt_ctf_get_uint64 (def);
        }
+      else if (strcmp (name, "tsv") == 0)
+       {
+         int vnum;
+         const struct bt_definition *scope
+           = bt_ctf_get_top_level_scope (event,
+                                         BT_EVENT_FIELDS);
+         const struct bt_definition *def;
+
+         def = bt_ctf_get_field (event, scope, "num");
+         vnum = (int) bt_ctf_get_int64 (def);
+         VEC_safe_push (int, info->tvars, vnum);
+       }
       else
        {
          warning (_("Unhandled trace block type (%s) "
This page took 0.025279 seconds and 4 git commands to generate.