Modified Files:
ChangeLog remote-os9k.c os9kread.c stabsread.c * remote-os9k.c (rombug_fetch_registers): set trace mode correctly. * remote-os9k.c (rombug_read_inferior_memory): cache data in buffer. * os9kread,c (read_os9k_psymtab): process file symbol to truncate extra info. * os9kread.c (os9k_read_ofile_symtab): proper casting of args passed to process_one_symbol. * stabsread.c (read_type): process os9k functio prototype.
This commit is contained in:
parent
988238d380
commit
d5336fc5a4
|
@ -1,3 +1,15 @@
|
|||
Fri Apr 22 14:25:36 1994 Kung Hsu (kung@mexican.cygnus.com)
|
||||
|
||||
* remote-os9k.c (rombug_fetch_registers): set trace mode
|
||||
correctly.
|
||||
* remote-os9k.c (rombug_read_inferior_memory): cache data in
|
||||
buffer.
|
||||
* os9kread,c (read_os9k_psymtab): process file symbol to truncate
|
||||
extra info.
|
||||
* os9kread.c (os9k_read_ofile_symtab): proper casting of args
|
||||
passed to process_one_symbol.
|
||||
* stabsread.c (read_type): process os9k functio prototype.
|
||||
|
||||
Fri Apr 22 11:27:39 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* solib.c (symbol_add_stub): If so->textsection is NULL, don't
|
||||
|
|
|
@ -719,34 +719,43 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
|
|||
{
|
||||
unsigned long valu;
|
||||
enum language tmp_language;
|
||||
char *str, *p;
|
||||
int n;
|
||||
|
||||
valu = CUR_SYMBOL_VALUE;
|
||||
if (valu)
|
||||
valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
|
||||
past_first_source_file = 1;
|
||||
|
||||
p = strchr(namestring, ':');
|
||||
if (p) n = p-namestring;
|
||||
else n = strlen(namestring);
|
||||
str = alloca(n+1);
|
||||
strncpy(str, namestring, n);
|
||||
str[n] = '\0';
|
||||
|
||||
if (psymfile_depth == 0) {
|
||||
if (!pst)
|
||||
pst = os9k_start_psymtab (objfile, section_offsets,
|
||||
namestring, valu,
|
||||
str, valu,
|
||||
cursymoffset,
|
||||
symnum-1,
|
||||
objfile -> global_psymbols.next,
|
||||
objfile -> static_psymbols.next);
|
||||
} else { /* this is a include file */
|
||||
tmp_language = deduce_language_from_filename (namestring);
|
||||
tmp_language = deduce_language_from_filename (str);
|
||||
if (tmp_language != language_unknown
|
||||
&& (tmp_language != language_c
|
||||
|| psymtab_language != language_cplus))
|
||||
psymtab_language = tmp_language;
|
||||
|
||||
/*
|
||||
if (pst && STREQ (namestring, pst->filename))
|
||||
if (pst && STREQ (str, pst->filename))
|
||||
continue;
|
||||
{
|
||||
register int i;
|
||||
for (i = 0; i < includes_used; i++)
|
||||
if (STREQ (namestring, psymtab_include_list[i]))
|
||||
if (STREQ (str, psymtab_include_list[i]))
|
||||
{
|
||||
i = -1;
|
||||
break;
|
||||
|
@ -756,7 +765,7 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
|
|||
}
|
||||
*/
|
||||
|
||||
psymtab_include_list[includes_used++] = namestring;
|
||||
psymtab_include_list[includes_used++] = str;
|
||||
if (includes_used >= includes_allocated)
|
||||
{
|
||||
char **orig = psymtab_include_list;
|
||||
|
@ -1397,8 +1406,8 @@ os9k_read_ofile_symtab (pst)
|
|||
bufp = symbuf;
|
||||
type = bufp->n_type;
|
||||
|
||||
os9k_process_one_symbol (type, bufp->n_desc, bufp->n_value,
|
||||
bufp->n_strx, section_offsets, objfile);
|
||||
os9k_process_one_symbol ((int)type, (int)bufp->n_desc,
|
||||
(CORE_ADDR)bufp->n_value, bufp->n_strx, section_offsets, objfile);
|
||||
|
||||
/* We skip checking for a new .o or -l file; that should never
|
||||
happen in this routine. */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Remote debugging interface for boot monitors, for GDB.
|
||||
/* Remote debugging interface for boot monitors, for GDB.
|
||||
Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
@ -82,11 +82,15 @@ static int monitor_log = 0;
|
|||
static int tty_xon = 0;
|
||||
static int tty_xoff = 0;
|
||||
|
||||
static int timeout = 5;
|
||||
static int timeout = 10;
|
||||
static int is_trace_mode = 0;
|
||||
/* Descriptor for I/O to remote machine. Initialize it to NULL*/
|
||||
static serial_t monitor_desc = NULL;
|
||||
|
||||
static CORE_ADDR bufaddr = 0;
|
||||
static int buflen = 0;
|
||||
static char readbuf[16];
|
||||
|
||||
/* Send data to monitor. Works just like printf. */
|
||||
static void
|
||||
printf_monitor(va_alist)
|
||||
|
@ -204,7 +208,6 @@ expect_prompt(discard)
|
|||
|
||||
if (is_trace_mode) {
|
||||
expect("trace", discard);
|
||||
is_trace_mode = 0;
|
||||
} else {
|
||||
expect (PROMPT, discard);
|
||||
}
|
||||
|
@ -289,9 +292,6 @@ rombug_create_inferior (execfile, args, env)
|
|||
{
|
||||
int entry_pt;
|
||||
|
||||
/* Nonzero value indicates that a process really is running. */
|
||||
inferior_pid = 9000;
|
||||
|
||||
if (args && *args)
|
||||
error("Can't pass arguments to remote ROMBUG process");
|
||||
|
||||
|
@ -368,8 +368,9 @@ rombug_open(args, from_tty)
|
|||
dev_name);
|
||||
|
||||
attach_flag = 1;
|
||||
inferior_pid = 9000;
|
||||
rombug_fetch_registers();
|
||||
bufaddr = 0;
|
||||
buflen = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -432,7 +433,6 @@ rombug_detach (from_tty)
|
|||
if (attach_flag) {
|
||||
printf_monitor (GO_CMD);
|
||||
attach_flag = 0;
|
||||
inferior_pid = 0;
|
||||
}
|
||||
pop_target(); /* calls rombug_close to do the real work */
|
||||
if (from_tty)
|
||||
|
@ -454,15 +454,19 @@ rombug_resume (pid, step, sig)
|
|||
{
|
||||
is_trace_mode = 1;
|
||||
printf_monitor (STEP_CMD);
|
||||
/* wait for the echo. */
|
||||
/* wait for the echo. **
|
||||
expect (STEP_CMD, 1);
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
printf_monitor (GO_CMD);
|
||||
/* swallow the echo. */
|
||||
/* swallow the echo. **
|
||||
expect (GO_CMD, 1);
|
||||
*/
|
||||
}
|
||||
bufaddr = 0;
|
||||
buflen= 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -493,6 +497,8 @@ rombug_wait (pid, status)
|
|||
status->value.sig = TARGET_SIGNAL_TRAP;
|
||||
timeout = old_timeout;
|
||||
rombug_fetch_registers();
|
||||
bufaddr = 0;
|
||||
buflen = 0;
|
||||
pc = read_register(PC_REGNUM);
|
||||
addr = read_register(DATABASE_REG);
|
||||
obj_sec = find_pc_section (pc);
|
||||
|
@ -511,6 +517,7 @@ rombug_wait (pid, status)
|
|||
|
||||
objfile_relocate(symfile_objfile, offs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -598,6 +605,7 @@ rombug_fetch_registers ()
|
|||
supply_register(regno, (char *) &val);
|
||||
}
|
||||
}
|
||||
is_trace_mode = 0;
|
||||
expect_prompt (1);
|
||||
}
|
||||
|
||||
|
@ -705,6 +713,7 @@ char *name;
|
|||
if (name == 0) return;
|
||||
printf_monitor (SET_REG, name, read_register (regno));
|
||||
|
||||
is_trace_mode = 0;
|
||||
expect_prompt (1);
|
||||
}
|
||||
}
|
||||
|
@ -753,6 +762,7 @@ rombug_write_inferior_memory (memaddr, myaddr, len)
|
|||
expect (CMD_DELIM, 1);
|
||||
if (CMD_END)
|
||||
printf_monitor (CMD_END);
|
||||
is_trace_mode = 0;
|
||||
expect_prompt (1);
|
||||
|
||||
return len;
|
||||
|
@ -767,7 +777,6 @@ rombug_read_inferior_memory(memaddr, myaddr, len)
|
|||
int len;
|
||||
{
|
||||
int i, j;
|
||||
char buf[20];
|
||||
|
||||
/* Number of bytes read so far. */
|
||||
int count;
|
||||
|
@ -794,6 +803,11 @@ rombug_read_inferior_memory(memaddr, myaddr, len)
|
|||
errno = EIO;
|
||||
return 0;
|
||||
}
|
||||
if (bufaddr <= memaddr && (memaddr+len) <= (bufaddr+buflen))
|
||||
{
|
||||
memcpy(myaddr, &readbuf[memaddr-bufaddr], len);
|
||||
return len;
|
||||
}
|
||||
|
||||
startaddr = memaddr;
|
||||
count = 0;
|
||||
|
@ -807,19 +821,22 @@ rombug_read_inferior_memory(memaddr, myaddr, len)
|
|||
if (sr_get_debug())
|
||||
printf ("\nDisplay %d bytes at %x\n", len_this_pass, startaddr);
|
||||
|
||||
printf_monitor (MEM_DIS_CMD, startaddr, 16);
|
||||
printf_monitor (MEM_DIS_CMD, startaddr, 8);
|
||||
expect ("- ", 1);
|
||||
for (i = 0; i < len_this_pass; i++)
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
get_hex_byte (&myaddr[count++]);
|
||||
if (sr_get_debug())
|
||||
printf ("\nRead a 0x%x from 0x%x\n", myaddr[count-1], startaddr);
|
||||
startaddr += 1;
|
||||
get_hex_byte (&readbuf[i]);
|
||||
}
|
||||
bufaddr = startaddr;
|
||||
buflen = 16;
|
||||
memcpy(&myaddr[count], readbuf, len_this_pass);
|
||||
count += len_this_pass;
|
||||
startaddr += len_this_pass;
|
||||
expect(CMD_DELIM, 1);
|
||||
}
|
||||
if (CMD_END)
|
||||
printf_monitor (CMD_END);
|
||||
is_trace_mode = 0;
|
||||
expect_prompt (1);
|
||||
|
||||
return len;
|
||||
|
@ -883,6 +900,7 @@ rombug_insert_breakpoint (addr, shadow)
|
|||
printf ("Breakpoint at %x\n", addr);
|
||||
rombug_read_inferior_memory(addr, shadow, memory_breakpoint_size);
|
||||
printf_monitor(SET_BREAK_CMD, addr);
|
||||
is_trace_mode = 0;
|
||||
expect_prompt(1);
|
||||
return 0;
|
||||
}
|
||||
|
@ -909,6 +927,7 @@ rombug_remove_breakpoint (addr, shadow)
|
|||
{
|
||||
breakaddr[i] = 0;
|
||||
printf_monitor(CLR_BREAK_CMD, addr);
|
||||
is_trace_mode = 0;
|
||||
expect_prompt(1);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1545,13 +1545,17 @@ read_type (pp, objfile)
|
|||
case 'f': /* Function returning another type */
|
||||
if (os9k_stabs && **pp == '(')
|
||||
{
|
||||
/* Function prototype; skip it.
|
||||
/* Function prototype; parse it.
|
||||
We must conditionalize this on os9k_stabs because otherwise
|
||||
it could be confused with a Sun-style (1,3) typenumber
|
||||
(I think). */
|
||||
while (**pp != ')')
|
||||
++*pp;
|
||||
struct type *t;
|
||||
++*pp;
|
||||
while (**pp != ')')
|
||||
{
|
||||
t = os9k_read_type(pp, objfile);
|
||||
if (**pp == ',') ++*pp;
|
||||
}
|
||||
}
|
||||
type1 = read_type (pp, objfile);
|
||||
type = make_function_type (type1, dbx_lookup_type (typenums));
|
||||
|
|
Loading…
Reference in New Issue