* Makefile.in (INTERNAL_CFLAGS): Add ENABLE_CFLAGS.

* fork-child.c (fork_inferior):  Add call to
	TARGET_CREATE_INFERIOR_HOOK to allow target specific code to get
	control just before the new process executes it's first instruction.
	* remote-mips.c (mips_initialize):  Cleanup a bit.  Don't try to
	receive a packet at first.  This speeds up initialization a lot.
	Use TARGET_MONITOR_PROMPT instead of "<IDT>".
	(common_breakpoint):  Use rresponse instead of rerrflg to inspect
	error code.
	* symfile.c (syms_from_objfile reread_symbols):  Call
	TARGET_SYMFILE_POSTREAD to allow target specific code to get
	control after reading new symbols.
	* target.h:  New macros TARGET_SYMFILE_POSTREAD, and
	TARGET_CREATE_INFERIOR_HOOK.  See above for descriptions.
	* config/mips/{irix5.mh nm-irix5.h}:  Delete nm-irix5.h.  Make
	NAT_FILE point directly at ../nm-sysv4.h.
	* config/mips/{mipsm3.mh nm-m3.h}:  Delete nm-m3.h.  Make
	NAT_FILE point directly at ../nm-m3.h.
	* config/mips/{mipsv4.mh nm-sysv4.h}:  Delete nm-sysv4.h.  Make
	NAT_FILE point directly at ../nm-sysv4.h.
	* config/mips/nm-mips.h:  Improve comment at top of file.
	* config/mips/tm-mips.h (TARGET_MONITOR_PROMPT):  Change
	definition into a proper string.
start-sanitize-gm
	* configure configure.in:  Add support for --enable-gm.
	(mips*-*-magic*):  Change target from magic to idt.
	* eval.c expprint.c expression.h parse.c remote-mips.c utils.c:
	Change GENERAL_MAGIC_HACKS to GENERAL_MAGIC.
	* magic.c magic.h:  Update files from GM.
	* config/mips/magic.mt:  Delete.  No longer necessary now that we
	use --enable mechanism.
	* config/mips/tm-idt.h:  Add GM stuff needed for remote GM box.
	* config/mips/tm-irix5.h:  Add GM stuff needed for native Irix box.
	* config/mips/tm-magic.h:  Move up to config/tm-magic.h.  Move all
	platform specific stuff into tm-irix.h and tm-idt.h.  Add defs for
	TARGET_SYMFILE_POSTREAD and TARGET_CREATE_INFERIOR_HOOK.
end-sanitize-gm
This commit is contained in:
Stu Grossman
1995-11-04 19:02:42 +00:00
parent 536a7a1618
commit 188c635fbb
22 changed files with 1634 additions and 553 deletions

View File

@@ -1016,14 +1016,15 @@ mips_initialize_cleanups (arg)
static void
mips_initialize ()
{
char cr, cc;
char buff[DATA_MAXLEN + 1];
int err;
struct cleanup *old_cleanups = make_cleanup (mips_initialize_cleanups, NULL);
int j;
/* What is this code doing here? I don't see any way it can happen, and
it might mean mips_initializing didn't get cleared properly.
So I'll make it a warning. */
if (mips_initializing)
{
warning ("internal error: mips_initialize called twice");
@@ -1036,50 +1037,50 @@ mips_initialize ()
mips_send_seq = 0;
mips_receive_seq = 0;
if (mips_receive_packet (buff, 0, 3) < 0)
/* At this point, the packit protocol isn't responding. We'll try getting
into the monitor, and restarting the protocol. */
/* Force the system into the IDT monitor. After this we *should* be at the
<IDT> prompt. */
for (j = 1; j <= 4; j++)
{
char cc;
int i, j;
char srec[10];
/* We did not receive the packet we expected; try resetting the
board and trying again. */
/* Force the system into the IDT monitor. After this we *should* be at
the <IDT> prompt. */
for (j = 1; j <= 4; j++)
switch (j)
{
switch (j)
{
case 1: /* First, try sending a break */
SERIAL_SEND_BREAK (mips_desc);
break;
case 2: /* Then, try a ^C */
SERIAL_WRITE (mips_desc, "\003", 1); /* Send a ^C to wake up the monitor */
break;
case 3: /* Then, try escaping from download */
/* We are possibly in binary download mode, having aborted in the middle
of an S-record. ^C won't work because of binary mode. The only
reliable way out is to send enough termination packets (8 bytes) to
fill up and then overflow the largest size S-record (255 bytes in this
case). This amounts to 256/8 + 1 packets. */
case 1: /* First, try sending a break */
SERIAL_SEND_BREAK (mips_desc);
break;
case 2: /* Then, try a ^C */
SERIAL_WRITE (mips_desc, "\003", 1);
break;
case 3: /* Then, try escaping from download */
{
int i;
char srec[10];
mips_make_srec (srec, '7', 0, NULL, 0);
/* We are possibly in binary download mode, having aborted in the
middle of an S-record. ^C won't work because of binary mode.
The only reliable way out is to send enough termination packets
(8 bytes) to fill up and then overflow the largest size S-record
(255 bytes in this case). This amounts to 256/8 + 1 packets.
*/
for (i = 1; i <= 33; i++)
{
SERIAL_WRITE (mips_desc, srec, 8);
mips_make_srec (srec, '7', 0, NULL, 0);
if (SERIAL_READCHAR (mips_desc, 0) >= 0)
break; /* Break immediatly if we get something from
for (i = 1; i <= 33; i++)
{
SERIAL_WRITE (mips_desc, srec, 8);
if (SERIAL_READCHAR (mips_desc, 0) >= 0)
break; /* Break immediatly if we get something from
the board. */
}
break;
case 4:
mips_error ("Failed to initialize.");
}
if (mips_expect ("\015\012<IDT>"))
}
break;
case 4:
mips_error ("Failed to initialize.");
}
if (mips_expect (TARGET_MONITOR_PROMPT))
break;
}
@@ -1101,6 +1102,7 @@ mips_initialize ()
/* If this doesn't call error, we have connected; we don't care if
the request itself succeeds or fails. */
mips_request ('r', (unsigned int) 0, (unsigned int) 0, &err,
mips_receive_wait, NULL);
set_current_frame (create_new_frame (read_fp (), read_pc ()));
@@ -1219,12 +1221,12 @@ mips_resume (pid, step, siggnal)
{
/* start-sanitize-gm */
#ifndef GENERAL_MAGIC_HACKS
#ifndef GENERAL_MAGIC
if (siggnal != TARGET_SIGNAL_0)
warning
("Can't send signals to a remote system. Try `handle %s ignore'.",
target_signal_to_name (siggnal));
#endif /* GENERAL_MAGIC_HACKS */
#endif /* GENERAL_MAGIC */
/* end-sanitize-gm */
mips_request (step ? 's' : 'c',
@@ -1677,14 +1679,14 @@ Can't pass arguments to remote MIPS board; arguments ignored.");
/* FIXME: Should we set inferior_pid here? */
/* start-sanitize-gm */
#ifdef GENERAL_MAGIC_HACKS
#ifdef GENERAL_MAGIC
magic_create_inferior_hook ();
proceed (entry_pt, TARGET_SIGNAL_PWR, 0);
#else
/* end-sanitize-gm */
proceed (entry_pt, TARGET_SIGNAL_DEFAULT, 0);
/* start-sanitize-gm */
#endif
#endif /* GENERAL_MAGIC */
/* end-sanitize-gm */
}
@@ -1863,7 +1865,7 @@ common_breakpoint (cmd, addr, mask, flags)
if (rerrflg != 0)
{
if (rerrflg != EINVAL)
if (rresponse != EINVAL)
fprintf_unfiltered (stderr, "common_breakpoint (0x%x): Got error: 0x%x\n",
addr, rresponse);
return 1;