static struct thread_info * require_btrace_thread (void) { struct thread_info *tp; DEBUG ("require"); tp = find_thread_ptid (inferior_ptid); if (tp == NULL) error (_("No thread.")); btrace_fetch (tp); if (btrace_is_empty (tp)) error (_("No trace.")); return tp; }
static void record_btrace_resume_thread (struct thread_info *tp, enum btrace_thread_flag flag) { struct btrace_thread_info *btinfo; DEBUG ("resuming %d (%s): %u", tp->num, target_pid_to_str (tp->ptid), flag); btinfo = &tp->btrace; if ((btinfo->flags & BTHR_MOVE) != 0) error (_("Thread already moving.")); /* Fetch the latest branch trace. */ btrace_fetch (tp); btinfo->flags |= flag; }
static void record_btrace_info (struct target_ops *self) { struct btrace_thread_info *btinfo; struct thread_info *tp; unsigned int insns, calls; DEBUG ("info"); tp = find_thread_ptid (inferior_ptid); if (tp == NULL) error (_("No thread.")); btrace_fetch (tp); insns = 0; calls = 0; btinfo = &tp->btrace; if (!btrace_is_empty (tp)) { struct btrace_call_iterator call; struct btrace_insn_iterator insn; btrace_call_end (&call, btinfo); btrace_call_prev (&call, 1); calls = btrace_call_number (&call); btrace_insn_end (&insn, btinfo); btrace_insn_prev (&insn, 1); insns = btrace_insn_number (&insn); } printf_unfiltered (_("Recorded %u instructions in %u functions for thread " "%d (%s).\n"), insns, calls, tp->num, target_pid_to_str (tp->ptid)); if (btrace_is_replaying (tp)) printf_unfiltered (_("Replay in progress. At instruction %u.\n"), btrace_insn_number (btinfo->replay)); }
static struct btrace_thread_info * require_btrace (void) { struct thread_info *tp; struct btrace_thread_info *btinfo; DEBUG ("require"); tp = find_thread_ptid (inferior_ptid); if (tp == NULL) error (_("No thread.")); btrace_fetch (tp); btinfo = &tp->btrace; if (VEC_empty (btrace_inst_s, btinfo->itrace)) error (_("No trace.")); return btinfo; }
static void record_btrace_info (void) { struct btrace_thread_info *btinfo; struct thread_info *tp; unsigned int insts, funcs; DEBUG ("info"); tp = find_thread_ptid (inferior_ptid); if (tp == NULL) error (_("No thread.")); btrace_fetch (tp); btinfo = &tp->btrace; insts = VEC_length (btrace_inst_s, btinfo->itrace); funcs = VEC_length (btrace_func_s, btinfo->ftrace); printf_unfiltered (_("Recorded %u instructions in %u functions for thread " "%d (%s).\n"), insts, funcs, tp->num, target_pid_to_str (tp->ptid)); }