extern int errno;
-static void
-target_info PARAMS ((char *, int));
+static void target_info (char *, int);
-static void
-cleanup_target PARAMS ((struct target_ops *));
+static void cleanup_target (struct target_ops *);
-static void
-maybe_kill_then_create_inferior PARAMS ((char *, char *, char **));
+static void maybe_kill_then_create_inferior (char *, char *, char **);
-static void
-default_clone_and_follow_inferior PARAMS ((int, int *));
+static void default_clone_and_follow_inferior (int, int *);
-static void
-maybe_kill_then_attach PARAMS ((char *, int));
+static void maybe_kill_then_attach (char *, int);
-static void
-kill_or_be_killed PARAMS ((int));
+static void kill_or_be_killed (int);
-static void
-default_terminal_info PARAMS ((char *, int));
+static void default_terminal_info (char *, int);
-static int
-nosymbol PARAMS ((char *, CORE_ADDR *));
+static int nosymbol (char *, CORE_ADDR *);
-static void
-tcomplain PARAMS ((void));
+static void tcomplain (void);
-static int
-nomemory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
-static int
-return_zero PARAMS ((void));
+static int return_zero (void);
-static int
-return_one PARAMS ((void));
+static int return_one (void);
-void
-target_ignore PARAMS ((void));
+void target_ignore (void);
-static void
-target_command PARAMS ((char *, int));
+static void target_command (char *, int);
-static struct target_ops *
-find_default_run_target PARAMS ((char *));
+static struct target_ops *find_default_run_target (char *);
-static void
-update_current_target PARAMS ((void));
+static void update_current_target (void);
-static void nosupport_runtime PARAMS ((void));
+static void nosupport_runtime (void);
-static void normal_target_post_startup_inferior PARAMS ((int pid));
+static void normal_target_post_startup_inferior (int pid);
/* Transfer LEN bytes between target address MEMADDR and GDB address
MYADDR. Returns 0 for success, errno code for failure (which
target_write_memory_partial). */
static int
-target_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len,
- int write, asection * bfd_section));
+target_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write);
-static void init_dummy_target PARAMS ((void));
+static void init_dummy_target (void);
-static void
-debug_to_open PARAMS ((char *, int));
+static void debug_to_open (char *, int);
-static void
-debug_to_close PARAMS ((int));
+static void debug_to_close (int);
-static void
-debug_to_attach PARAMS ((char *, int));
+static void debug_to_attach (char *, int);
-static void
-debug_to_detach PARAMS ((char *, int));
+static void debug_to_detach (char *, int);
-static void
-debug_to_resume PARAMS ((int, int, enum target_signal));
+static void debug_to_resume (int, int, enum target_signal);
-static int
-debug_to_wait PARAMS ((int, struct target_waitstatus *));
+static int debug_to_wait (int, struct target_waitstatus *);
-static void
-debug_to_fetch_registers PARAMS ((int));
+static void debug_to_fetch_registers (int);
-static void
-debug_to_store_registers PARAMS ((int));
+static void debug_to_store_registers (int);
-static void
-debug_to_prepare_to_store PARAMS ((void));
+static void debug_to_prepare_to_store (void);
static int
-debug_to_xfer_memory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+debug_to_xfer_memory (CORE_ADDR, char *, int, int, struct target_ops *);
-static void
-debug_to_files_info PARAMS ((struct target_ops *));
+static void debug_to_files_info (struct target_ops *);
-static int
-debug_to_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int debug_to_insert_breakpoint (CORE_ADDR, char *);
-static int
-debug_to_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int debug_to_remove_breakpoint (CORE_ADDR, char *);
-static void
-debug_to_terminal_init PARAMS ((void));
+static void debug_to_terminal_init (void);
-static void
-debug_to_terminal_inferior PARAMS ((void));
+static void debug_to_terminal_inferior (void);
-static void
-debug_to_terminal_ours_for_output PARAMS ((void));
+static void debug_to_terminal_ours_for_output (void);
-static void
-debug_to_terminal_ours PARAMS ((void));
+static void debug_to_terminal_ours (void);
-static void
-debug_to_terminal_info PARAMS ((char *, int));
+static void debug_to_terminal_info (char *, int);
-static void
-debug_to_kill PARAMS ((void));
+static void debug_to_kill (void);
-static void
-debug_to_load PARAMS ((char *, int));
+static void debug_to_load (char *, int);
-static int
-debug_to_lookup_symbol PARAMS ((char *, CORE_ADDR *));
+static int debug_to_lookup_symbol (char *, CORE_ADDR *);
-static void
-debug_to_create_inferior PARAMS ((char *, char *, char **));
+static void debug_to_create_inferior (char *, char *, char **);
-static void
-debug_to_mourn_inferior PARAMS ((void));
+static void debug_to_mourn_inferior (void);
-static int
-debug_to_can_run PARAMS ((void));
+static int debug_to_can_run (void);
-static void
-debug_to_notice_signals PARAMS ((int));
+static void debug_to_notice_signals (int);
-static int
-debug_to_thread_alive PARAMS ((int));
+static int debug_to_thread_alive (int);
-static void
-debug_to_stop PARAMS ((void));
+static void debug_to_stop (void);
-static int debug_to_query PARAMS ((int /*char */ , char *, char *, int *));
+static int debug_to_query (int /*char */ , char *, char *, int *);
/* Pointer to array of target architecture structures; the size of the
array; the current index into the array; the allocated size of the
static int targetdebug = 0;
-static void setup_target_debug PARAMS ((void));
+static void setup_target_debug (void);
/* The user just typed 'target' without the name of a target. */
tlen = MIN (len, 4 - (memaddr & 3));
offset = memaddr & 3;
- errcode = target_xfer_memory (memaddr & ~3, buf, 4, 0, NULL);
+ errcode = target_xfer_memory (memaddr & ~3, buf, 4, 0);
if (errcode != 0)
{
/* The transfer request might have crossed the boundary to an
a single byte. */
tlen = 1;
offset = 0;
- errcode = target_xfer_memory (memaddr, buf, 1, 0, NULL);
+ errcode = target_xfer_memory (memaddr, buf, 1, 0);
if (errcode != 0)
goto done;
}
char *myaddr;
int len;
{
- return target_xfer_memory (memaddr, myaddr, len, 0, NULL);
-}
-
-int
-target_read_memory_section (memaddr, myaddr, len, bfd_section)
- CORE_ADDR memaddr;
- char *myaddr;
- int len;
- asection *bfd_section;
-{
- return target_xfer_memory (memaddr, myaddr, len, 0, bfd_section);
+ return target_xfer_memory (memaddr, myaddr, len, 0);
}
int
char *myaddr;
int len;
{
- return target_xfer_memory (memaddr, myaddr, len, 1, NULL);
+ return target_xfer_memory (memaddr, myaddr, len, 1);
}
-/* This variable is used to pass section information down to targets. This
- *should* be done by adding an argument to the target_xfer_memory function
- of all the targets, but I didn't feel like changing 50+ files. */
-
-asection *target_memory_bfd_section = NULL;
-
/* Move memory to or from the targets. Iterate until all of it has
been moved, if necessary. The top target gets priority; anything
it doesn't want, is offered to the next one down, etc. Note the
Result is 0 or errno value. */
static int
-target_xfer_memory (memaddr, myaddr, len, write, bfd_section)
+target_xfer_memory (memaddr, myaddr, len, write)
CORE_ADDR memaddr;
char *myaddr;
int len;
int write;
- asection *bfd_section;
{
int curlen;
int res;
if (len == 0)
return 0;
- target_memory_bfd_section = bfd_section;
-
/* to_xfer_memory is not guaranteed to set errno, even when it returns
0. */
errno = 0;
}
+/* Remove all target sections taken from ABFD.
+
+ Scan the current target stack for targets whose section tables
+ refer to sections from BFD, and remove those sections. We use this
+ when we notice that the inferior has unloaded a shared object, for
+ example. */
+void
+remove_target_sections (bfd *abfd)
+{
+ struct target_ops **t;
+
+ for (t = target_structs; t < target_structs + target_struct_size; t++)
+ {
+ struct section_table *src, *dest;
+
+ dest = (*t)->to_sections;
+ for (src = (*t)->to_sections; src < (*t)->to_sections_end; src++)
+ if (src->bfd != abfd)
+ {
+ /* Keep this section. */
+ if (dest < src) *dest = *src;
+ dest++;
+ }
+
+ /* If we've dropped any sections, resize the section table. */
+ if (dest < src)
+ target_resize_to_sections (*t, dest - src);
+ }
+}
+
+
+
+
/* Find a single runnable target in the stack and return it. If for
some reason there is more than one, return NULL. */
return SIGPRIO;
#endif
- case TARGET_SIGNAL_REALTIME_32: return 32; /* by definition */
-
/* Mach exceptions. Assumes that the values for EXC_ are positive! */
#if defined (EXC_BAD_ACCESS) && defined (_NSIG)
case TARGET_EXC_BAD_ACCESS:
if (oursig >= TARGET_SIGNAL_REALTIME_33
&& oursig <= TARGET_SIGNAL_REALTIME_63)
{
+ /* This block of signals is continuous, and
+ TARGET_SIGNAL_REALTIME_33 is 33 by definition. */
int retsig =
- (int) oursig - (int) TARGET_SIGNAL_REALTIME_33 + REALTIME_LO;
- if (retsig < REALTIME_HI)
+ (int) oursig - (int) TARGET_SIGNAL_REALTIME_33 + 33;
+ if (retsig >= REALTIME_LO && retsig < REALTIME_HI)
return retsig;
}
+#if (REALTIME_LO < 33)
+ else if (oursig == TARGET_SIGNAL_REALTIME_32)
+ {
+ /* TARGET_SIGNAL_REALTIME_32 isn't contiguous with
+ TARGET_SIGNAL_REALTIME_33. It is 32 by definition. */
+ return 32;
+ }
+#endif
#endif
*oursig_ok = 0;
return 0;
}
\f
/* Returns zero to leave the inferior alone, one to interrupt it. */
-int (*target_activity_function) PARAMS ((void));
+int (*target_activity_function) (void);
int target_activity_fd;
\f
/* Convert a normal process ID to a string. Returns the string in a static
do_monitor_command (char *cmd,
int from_tty)
{
- if ((current_target.to_rcmd == (void*) tcomplain)
+ if ((current_target.to_rcmd
+ == (void (*) (char *, struct ui_file *)) tcomplain)
|| (current_target.to_rcmd == debug_to_rcmd
- && (debug_target.to_rcmd == (void*) tcomplain)))
+ && (debug_target.to_rcmd
+ == (void (*) (char *, struct ui_file *)) tcomplain)))
{
error ("\"monitor\" command not supported by this target.\n");
}
add_info ("files", target_info, targ_desc);
add_show_from_set (
- add_set_cmd ("targetdebug", class_maintenance, var_zinteger,
+ add_set_cmd ("target", class_maintenance, var_zinteger,
(char *) &targetdebug,
"Set target debugging.\n\
-When non-zero, target debugging is enabled.", &setlist),
- &showlist);
+When non-zero, target debugging is enabled.", &setdebuglist),
+ &showdebuglist);
add_com ("monitor", class_obscure, do_monitor_command,