/* Memory-access and commands for remote NINDY process, for GDB.
- Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
Contributed by Intel Corporation. Modified from remote.c by Chris Benenati.
GDB is distributed in the hope that it will be useful, but WITHOUT ANY
#include "frame.h"
#include "inferior.h"
+#include "symfile.h"
#include "target.h"
#include "gdbcore.h"
#include "command.h"
extern char *getenv();
extern char *mktemp();
-extern char *coffstrip();
extern void generic_mourn_inferior ();
extern struct target_ops nindy_ops;
nindy_initial_brk? " with initial break": "");
}
\f
-/******************************************************************************
- * remote_load:
- * Download an object file to the remote system by invoking the "comm960"
- * utility. We look for "comm960" in $G960BIN, $G960BASE/bin, and
- * DEFAULT_BASE/bin/HOST/bin where
- * DEFAULT_BASE is defined in env.h, and
- * HOST must be defined on the compiler invocation line.
- ******************************************************************************/
-
-static void
-nindy_load( filename, from_tty )
- char *filename;
- int from_tty;
-{
- asection *s;
- /* Can't do unix style forking on a VMS system, so we'll use bfd to do
- all the work for us
- */
-
- bfd *file = bfd_openr(filename,0);
- if (!file)
- {
- perror_with_name(filename);
- return;
- }
-
- if (!bfd_check_format(file, bfd_object))
- {
- error("can't prove it's an object file\n");
- return;
- }
-
- for ( s = file->sections; s; s=s->next)
- {
- if (s->flags & SEC_LOAD)
- {
- char *buffer = xmalloc(s->_raw_size);
- bfd_get_section_contents(file, s, buffer, 0, s->_raw_size);
- printf("Loading section %s, size %x vma %x\n",
- s->name,
- s->_raw_size,
- s->vma);
- ninMemPut(s->vma, buffer, s->_raw_size);
- free(buffer);
- }
- }
- bfd_close(file);
-}
-
-/* Return the number of characters in the buffer before the first DLE character.
- */
+/* Return the number of characters in the buffer before
+ the first DLE character. */
static
int
dcache_flush();
if ( regs_changed ){
- nindy_store_registers ();
+ nindy_store_registers (-1);
regs_changed = 0;
}
have_regs = 0;
immediate_quit--;
} else {
/* Get out of loop */
- supply_register (IP_REGNUM, &ip_value);
- supply_register (FP_REGNUM, &fp_value);
- supply_register (SP_REGNUM, &sp_value);
+ supply_register (IP_REGNUM,
+ (char *)&ip_value);
+ supply_register (FP_REGNUM,
+ (char *)&fp_value);
+ supply_register (SP_REGNUM,
+ (char *)&sp_value);
break;
}
}
bcopy (®isters[REGISTER_BYTE (PCW_REGNUM)], nindy_regs.pcw_acw, 2*4);
bcopy (®isters[REGISTER_BYTE (IP_REGNUM)], nindy_regs.ip, 1*4);
bcopy (®isters[REGISTER_BYTE (TCW_REGNUM)], nindy_regs.tcw, 1*4);
- /* Float regs. Only works on IEEE_FLOAT hosts. */
+ /* Float regs. Only works on IEEE_FLOAT hosts. FIXME! */
for (regnum = FP0_REGNUM; regnum < FP0_REGNUM + 4; regnum++) {
ieee_extended_to_double (&ext_format_i960,
®isters[REGISTER_BYTE (regnum)], &dub);
/* FIXME-someday, the arguments to unpack_double are backward.
It expects a target double and returns a host; we pass the opposite.
This mostly works but not quite. */
- dub = unpack_double (builtin_type_double, &dub, &inv);
+ dub = unpack_double (builtin_type_double, (char *)&dub, &inv);
/* dub now in target byte order */
bcopy ((char *)&dub, &nindy_regs.fp_as_double[8 * (regnum - FP0_REGNUM)],
8);
nindy_mourn_inferior ()
{
remove_breakpoints ();
+ unpush_target (&nindy_ops);
generic_mourn_inferior (); /* Do all the proper things now */
}
\f
of this with a RETURN. This is useful when e.g. simply examining
an i960 object file on the host system. */
+void
nindy_before_main_loop ()
{
char ttyname[100];
;
}
*p2= '\0';
- if ( !strcmp("quit",p) ){
+ if ( STREQ("quit",p) ){
exit(1);
}
and whether to send a break on startup, are controlled by options\n\
specified when you started GDB.",
nindy_open, nindy_close,
- 0, nindy_detach, nindy_resume, nindy_wait,
+ 0,
+ nindy_detach,
+ nindy_resume,
+ nindy_wait,
nindy_fetch_registers, nindy_store_registers,
nindy_prepare_to_store,
nindy_xfer_inferior_memory, nindy_files_info,
0, 0, /* insert_breakpoint, remove_breakpoint, */
0, 0, 0, 0, 0, /* Terminal crud */
nindy_kill,
- nindy_load,
+ generic_load,
0, /* lookup_symbol */
nindy_create_inferior,
nindy_mourn_inferior,