* remote-rdp.c (rdp_init): Take out variable baud rate stuff.
(remote_rdp_detatch): Delete. * breakpoint.c (ctype.h): Don't include twice.
This commit is contained in:
parent
0b0642d6eb
commit
b890317e1b
2 changed files with 124 additions and 113 deletions
|
@ -1,3 +1,19 @@
|
|||
Fri Sep 29 02:10:05 1995 steve chamberlain <sac@slash.cygnus.com>
|
||||
|
||||
* remote-rdp.c (rdp_init): Take out variable baud rate stuff.
|
||||
(remote_rdp_detatch): Delete.
|
||||
* breakpoint.c (ctype.h): Don't include twice.
|
||||
|
||||
* Makefile.in (remote-rdp.o): Doesn't need remote-rdp.h
|
||||
* callback.c (os_printf_filtered): fix protos.
|
||||
* defs.h (puts_filtered, puts_unfiltered
|
||||
[v|f|]printf_[un]filtered): Make format arg const.
|
||||
* remote-rdp.c (rdp_init): Attept to sync at different
|
||||
baudrates.
|
||||
* utils.c (puts_filtered, puts_unfiltered
|
||||
[v|f|]printf_[un]filtered): Define prototypes with
|
||||
const in the right place.
|
||||
|
||||
Thu Sep 28 17:43:39 1995 Per Bothner <bothner@kalessin.cygnus.com>
|
||||
|
||||
* defs.h (enum language): Add language_scm.
|
||||
|
@ -46,7 +62,7 @@ Thu Sep 28 14:32:11 1995 steve chamberlain <sac@slash.cygnus.com>
|
|||
(INST_xx): New
|
||||
(FRAME_FIND_SAVED_REGS): Pass the right argument.
|
||||
(arm_get_next_pc): Declare.
|
||||
* mswin/prebuilt/*/bfdtarget.h (SELECT_ARCHITECTURES): Need leading &.
|
||||
|
||||
|
||||
Wed Sep 27 10:14:36 1995 Per Bothner <bothner@kalessin.cygnus.com>
|
||||
|
||||
|
|
127
gdb/remote-rdp.c
127
gdb/remote-rdp.c
|
@ -46,17 +46,22 @@
|
|||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
#include "symfile.h"
|
||||
#include "remote-utils.h"
|
||||
#include "gdb_string.h"
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
|
||||
extern struct target_ops remote_rdp_ops;
|
||||
static serial_t io;
|
||||
static host_callback *callback = &default_callback;
|
||||
|
||||
struct
|
||||
{
|
||||
{
|
||||
int step_info;
|
||||
int break_info;
|
||||
int model_info;
|
||||
|
@ -65,7 +70,8 @@ struct
|
|||
char command_line[10];
|
||||
int rdi_level;
|
||||
int rdi_stopped_status;
|
||||
} ds;
|
||||
}
|
||||
ds;
|
||||
|
||||
|
||||
|
||||
|
@ -167,7 +173,7 @@ get_byte ()
|
|||
int c = SERIAL_READCHAR (io, timeout);
|
||||
|
||||
if (remote_debug)
|
||||
printf ("[%02x]", c);
|
||||
printf ("[%02x]\n", c);
|
||||
|
||||
if (c == SERIAL_TIMEOUT)
|
||||
{
|
||||
|
@ -201,13 +207,13 @@ put_byte (val)
|
|||
char val;
|
||||
{
|
||||
if (remote_debug)
|
||||
printf("(%02x)", val);
|
||||
printf ("(%02x)\n", val);
|
||||
SERIAL_WRITE (io, &val, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
put_word (val)
|
||||
long val;
|
||||
int val;
|
||||
{
|
||||
/* We always send in little endian */
|
||||
unsigned char b[4];
|
||||
|
@ -217,7 +223,7 @@ put_word (val)
|
|||
b[3] = val >> 24;
|
||||
|
||||
if (remote_debug)
|
||||
printf("(%04x)", val);
|
||||
printf ("(%04x)", val);
|
||||
|
||||
SERIAL_WRITE (io, b, 4);
|
||||
}
|
||||
|
@ -226,64 +232,68 @@ put_word (val)
|
|||
|
||||
/* Stuff for talking to the RDP layer. */
|
||||
|
||||
/* This is a bit more fancy that need be so that it syncs even in nasty cases. */
|
||||
/* This is a bit more fancy that need be so that it syncs even in nasty cases.
|
||||
|
||||
I'be been unable to make it reliably sync up with the change
|
||||
baudrate open command. It likes to sit and say it's been reset,
|
||||
with no more action. So I took all that code out. I'd rather sync
|
||||
reliably at 9600 than wait forever for a possible 19200 connection.
|
||||
|
||||
*/
|
||||
static void
|
||||
rdp_init (int cold)
|
||||
rdp_init (cold, tty)
|
||||
int cold;
|
||||
int tty;
|
||||
{
|
||||
int oloop;
|
||||
int sync = 0;
|
||||
int type = cold ? RDP_OPEN_TYPE_COLD : RDP_OPEN_TYPE_WARM;
|
||||
int try;
|
||||
int rcount = 0;
|
||||
int bi;
|
||||
int baudtry = 9600;
|
||||
|
||||
for (try = 0; !sync && try < 10 ; try++)
|
||||
time_t now = time (0);
|
||||
time_t stop_time = now + 10; /* Try and sync for 10 seconds, then give up */
|
||||
|
||||
|
||||
while (time (0) < stop_time && !sync)
|
||||
{
|
||||
int restype;
|
||||
QUIT;
|
||||
|
||||
SERIAL_FLUSH_INPUT (io);
|
||||
SERIAL_FLUSH_OUTPUT (io);
|
||||
|
||||
if (tty)
|
||||
printf_unfiltered ("Trying to connect at %d baud.\n", baudtry);
|
||||
put_byte (RDP_OPEN);
|
||||
|
||||
if (baud_rate == 19200)
|
||||
{
|
||||
put_byte (type | RDP_OPEN_TYPE_RETURN_SEX | RDP_OPEN_TYPE_BAUDRATE);
|
||||
put_word (0);
|
||||
put_word (RDP_OPEN_BAUDRATE_19200);
|
||||
}
|
||||
else
|
||||
{
|
||||
put_byte (type | RDP_OPEN_TYPE_RETURN_SEX);
|
||||
put_word (0);
|
||||
}
|
||||
|
||||
restype = SERIAL_READCHAR (io, 1);
|
||||
|
||||
while (!sync && (restype = SERIAL_READCHAR (io, 1)) > 0)
|
||||
{
|
||||
if (remote_debug)
|
||||
printf_unfiltered ("[%02x]\n", restype);
|
||||
|
||||
if (restype == RDP_RESET)
|
||||
{
|
||||
put_byte (RDP_RESET);
|
||||
while ((restype = SERIAL_READCHAR (io, 1)) == RDP_RESET)
|
||||
;
|
||||
while ((restype = SERIAL_READCHAR (io, 1)) > 0)
|
||||
{
|
||||
printf_unfiltered ("%c", isgraph(restype) ? restype : ' ');
|
||||
}
|
||||
while ((restype = SERIAL_READCHAR (io, 1)) > 0)
|
||||
;
|
||||
printf_unfiltered("\n");
|
||||
error("board reset, try again.\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (restype)
|
||||
{
|
||||
case SERIAL_TIMEOUT:
|
||||
break;
|
||||
case RDP_RESET:
|
||||
/* Ignore a load of these */
|
||||
while ((restype = SERIAL_READCHAR (io, 1)) == RDP_RESET)
|
||||
;
|
||||
while ((restype = SERIAL_READCHAR (io, 1)) > 0)
|
||||
{
|
||||
printf_unfiltered ("%c", isgraph (restype) ? restype : ' ');
|
||||
}
|
||||
while ((restype = SERIAL_READCHAR (io, 1)) > 0)
|
||||
;
|
||||
if (tty)
|
||||
{
|
||||
printf_unfiltered ("\nThe board has sent notification that it was reset.\n");
|
||||
printf_unfiltered ("Waiting for it to settle down...\n");
|
||||
}
|
||||
sleep (3);
|
||||
if (tty)
|
||||
printf_unfiltered ("\nTrying again.\n");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -296,11 +306,11 @@ rdp_init (int cold)
|
|||
break;
|
||||
case RDP_RES_VALUE_LITTLE_ENDIAN:
|
||||
target_byte_order = LITTLE_ENDIAN;
|
||||
sync =1 ;
|
||||
sync = 1;
|
||||
break;
|
||||
case RDP_RES_VALUE_BIG_ENDIAN:
|
||||
target_byte_order = BIG_ENDIAN;
|
||||
sync =1 ;
|
||||
sync = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -308,14 +318,9 @@ rdp_init (int cold)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sync)
|
||||
{
|
||||
SERIAL_FLUSH_INPUT (io);
|
||||
SERIAL_SETBAUDRATE (io, baud_rate);
|
||||
SERIAL_FLUSH_INPUT (io);
|
||||
}
|
||||
else
|
||||
|
||||
if (!sync)
|
||||
{
|
||||
error ("Couldn't reset the board, try pressing the reset button");
|
||||
}
|
||||
|
@ -552,8 +557,8 @@ rdp_store_one_fpu_register (mask, buf)
|
|||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Convert between GDB requests and the RDP layer. */
|
||||
|
||||
static void
|
||||
|
@ -871,7 +876,7 @@ rdp_execute_finish ()
|
|||
res = SERIAL_READCHAR (io, 1);
|
||||
while (res == SERIAL_TIMEOUT)
|
||||
{
|
||||
QUIT ;
|
||||
QUIT;
|
||||
printf_filtered ("Waiting for target..\n");
|
||||
res = SERIAL_READCHAR (io, 1);
|
||||
}
|
||||
|
@ -984,7 +989,6 @@ remote_rdp_open (args, from_tty)
|
|||
if (!args)
|
||||
error_no_arg ("serial port device name");
|
||||
|
||||
if (baud_rate != 19200)
|
||||
baud_rate = 9600;
|
||||
|
||||
target_preopen (from_tty);
|
||||
|
@ -996,7 +1000,7 @@ remote_rdp_open (args, from_tty)
|
|||
|
||||
SERIAL_RAW (io);
|
||||
|
||||
rdp_init (0);
|
||||
rdp_init (1, from_tty);
|
||||
|
||||
|
||||
if (from_tty)
|
||||
|
@ -1031,15 +1035,6 @@ remote_rdp_close (quitting)
|
|||
io = 0;
|
||||
}
|
||||
|
||||
/* Terminate the open connection to the remote debugger. */
|
||||
|
||||
static void
|
||||
remote_rdp_detach (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
pop_target ();
|
||||
}
|
||||
|
||||
/* Resume execution of the target process. STEP says whether to single-step
|
||||
or to run free; SIGGNAL is the signal value (e.g. SIGINT) to be given
|
||||
|
@ -1167,8 +1162,8 @@ static struct yn breakinfo[] =
|
|||
{"watchpoints for half-word writes supported", RDP_INFO_ABOUT_BREAK_HALFWORD_WRITE},
|
||||
{"watchpoints for word writes supported", RDP_INFO_ABOUT_BREAK_WORD_WRITE},
|
||||
{"mask break/watch-points supported", RDP_INFO_ABOUT_BREAK_MASK},
|
||||
{"thread-specific breakpoints supported", RDP_INFO_ABOUT_BREAK_THREAD_BREAK},
|
||||
{"thread-specific watchpoints supported", RDP_INFO_ABOUT_BREAK_THREAD_WATCH},
|
||||
{"thread-specific breakpoints supported", RDP_INFO_ABOUT_BREAK_THREAD_BREAK},
|
||||
{"thread-specific watchpoints supported", RDP_INFO_ABOUT_BREAK_THREAD_WATCH},
|
||||
{"conditional breakpoints supported", RDP_INFO_ABOUT_BREAK_COND},
|
||||
{0}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue