/* CTF format support.
- Copyright (C) 2012-2013 Free Software Foundation, Inc.
+ Copyright (C) 2012-2014 Free Software Foundation, Inc.
Contributed by Hui Zhu <hui_zhu@mentor.com>
Contributed by Yao Qi <yao@codesourcery.com>
#include "ctf.h"
#include "tracepoint.h"
#include "regcache.h"
-#include "gdb_stat.h"
+#include <sys/stat.h>
#include "exec.h"
#include "completer.h"
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)
ctf_destroy ();
xfree (trace_dirname);
trace_dirname = NULL;
+
+ trace_reset_local_state ();
}
/* This is the implementation of target_ops method to_files_info.
{
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;
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;
ctf_xfer_partial (struct target_ops *ops, enum target_object object,
const char *annex, gdb_byte *readbuf,
const gdb_byte *writebuf, ULONGEST offset,
- LONGEST len)
+ ULONGEST len)
{
/* We're only doing regular memory for now. */
if (object != TARGET_OBJECT_MEMORY)
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) "