63 #define DEFAULT_RECORD_FULL_INSN_MAX_NUM 200000 65 #define RECORD_FULL_IS_REPLAY \ 66 (record_full_list->next || execution_direction == EXEC_REVERSE) 68 #define RECORD_FULL_FILE_MAGIC netorder32(0x20091016) 236 const char *recfilename);
427 "Process record: record_full_arch_list_add %s.\n",
474 "Process record: add register num = %d to " 497 "Process record: add mem addr = %s len = %d to " 528 "Process record: add end to arch list.\n");
547 if (!
yquery (
_(
"Do you want to auto delete previous execution " 548 "log entries when record/replay buffer becomes " 549 "full (record full stop-at-limit)?")))
550 error (
_(
"Process record: stopped by user."));
611 if (signal == GDB_SIGNAL_0
622 error (
_(
"Process record: inferior program stopped."));
624 error (
_(
"Process record: failed to record execution log."));
640 enum gdb_signal signal)
688 "Process record: record_full_reg %s to " 689 "inferior num = %d.\n",
710 "Process record: record_full_mem %s to " 711 "inferior addr = %s len = %d.\n",
727 warning (
_(
"Process record: error writing memory at " 728 "addr = %s len = %d."),
784 for (i = 0; i <
regnum; i ++)
794 error (
_(
"\"%s\": Can't find sections: %s"),
795 bfd_get_filename (
core_bfd), bfd_errmsg (bfd_get_error ()));
812 error (
_(
"Process record: the program is not being run."));
814 error (
_(
"Process record target can't debug inferior in non-stop mode " 818 error (
_(
"Process record: the current architecture doesn't support " 819 "record function."));
932 enum gdb_signal signal)
1039 "Process record: record_full_wait " 1040 "record_full_resume_step = %d, " 1041 "record_full_resumed = %d, direction=%s\n",
1044 ?
"forward" :
"reverse");
1083 "Process record: record_full_wait " 1084 "target beneath not done yet\n");
1096 &&
status->value.sig == GDB_SIGNAL_TRAP)
1133 status->value.sig = GDB_SIGNAL_0;
1151 "Process record: record_full_wait " 1152 "issuing one more step in the " 1153 "target beneath\n");
1173 int continue_flag = 1;
1174 int first_record_full_end = 1;
1191 "Process record: break at %s.\n",
1233 "Process record: record_full_end %s to " 1241 first_record_full_end = 0;
1254 "Process record: step.\n");
1265 "Process record: break " 1276 "Process record: hit hw " 1301 while (continue_flag);
1305 status->value.sig = GDB_SIGNAL_INT;
1310 status->value.sig = GDB_SIGNAL_TRAP;
1410 error (
_(
"Process record: failed to record execution log."));
1419 error (
_(
"Process record: failed to record execution log."));
1425 error (
_(
"Process record: failed to record execution log."));
1453 query (
_(
"Because GDB is in replay mode, changing the " 1454 "value of a register will make the execution " 1455 "log unusable from this point onward. " 1456 "Change all registers?"));
1459 query (
_(
"Because GDB is in replay mode, changing the value " 1460 "of a register will make the execution log unusable " 1461 "from this point onward. Change register %s?"),
1481 error (
_(
"Process record canceled the operation."));
1500 const char *annex,
gdb_byte *readbuf,
1511 if (!
query (
_(
"Because GDB is in replay mode, writing to memory " 1512 "will make the execution log unusable from this " 1513 "point onward. Write memory at address %s?"),
1515 error (
_(
"Process record canceled the operation."));
1532 "Process record: failed to record " 1541 "Process record: failed to record " 1556 readbuf, writebuf,
offset,
1587 record_full_sync_record_breakpoints (
struct bp_location *
loc,
void *data)
1596 bp->addr =
loc->target_info.placed_address;
1597 bp->address_space =
loc->target_info.placed_address_space;
1599 bp->in_target_beneath = 1;
1652 record_full_breakpoints, ix,
bp);
1684 record_full_breakpoints, ix,
bp);
1690 if (
bp->in_target_beneath)
1705 record_full_breakpoints, ix);
1738 "record_full_get_bookmark returns %s\n", ret);
1741 "record_full_get_bookmark returns NULL\n");
1750 const gdb_byte *raw_bookmark,
int from_tty)
1752 const char *
bookmark = (
const char *) raw_bookmark;
1757 "record_full_goto_bookmark receives %s\n",
bookmark);
1869 error (
_(
"Target insn not found."));
1871 error (
_(
"Already at target insn."));
1914 for (; p!= NULL; p = p->
prev)
1949 "Log program while executing and replay execution from log.";
1997 enum gdb_signal signal)
2032 for (i = 0; i < num; i ++)
2060 error (
_(
"You can't do that without a process to debug."));
2068 const char *annex,
gdb_byte *readbuf,
2099 memset (readbuf, 0, len);
2106 entry = entry->
prev)
2116 if (!bfd_malloc_and_get_section
2128 memcpy (entry->
buf + sec_offset, writebuf,
2140 memcpy (readbuf, entry->
buf + sec_offset,
2152 error (
_(
"You can't do that without a process to debug."));
2156 readbuf, writebuf,
offset, len,
2195 "Log program while executing and replay execution from log.";
2289 int ret = bfd_get_section_contents (obfd, osec,
buf, *
offset, len);
2294 error (
_(
"Failed to read %d bytes from core file %s ('%s')."),
2295 len, bfd_get_filename (obfd),
2296 bfd_errmsg (bfd_get_error ()));
2299 static inline uint64_t
2305 BFD_ENDIAN_BIG, input);
2309 static inline uint32_t
2315 BFD_ENDIAN_BIG, input);
2343 osec = bfd_get_section_by_name (
core_bfd,
"null0");
2346 osec ?
"succeeded" :
"failed");
2349 osec_size = bfd_section_size (
core_bfd, osec);
2356 error (
_(
"Version mis-match or file format error in core file %s."),
2360 " Reading 4-byte magic cookie " 2361 "RECORD_FULL_FILE_MAGIC (0x%s)\n",
2375 uint32_t
regnum, len, signal, count;
2379 if (bfd_offset >= osec_size)
2388 sizeof (
regnum), &bfd_offset);
2399 " Reading register %d (1 " 2400 "plus %lu plus %d bytes)\n",
2402 (
unsigned long) sizeof (
regnum),
2409 sizeof (len), &bfd_offset);
2414 sizeof (addr), &bfd_offset);
2425 " Reading memory %s (1 plus " 2426 "%lu plus %lu plus %d bytes)\n",
2429 (
unsigned long) sizeof (addr),
2430 (
unsigned long)
sizeof (len),
2440 sizeof (signal), &bfd_offset);
2442 rec->
u.
end.
sigval = (
enum gdb_signal) signal;
2446 sizeof (count), &bfd_offset);
2452 " Reading record_full_end (1 + " 2453 "%lu + %lu bytes), offset == %s\n",
2454 (
unsigned long)
sizeof (signal),
2455 (
unsigned long)
sizeof (count),
2461 error (
_(
"Bad entry type in core file %s."),
2482 warning (
_(
"Auto increase record/replay buffer limit to %u."),
2498 int ret = bfd_set_section_contents (obfd, osec, buf, *
offset, len);
2503 error (
_(
"Failed to write %d bytes to core file %s ('%s')."),
2504 len, bfd_get_filename (obfd),
2505 bfd_errmsg (bfd_get_error ()));
2529 asection *osec = NULL;
2574 save_size += 1 + 4 + 4;
2585 osec = bfd_make_section_anyway_with_flags (obfd.
get (),
"precord",
2589 error (
_(
"Failed to create 'precord' section for corefile %s: %s"),
2591 bfd_errmsg (bfd_get_error ()));
2592 bfd_set_section_size (obfd.
get (), osec, save_size);
2593 bfd_set_section_vma (obfd.
get (), osec, 0);
2594 bfd_set_section_alignment (obfd.
get (), osec, 0);
2595 bfd_section_lma (obfd.
get (), osec) = 0;
2605 " Writing 4-byte magic cookie " 2606 "RECORD_FULL_FILE_MAGIC (0x%s)\n",
2619 uint32_t
regnum, len, signal, count;
2630 " Writing register %d (1 " 2631 "plus %lu plus %d bytes)\n",
2633 (
unsigned long) sizeof (
regnum),
2639 sizeof (
regnum), &bfd_offset);
2650 " Writing memory %s (1 plus " 2651 "%lu plus %lu plus %d bytes)\n",
2654 (
unsigned long) sizeof (addr),
2655 (
unsigned long)
sizeof (len),
2666 sizeof (addr), &bfd_offset);
2677 " Writing record_full_end (1 + " 2678 "%lu + %lu bytes)\n",
2679 (
unsigned long)
sizeof (signal),
2680 (
unsigned long)
sizeof (count));
2684 sizeof (signal), &bfd_offset);
2689 sizeof (count), &bfd_offset);
2716 unlink_file.
keep ();
2781 "by an appropriate subcommand.\n"));
2815 _(
"Restore the execution log from a file.\n\ 2816 Argument is filename. File must be created with 'record save'."),
2837 Set whether record/replay stops when record/replay buffer becomes full."),
_(
"\ 2838 Show whether record/replay stops when record/replay buffer becomes full."),
2839 _(
"Default is ON.\n\ 2840 When ON, if the record/replay buffer becomes full, ask user what to do.\n\ 2841 When OFF, if the record/replay buffer becomes full,\n\ 2842 delete the oldest recorded instruction to make room for each new one."),
2856 _(
"Set record/replay buffer limit."),
2857 _(
"Show record/replay buffer limit."),
_(
"\ 2858 Set the maximum number of instructions to be stored in the\n\ 2859 record/replay buffer. A value of either \"unlimited\" or zero means no\n\ 2860 limit. Default is 200000."),
2875 Set whether query if PREC cannot record memory change of next instruction."),
2877 Show whether query if PREC cannot record memory change of next instruction."),
2880 When ON, query if PREC cannot record memory change of next instruction."),
struct gdbarch * target_gdbarch(void)
int hardware_watchpoint_inserted_in_range(const address_space *aspace, CORE_ADDR addr, ULONGEST len)
#define target_can_async_p()
int gdbarch_software_single_step_p(struct gdbarch *gdbarch)
void add_target(struct target_ops *t)
struct cmd_list_element * show_record_cmdlist
static struct record_full_core_buf_entry * record_full_core_buf_list
static enum exec_direction_kind record_full_execution_direction(struct target_ops *self)
static struct cmd_list_element * set_record_full_cmdlist
void(* to_delete_record)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
static struct record_full_entry * record_full_arch_list_head
int insert_single_step_breakpoints(struct gdbarch *gdbarch)
int(* to_supports_stopped_by_hw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
static void record_full_core_store_registers(struct target_ops *ops, struct regcache *regcache, int regno)
static int record_full_core_has_execution(struct target_ops *ops, ptid_t the_ptid)
struct frame_info * get_selected_frame(const char *message)
void(* to_goto_bookmark)(struct target_ops *, const gdb_byte *, int) TARGET_DEFAULT_NORETURN(tcomplain())
static int record_full_is_replaying(struct target_ops *self, ptid_t ptid)
void(* to_goto_record_begin)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
static void record_full_goto_end(struct target_ops *self)
static void record_full_arch_list_cleanups(void *ignore)
void(* to_save_record)(struct target_ops *, const char *filename) TARGET_DEFAULT_NORETURN(tcomplain())
int gdbarch_process_record_signal(struct gdbarch *gdbarch, struct regcache *regcache, enum gdb_signal signal)
union record_full_reg_entry::@148 u
static ptid_t record_full_wait_1(struct target_ops *ops, ptid_t ptid, struct target_waitstatus *status, int options)
static void record_full_open(const char *name, int from_tty)
int target_write_memory(CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
gdb_byte buf[sizeof(gdb_byte *)]
static void record_full_message(struct regcache *regcache, enum gdb_signal signal)
struct address_space * address_space
int record_full_arch_list_add_reg(struct regcache *regcache, int regnum)
static void record_full_restore(void)
struct target_section * p
void record_goto(const char *arg)
void warning(const char *fmt,...)
struct cmd_list_element * deprecate_cmd(struct cmd_list_element *cmd, const char *replacement)
regcache(gdbarch *gdbarch)
int query(const char *ctlstr,...)
int gdbarch_process_record(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
struct cmd_list_element * set_record_cmdlist
int mem_entry_not_accessible
static uint64_t netorder64(uint64_t input)
void push_target(struct target_ops *t)
void(* to_record_stop_replaying)(struct target_ops *) TARGET_DEFAULT_IGNORE()
int(* to_insert_breakpoint)(struct target_ops *, struct gdbarch *, struct bp_target_info *) TARGET_DEFAULT_FUNC(memory_insert_breakpoint)
static void record_full_exec_insn(struct regcache *regcache, struct gdbarch *gdbarch, struct record_full_entry *entry)
int build_section_table(struct bfd *some_bfd, struct target_section **start, struct target_section **end)
void record_preopen(void)
static struct target_ops record_full_core_ops
void record_disconnect(struct target_ops *t, const char *args, int from_tty)
int unpush_target(struct target_ops *t)
void * memset(T *s, int c, size_t n)=delete
struct thread_info * inferior_thread(void)
void delete_async_event_handler(async_event_handler **async_handler_ptr)
unsigned int record_debug
void target_pass_signals(int numsigs, unsigned char *pass_signals)
#define VEC_unordered_remove(T, V, I)
void(* to_close)(struct target_ops *)
void mark_async_event_handler(async_event_handler *async_handler_ptr)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
#define DEFAULT_RECORD_FULL_INSN_MAX_NUM
static void init_record_full_ops(void)
struct record_full_reg_entry reg
static void set_record_full_insn_max_num(const char *args, int from_tty, struct cmd_list_element *c)
int yquery(const char *ctlstr,...)
void target_async(int enable)
static void cmd_record_full_restore(const char *args, int from_tty)
void filename_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
static int record_full_supports_stopped_by_sw_breakpoint(struct target_ops *ops)
#define VEC_safe_push(T, V, O)
static void record_full_sig_handler(int signo)
static int record_full_can_execute_reverse(struct target_ops *self)
static int record_full_stopped_by_sw_breakpoint(struct target_ops *ops)
int gdbarch_num_regs(struct gdbarch *gdbarch)
void target_fetch_registers(struct regcache *regcache, int regno)
void(* to_info_record)(struct target_ops *) TARGET_DEFAULT_IGNORE()
static void record_full_list_release_first(void)
static int record_full_core_remove_breakpoint(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt, enum remove_bp_reason reason)
static void record_full_goto_entry(struct record_full_entry *p)
union record_full_mem_entry::@147 u
DEF_VEC_P(record_full_breakpoint_p)
static unsigned int record_full_insn_num
#define target_stopped_by_watchpoint()
int record_full_is_used(void)
struct regcache * get_current_regcache(void)
gdb_byte buf[2 *sizeof(gdb_byte *)]
gdb_bfd_ref_ptr create_gcore_bfd(const char *filename)
void printf_filtered(const char *format,...)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
static void record_full_reg_release(struct record_full_entry *rec)
static unsigned int record_full_insn_max_num
#define host_address_to_string(ADDR)
void execute_command(const char *, int)
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
static void record_full_mem_release(struct record_full_entry *rec)
scoped_restore_tmpl< T > make_scoped_restore(T *var)
void null_cleanup(void *arg)
void add_setshow_uinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
static enum target_xfer_status record_full_xfer_partial(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
int(* to_record_is_replaying)(struct target_ops *, ptid_t ptid) TARGET_DEFAULT_RETURN(0)
scoped_restore_tmpl< int > record_full_gdb_operation_disable_set(void)
#define VEC_iterate(T, V, I, P)
static int record_full_resume_step
static void record_full_end_release(struct record_full_entry *rec)
static struct record_full_entry * record_full_arch_list_tail
enum exec_direction_kind execution_direction
#define CATCH(EXCEPTION, MASK)
static bool record_full_message_wrapper_safe(struct regcache *regcache, enum gdb_signal signal)
void inferior_event_handler(enum inferior_event_type event_type, gdb_client_data client_data)
static struct cmd_list_element * show_record_full_cmdlist
void observer_notify_record_changed(struct inferior *inferior, int started, const char *method, const char *format)
static void record_full_open_1(const char *name, int from_tty)
int record_read_memory(struct gdbarch *gdbarch, CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
int(* to_record_will_replay)(struct target_ops *, ptid_t ptid, int dir) TARGET_DEFAULT_RETURN(0)
static void record_full_arch_list_add(struct record_full_entry *rec)
void set_cmd_completer(struct cmd_list_element *cmd, completer_ftype *completer)
struct record_full_end_entry end
static void cmd_record_full_start(const char *args, int from_tty)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
struct record_full_mem_entry mem
int(* to_supports_stopped_by_sw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
static void record_full_async(struct target_ops *ops, int enable)
void(* to_resume)(struct target_ops *, ptid_t, int TARGET_DEBUG_PRINTER(target_debug_print_step), enum gdb_signal) TARGET_DEFAULT_NORETURN(noprocess())
void exception_print(struct ui_file *file, struct gdb_exception e)
VEC(record_full_breakpoint_p)
#define gdb_assert_not_reached(message)
static void record_full_list_release(struct record_full_entry *rec)
async_event_handler * create_async_event_handler(async_event_handler_func *proc, gdb_client_data client_data)
static void record_full_commit_resume(struct target_ops *ops)
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
static void record_full_store_registers(struct target_ops *ops, struct regcache *regcache, int regno)
char * pulongest(ULONGEST u)
int(* to_has_execution)(struct target_ops *, ptid_t)
void iterate_over_bp_locations(walk_bp_location_callback callback)
struct target_ops * find_record_target(void)
static enum record_full_type record_full_entry_release(struct record_full_entry *rec)
static ptid_t record_full_wait(struct target_ops *ops, ptid_t ptid, struct target_waitstatus *status, int options)
void _initialize_record_full(void)
struct gdbarch * get_current_arch(void)
void record_detach(struct target_ops *t, const char *args, int from_tty)
static void record_full_resume(struct target_ops *ops, ptid_t ptid, int step, enum gdb_signal signal)
void write_gcore_file(bfd *obfd)
struct record_full_breakpoint * record_full_breakpoint_p
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
static void record_full_info(struct target_ops *self)
struct record_full_core_buf_entry * prev
int gdbarch_process_record_signal_p(struct gdbarch *gdbarch)
union record_full_entry::@149 u
#define target_has_execution
enum record_full_type type
enum target_xfer_status(* to_xfer_partial)(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len) TARGET_DEFAULT_RETURN(TARGET_XFER_E_IO)
static struct record_full_entry record_full_first
static void record_full_wait_cleanups(void *ignore)
static void show_record_full_command(const char *args, int from_tty)
void printf_unfiltered(const char *format,...)
static gdb_byte * record_full_core_regbuf
static void record_full_core_fetch_registers(struct target_ops *ops, struct regcache *regcache, int regno)
void(* to_detach)(struct target_ops *ops, const char *, int) TARGET_DEFAULT_IGNORE()
static void record_full_core_open_1(const char *name, int from_tty)
struct record_full_entry * next
void(* to_async)(struct target_ops *, int) TARGET_DEFAULT_NORETURN(tcomplain())
#define RECORD_FULL_FILE_MAGIC
struct bfd_section * the_bfd_section
static enum exec_direction_kind record_full_execution_dir
static struct target_section * record_full_core_start
static int record_full_stopped_by_hw_breakpoint(struct target_ops *ops)
int record_check_stopped_by_breakpoint(const address_space *aspace, CORE_ADDR pc, enum target_stop_reason *reason)
int record_full_memory_query
int thread_has_single_step_breakpoints_set(struct thread_info *tp)
const address_space * aspace() const
void cmd_show_list(struct cmd_list_element *list, int from_tty, const char *prefix)
struct cmd_list_element * add_alias_cmd(const char *name, cmd_list_element *old, enum command_class theclass, int abbrev_flag, struct cmd_list_element **list)
void record_mourn_inferior(struct target_ops *t)
void(* to_commit_resume)(struct target_ops *) TARGET_DEFAULT_IGNORE()
int record_full_arch_list_add_mem(CORE_ADDR addr, int len)
void(* to_disconnect)(struct target_ops *, const char *, int) TARGET_DEFAULT_NORETURN(tcomplain())
static enum target_xfer_status record_full_core_xfer_partial(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
void regcache_invalidate(struct regcache *regcache, int regnum)
void print_stack_frame(struct frame_info *, int print_level, enum print_what print_what, int set_current_sal)
void add_deprecated_target_alias(struct target_ops *t, const char *alias)
static int record_full_core_insert_breakpoint(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
void record_kill(struct target_ops *t)
void core_file_command(const char *filename, int from_tty)
struct cmd_list_element * record_cmdlist
static int record_full_insert_breakpoint(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
enum exec_direction_kind(* to_execution_direction)(struct target_ops *) TARGET_DEFAULT_FUNC(default_execution_direction)
static int record_full_gdb_operation_disable
void help_list(struct cmd_list_element *list, const char *cmdtype, enum command_class theclass, struct ui_file *stream)
void discard_cleanups(struct cleanup *old_chain)
static enum target_stop_reason record_full_stop_reason
static struct target_section * record_full_core_end
static void record_full_goto_bookmark(struct target_ops *self, const gdb_byte *raw_bookmark, int from_tty)
void(* to_fetch_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_IGNORE()
void(* to_mourn_inferior)(struct target_ops *) TARGET_DEFAULT_FUNC(default_mourn_inferior)
char * phex_nz(ULONGEST l, int sizeof_l)
#define ALL_NON_EXITED_THREADS(T)
enum record_method(* to_record_method)(struct target_ops *, ptid_t ptid) TARGET_DEFAULT_RETURN(RECORD_METHOD_NONE)
static struct target_ops record_full_ops
enum register_status regcache_raw_read(struct regcache *regcache, int regnum, gdb_byte *buf)
static void record_full_core_kill(struct target_ops *ops)
static struct cmd_list_element * record_full_cmdlist
void(* to_kill)(struct target_ops *) TARGET_DEFAULT_NORETURN(noprocess())
CORE_ADDR regcache_read_pc(struct regcache *regcache)
gdb_byte *(* to_get_bookmark)(struct target_ops *, const char *, int) TARGET_DEFAULT_NORETURN(tcomplain())
static gdb_byte * record_full_get_bookmark(struct target_ops *self, const char *args, int from_tty)
int(* to_stopped_by_sw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
static void record_full_delete(struct target_ops *self)
static void record_full_list_release_following(struct record_full_entry *rec)
void(* to_goto_record_end)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
enum record_method record_full_record_method(struct target_ops *self, ptid_t ptid)
static struct record_full_entry * record_full_mem_alloc(CORE_ADDR addr, int len)
void(* to_open)(const char *, int)
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void registers_changed(void)
static ULONGEST record_full_insn_count
static gdb_byte * record_full_get_loc(struct record_full_entry *rec)
enum register_status regcache_cooked_read(struct regcache *regcache, int regnum, gdb_byte *buf)
int(* to_remove_breakpoint)(struct target_ops *, struct gdbarch *, struct bp_target_info *, enum remove_bp_reason) TARGET_DEFAULT_FUNC(memory_remove_breakpoint)
struct record_full_entry * prev
int(* to_stopped_by_watchpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
static void bfdcore_write(bfd *obfd, asection *osec, void *buf, int len, int *offset)
int gdbarch_process_record_p(struct gdbarch *gdbarch)
static void record_full_goto_begin(struct target_ops *self)
static struct record_full_entry * record_full_reg_alloc(struct regcache *regcache, int regnum)
static int record_full_resumed
int(* to_stopped_by_hw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
static int record_full_remove_breakpoint(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt, enum remove_bp_reason reason)
gdb::def_vector< gdb_byte > byte_vector
struct inferior * current_inferior(void)
void regcache_raw_supply(struct regcache *regcache, int regnum, const void *buf)
const char * to_shortname
void delete_single_step_breakpoints(struct thread_info *tp)
unsigned long long ULONGEST
static int record_full_supports_stopped_by_hw_breakpoint(struct target_ops *ops)
static void record_full_goto_insn(struct record_full_entry *entry, enum exec_direction_kind dir)
static int ignore(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
static void set_record_full_command(const char *args, int from_tty)
char * savestring(const char *ptr, size_t len)
int register_size(struct gdbarch *gdbarch, int regnum)
void clear_async_event_handler(async_event_handler *async_handler_ptr)
static struct record_full_entry * record_full_end_alloc(void)
static int record_full_will_replay(struct target_ops *self, ptid_t ptid, int dir)
static void init_record_full_core_ops(void)
#define RECORD_FULL_IS_REPLAY
void handle_sigint(int sig)
void regcache_raw_collect(const struct regcache *regcache, int regnum, void *buf)
static void record_full_close(struct target_ops *self)
static void record_full_stop_replaying(struct target_ops *self)
static struct async_event_handler * record_full_async_inferior_event_token
static void record_full_check_insn_num(void)
static int record_full_get_sig
void reinit_frame_cache(void)
static void record_full_core_resume(struct target_ops *ops, ptid_t ptid, int step, enum gdb_signal signal)
int(* to_stopped_data_address)(struct target_ops *, CORE_ADDR *) TARGET_DEFAULT_RETURN(0)
struct address_space * placed_address_space
static int record_full_stopped_data_address(struct target_ops *ops, CORE_ADDR *addr_p)
static void record_full_goto(struct target_ops *self, ULONGEST target_insn)
static void bfdcore_read(bfd *obfd, asection *osec, void *buf, int len, int *offset)
static void record_full_core_prepare_to_store(struct target_ops *self, struct regcache *regcache)
void(* to_prepare_to_store)(struct target_ops *, struct regcache *) TARGET_DEFAULT_NORETURN(noprocess())
void(* to_store_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_NORETURN(noprocess())
#define target_thread_architecture(ptid)
static int record_full_stopped_by_watchpoint(struct target_ops *ops)
ptid_t(* to_wait)(struct target_ops *, ptid_t, struct target_waitstatus *, int TARGET_DEBUG_PRINTER(target_debug_print_options)) TARGET_DEFAULT_FUNC(default_target_wait)
static void record_full_async_inferior_event_handler(gdb_client_data data)
static uint32_t netorder32(uint32_t input)
int record_full_arch_list_add_end(void)
void set_executing(ptid_t ptid, int executing)
void error(const char *fmt,...)
static void record_full_registers_change(struct regcache *regcache, int regnum)
struct target_ops * beneath
int(* to_can_execute_reverse)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
void do_cleanups(struct cleanup *old_chain)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
static int record_full_stop_at_limit
static void record_full_init_record_breakpoints(void)
static struct record_full_entry * record_full_list
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
void(* to_goto_record)(struct target_ops *, ULONGEST insn) TARGET_DEFAULT_NORETURN(tcomplain())
static void record_full_save(struct target_ops *self, const char *recfilename)