X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftarget.c;h=2f11588b6cb9b7d282b0ab1548c44d921e8457fa;hb=65f160a9b327f4ea99f9776b2cd1d590e94ca4f3;hp=00083c22a0d0f7619eb5e90f05b105ecb61f7bd7;hpb=a3be983cee10c1bcd7cda582c3bb91c065ad97a2;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/target.c b/gdb/target.c index 00083c22a0..2f11588b6c 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -55,6 +55,8 @@ static int default_watchpoint_addr_within_range (struct target_ops *, static int default_region_ok_for_hw_watchpoint (struct target_ops *, CORE_ADDR, int); +static void default_rcmd (struct target_ops *, char *, struct ui_file *); + static void tcomplain (void) ATTRIBUTE_NORETURN; static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *); @@ -589,7 +591,7 @@ update_current_target (void) /* Do not inherit to_open. */ /* Do not inherit to_close. */ /* Do not inherit to_attach. */ - INHERIT (to_post_attach, t); + /* Do not inherit to_post_attach. */ INHERIT (to_attach_no_wait, t); /* Do not inherit to_detach. */ /* Do not inherit to_disconnect. */ @@ -597,24 +599,24 @@ update_current_target (void) /* Do not inherit to_wait. */ /* Do not inherit to_fetch_registers. */ /* Do not inherit to_store_registers. */ - INHERIT (to_prepare_to_store, t); + /* Do not inherit to_prepare_to_store. */ INHERIT (deprecated_xfer_memory, t); - INHERIT (to_files_info, t); + /* Do not inherit to_files_info. */ /* Do not inherit to_insert_breakpoint. */ /* Do not inherit to_remove_breakpoint. */ - INHERIT (to_can_use_hw_breakpoint, t); - INHERIT (to_insert_hw_breakpoint, t); - INHERIT (to_remove_hw_breakpoint, t); + /* Do not inherit to_can_use_hw_breakpoint. */ + /* Do not inherit to_insert_hw_breakpoint. */ + /* Do not inherit to_remove_hw_breakpoint. */ /* Do not inherit to_ranged_break_num_registers. */ - INHERIT (to_insert_watchpoint, t); - INHERIT (to_remove_watchpoint, t); + /* Do not inherit to_insert_watchpoint. */ + /* Do not inherit to_remove_watchpoint. */ /* Do not inherit to_insert_mask_watchpoint. */ /* Do not inherit to_remove_mask_watchpoint. */ /* Do not inherit to_stopped_data_address. */ INHERIT (to_have_steppable_watchpoint, t); INHERIT (to_have_continuable_watchpoint, t); /* Do not inherit to_stopped_by_watchpoint. */ - INHERIT (to_watchpoint_addr_within_range, t); + /* Do not inherit to_watchpoint_addr_within_range. */ INHERIT (to_region_ok_for_hw_watchpoint, t); INHERIT (to_can_accel_watchpoint_condition, t); /* Do not inherit to_masked_watch_num_registers. */ @@ -648,7 +650,7 @@ update_current_target (void) INHERIT (to_thread_name, t); INHERIT (to_stop, t); /* Do not inherit to_xfer_partial. */ - INHERIT (to_rcmd, t); + /* Do not inherit to_rcmd. */ INHERIT (to_pid_to_exec_file, t); INHERIT (to_log_command, t); INHERIT (to_stratum, t); @@ -728,40 +730,10 @@ update_current_target (void) de_fault (to_close, (void (*) (struct target_ops *)) target_ignore); - de_fault (to_post_attach, - (void (*) (struct target_ops *, int)) - target_ignore); - de_fault (to_prepare_to_store, - (void (*) (struct target_ops *, struct regcache *)) - noprocess); de_fault (deprecated_xfer_memory, (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *)) nomemory); - de_fault (to_files_info, - (void (*) (struct target_ops *)) - target_ignore); - de_fault (to_can_use_hw_breakpoint, - (int (*) (struct target_ops *, int, int, int)) - return_zero); - de_fault (to_insert_hw_breakpoint, - (int (*) (struct target_ops *, struct gdbarch *, - struct bp_target_info *)) - return_minus_one); - de_fault (to_remove_hw_breakpoint, - (int (*) (struct target_ops *, struct gdbarch *, - struct bp_target_info *)) - return_minus_one); - de_fault (to_insert_watchpoint, - (int (*) (struct target_ops *, CORE_ADDR, int, int, - struct expression *)) - return_minus_one); - de_fault (to_remove_watchpoint, - (int (*) (struct target_ops *, CORE_ADDR, int, int, - struct expression *)) - return_minus_one); - de_fault (to_watchpoint_addr_within_range, - default_watchpoint_addr_within_range); de_fault (to_region_ok_for_hw_watchpoint, default_region_ok_for_hw_watchpoint); de_fault (to_can_accel_watchpoint_condition, @@ -827,9 +799,6 @@ update_current_target (void) de_fault (to_stop, (void (*) (struct target_ops *, ptid_t)) target_ignore); - de_fault (to_rcmd, - (void (*) (struct target_ops *, char *, struct ui_file *)) - tcomplain); de_fault (to_pid_to_exec_file, (char *(*) (struct target_ops *, int)) return_null); @@ -849,85 +818,90 @@ update_current_target (void) (int (*) (struct target_ops *)) return_zero); de_fault (to_trace_init, - (void (*) (void)) + (void (*) (struct target_ops *)) tcomplain); de_fault (to_download_tracepoint, - (void (*) (struct bp_location *)) + (void (*) (struct target_ops *, struct bp_location *)) tcomplain); de_fault (to_can_download_tracepoint, - (int (*) (void)) + (int (*) (struct target_ops *)) return_zero); de_fault (to_download_trace_state_variable, - (void (*) (struct trace_state_variable *)) + (void (*) (struct target_ops *, struct trace_state_variable *)) tcomplain); de_fault (to_enable_tracepoint, - (void (*) (struct bp_location *)) + (void (*) (struct target_ops *, struct bp_location *)) tcomplain); de_fault (to_disable_tracepoint, - (void (*) (struct bp_location *)) + (void (*) (struct target_ops *, struct bp_location *)) tcomplain); de_fault (to_trace_set_readonly_regions, - (void (*) (void)) + (void (*) (struct target_ops *)) tcomplain); de_fault (to_trace_start, - (void (*) (void)) + (void (*) (struct target_ops *)) tcomplain); de_fault (to_get_trace_status, - (int (*) (struct trace_status *)) + (int (*) (struct target_ops *, struct trace_status *)) return_minus_one); de_fault (to_get_tracepoint_status, - (void (*) (struct breakpoint *, struct uploaded_tp *)) + (void (*) (struct target_ops *, struct breakpoint *, + struct uploaded_tp *)) tcomplain); de_fault (to_trace_stop, - (void (*) (void)) + (void (*) (struct target_ops *)) tcomplain); de_fault (to_trace_find, - (int (*) (enum trace_find_type, int, CORE_ADDR, CORE_ADDR, int *)) + (int (*) (struct target_ops *, + enum trace_find_type, int, CORE_ADDR, CORE_ADDR, int *)) return_minus_one); de_fault (to_get_trace_state_variable_value, - (int (*) (int, LONGEST *)) + (int (*) (struct target_ops *, int, LONGEST *)) return_zero); de_fault (to_save_trace_data, - (int (*) (const char *)) + (int (*) (struct target_ops *, const char *)) tcomplain); de_fault (to_upload_tracepoints, - (int (*) (struct uploaded_tp **)) + (int (*) (struct target_ops *, struct uploaded_tp **)) return_zero); de_fault (to_upload_trace_state_variables, - (int (*) (struct uploaded_tsv **)) + (int (*) (struct target_ops *, struct uploaded_tsv **)) return_zero); de_fault (to_get_raw_trace_data, - (LONGEST (*) (gdb_byte *, ULONGEST, LONGEST)) + (LONGEST (*) (struct target_ops *, gdb_byte *, ULONGEST, LONGEST)) tcomplain); de_fault (to_get_min_fast_tracepoint_insn_len, - (int (*) (void)) + (int (*) (struct target_ops *)) return_minus_one); de_fault (to_set_disconnected_tracing, - (void (*) (int)) + (void (*) (struct target_ops *, int)) target_ignore); de_fault (to_set_circular_trace_buffer, - (void (*) (int)) + (void (*) (struct target_ops *, int)) target_ignore); de_fault (to_set_trace_buffer_size, - (void (*) (LONGEST)) + (void (*) (struct target_ops *, LONGEST)) target_ignore); de_fault (to_set_trace_notes, - (int (*) (const char *, const char *, const char *)) + (int (*) (struct target_ops *, + const char *, const char *, const char *)) return_zero); de_fault (to_get_tib_address, - (int (*) (ptid_t, CORE_ADDR *)) + (int (*) (struct target_ops *, ptid_t, CORE_ADDR *)) tcomplain); de_fault (to_set_permissions, - (void (*) (void)) + (void (*) (struct target_ops *)) target_ignore); de_fault (to_static_tracepoint_marker_at, - (int (*) (CORE_ADDR, struct static_tracepoint_marker *)) + (int (*) (struct target_ops *, + CORE_ADDR, struct static_tracepoint_marker *)) return_zero); de_fault (to_static_tracepoint_markers_by_strid, - (VEC(static_tracepoint_marker_p) * (*) (const char *)) + (VEC(static_tracepoint_marker_p) * (*) (struct target_ops *, + const char *)) tcomplain); de_fault (to_traceframe_info, - (struct traceframe_info * (*) (void)) + (struct traceframe_info * (*) (struct target_ops *)) return_null); de_fault (to_supports_evaluation_of_breakpoint_conditions, (int (*) (struct target_ops *)) @@ -936,13 +910,13 @@ update_current_target (void) (int (*) (struct target_ops *)) return_zero); de_fault (to_use_agent, - (int (*) (int)) + (int (*) (struct target_ops *, int)) tcomplain); de_fault (to_can_use_agent, - (int (*) (void)) + (int (*) (struct target_ops *)) return_zero); de_fault (to_augmented_libraries_svr4_read, - (int (*) (void)) + (int (*) (struct target_ops *)) return_zero); de_fault (to_execution_direction, default_execution_direction); @@ -2685,19 +2659,10 @@ target_detach (const char *args, int from_tty) prepare_for_detach (); - for (t = current_target.beneath; t != NULL; t = t->beneath) - { - if (t->to_detach != NULL) - { - t->to_detach (t, args, from_tty); - if (targetdebug) - fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", - args, from_tty); - return; - } - } - - internal_error (__FILE__, __LINE__, _("could not find a target to detach")); + current_target.to_detach (¤t_target, args, from_tty); + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", + args, from_tty); } void @@ -3458,7 +3423,7 @@ target_fileio_close (int fd, int *target_errno) { if (t->to_fileio_close != NULL) { - int ret = t->to_fileio_close (fd, target_errno); + int ret = t->to_fileio_close (t, fd, target_errno); if (targetdebug) fprintf_unfiltered (gdb_stdlog, @@ -3483,7 +3448,7 @@ target_fileio_unlink (const char *filename, int *target_errno) { if (t->to_fileio_unlink != NULL) { - int ret = t->to_fileio_unlink (filename, target_errno); + int ret = t->to_fileio_unlink (t, filename, target_errno); if (targetdebug) fprintf_unfiltered (gdb_stdlog, @@ -3509,7 +3474,7 @@ target_fileio_readlink (const char *filename, int *target_errno) { if (t->to_fileio_readlink != NULL) { - char *ret = t->to_fileio_readlink (filename, target_errno); + char *ret = t->to_fileio_readlink (t, filename, target_errno); if (targetdebug) fprintf_unfiltered (gdb_stdlog, @@ -3810,9 +3775,6 @@ init_dummy_target (void) dummy_target.to_shortname = "None"; dummy_target.to_longname = "None"; dummy_target.to_doc = ""; - dummy_target.to_attach = find_default_attach; - dummy_target.to_detach = - (void (*)(struct target_ops *, const char *, int))target_ignore; dummy_target.to_create_inferior = find_default_create_inferior; dummy_target.to_supports_non_stop = find_default_supports_non_stop; dummy_target.to_supports_disable_randomization @@ -3859,22 +3821,10 @@ target_close (struct target_ops *targ) void target_attach (char *args, int from_tty) { - struct target_ops *t; - - for (t = current_target.beneath; t != NULL; t = t->beneath) - { - if (t->to_attach != NULL) - { - t->to_attach (t, args, from_tty); - if (targetdebug) - fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n", - args, from_tty); - return; - } - } - - internal_error (__FILE__, __LINE__, - _("could not find a target to attach")); + current_target.to_attach (¤t_target, args, from_tty); + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n", + args, from_tty); } int @@ -4194,7 +4144,7 @@ target_enable_btrace (ptid_t ptid) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_enable_btrace != NULL) - return t->to_enable_btrace (ptid); + return t->to_enable_btrace (t, ptid); tcomplain (); return NULL; @@ -4210,7 +4160,7 @@ target_disable_btrace (struct btrace_target_info *btinfo) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_disable_btrace != NULL) { - t->to_disable_btrace (btinfo); + t->to_disable_btrace (t, btinfo); return; } @@ -4227,7 +4177,7 @@ target_teardown_btrace (struct btrace_target_info *btinfo) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_teardown_btrace != NULL) { - t->to_teardown_btrace (btinfo); + t->to_teardown_btrace (t, btinfo); return; } @@ -4245,7 +4195,7 @@ target_read_btrace (VEC (btrace_block_s) **btrace, for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_read_btrace != NULL) - return t->to_read_btrace (btrace, btinfo, type); + return t->to_read_btrace (t, btrace, btinfo, type); tcomplain (); return BTRACE_ERR_NOT_SUPPORTED; @@ -4261,7 +4211,7 @@ target_stop_recording (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_stop_recording != NULL) { - t->to_stop_recording (); + t->to_stop_recording (t); return; } @@ -4278,7 +4228,7 @@ target_info_record (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_info_record != NULL) { - t->to_info_record (); + t->to_info_record (t); return; } @@ -4295,7 +4245,7 @@ target_save_record (const char *filename) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_save_record != NULL) { - t->to_save_record (filename); + t->to_save_record (t, filename); return; } @@ -4326,7 +4276,7 @@ target_delete_record (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_delete_record != NULL) { - t->to_delete_record (); + t->to_delete_record (t); return; } @@ -4342,7 +4292,7 @@ target_record_is_replaying (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_record_is_replaying != NULL) - return t->to_record_is_replaying (); + return t->to_record_is_replaying (t); return 0; } @@ -4357,7 +4307,7 @@ target_goto_record_begin (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_goto_record_begin != NULL) { - t->to_goto_record_begin (); + t->to_goto_record_begin (t); return; } @@ -4374,7 +4324,7 @@ target_goto_record_end (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_goto_record_end != NULL) { - t->to_goto_record_end (); + t->to_goto_record_end (t); return; } @@ -4391,7 +4341,7 @@ target_goto_record (ULONGEST insn) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_goto_record != NULL) { - t->to_goto_record (insn); + t->to_goto_record (t, insn); return; } @@ -4408,7 +4358,7 @@ target_insn_history (int size, int flags) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_insn_history != NULL) { - t->to_insn_history (size, flags); + t->to_insn_history (t, size, flags); return; } @@ -4425,7 +4375,7 @@ target_insn_history_from (ULONGEST from, int size, int flags) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_insn_history_from != NULL) { - t->to_insn_history_from (from, size, flags); + t->to_insn_history_from (t, from, size, flags); return; } @@ -4442,7 +4392,7 @@ target_insn_history_range (ULONGEST begin, ULONGEST end, int flags) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_insn_history_range != NULL) { - t->to_insn_history_range (begin, end, flags); + t->to_insn_history_range (t, begin, end, flags); return; } @@ -4459,7 +4409,7 @@ target_call_history (int size, int flags) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_call_history != NULL) { - t->to_call_history (size, flags); + t->to_call_history (t, size, flags); return; } @@ -4476,7 +4426,7 @@ target_call_history_from (ULONGEST begin, int size, int flags) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_call_history_from != NULL) { - t->to_call_history_from (begin, size, flags); + t->to_call_history_from (t, begin, size, flags); return; } @@ -4493,7 +4443,7 @@ target_call_history_range (ULONGEST begin, ULONGEST end, int flags) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_call_history_range != NULL) { - t->to_call_history_range (begin, end, flags); + t->to_call_history_range (t, begin, end, flags); return; } @@ -5072,17 +5022,16 @@ static char targ_desc[] = stack of targets currently in use (including the exec-file,\n\ core-file, and process, if any), as well as the symbol file name."; +static void +default_rcmd (struct target_ops *self, char *command, struct ui_file *output) +{ + error (_("\"monitor\" command not supported by this target.")); +} + static void do_monitor_command (char *cmd, int from_tty) { - if ((current_target.to_rcmd - == (void (*) (struct target_ops *, char *, struct ui_file *)) tcomplain) - || (current_target.to_rcmd == debug_to_rcmd - && (debug_target.to_rcmd - == (void (*) (struct target_ops *, - char *, struct ui_file *)) tcomplain))) - error (_("\"monitor\" command not supported by this target.")); target_rcmd (cmd, gdb_stdtarg); }