import gdb-1999-07-12 snapshot

This commit is contained in:
Jason Molenda 1999-07-12 11:15:22 +00:00
parent edac9bffc1
commit 43e526b9b4
29 changed files with 423 additions and 167 deletions

View file

@ -1,3 +1,55 @@
Mon Jul 12 11:15:09 1999 Andrew Cagney <cagney@b1.cygnus.com>
* config/mips/tm-mips.h (REGISTER_CONVERT_TO_RAW,
REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERTIBLE): Define.
(REGISTER_RAW_SIZE): Re-define as mips_register_convert_to_raw.
* mips-tdep.c (mips_register_convert_to_raw,
mips_register_convert_to_virtual, ): New functions.
(mips_register_raw_size, mips_register_convertible): New
functions. Handle bug introduced by ``Wed Apr 1 23:13:23 1998
Andrew Cagney <cagney@b1.cygnus.com>'' where remote mips64 target
transfers SR as 64 bits yet GDB expected only 32 bits.
(mips64_transfers_32bit_regs): New static variable.
(_initialize_mips_tdep): Add obscure command ``set
remote-mips64-transfers-32bit-regs'' that provides backward
compatibility.
(do_gp_register_row): Extract register values from raw buffer.
* NEWS: Document protocol change.
Mon Jul 12 02:02:00 1999 Andrew Cagney <cagney@amy.cygnus.com>
* defs.h, utils.c (fputstrn_filtered, fputstrn_unfiltered,
fputstrnn_unfiltered): New functions.
(gdb_printchar): Delete.
* remote.c (print_packet): Replace gdb_printchar with
fputstrn_filtered.
(getpkt): Use fputstrn_unfiltered to dump packet received.
(putpkt_binary): Use fputstrnn_unfiltered to dump packet sent.
1999-07-09 Keith Seitz <keiths@cygnus.com>
* blockframe.c (blockvector_for_pc_sect): When looking for a block,
we want the one whose end is greater than our PC, not greater or equal.
1999-07-08 Stan Shebs <shebs@andros.cygnus.com>
* sparcl-tdep.c (init_sparclite_ops): Fix doc strings, remove
useless inits.
(sparclite_ops): Remove redundant decl.
Thu Jul 8 16:48:40 1999 Andrew Cagney <cagney@b1.cygnus.com>
* ser-pipe.c (pipe_open): Bi-directional popen found on both
NetBSD and OpenBSD.
* ser-pipe.c: New file. Implement popen() style serial interface.
* NEWS: Mention.
* Makefile.in (ALLDEPFILES): Add ser-pipe.c.
(ser-pipe.o): Add new target. Specify dependencies.
(SER_HARDWIRE): Add ser-pipe.o.
* serial.c (serial_open): Recognize a serial pipe ``|''.
1999-07-07 Stan Shebs <shebs@andros.cygnus.com>
* All C files except *-stub.c and *-share/*: Indent to GNU

View file

@ -224,7 +224,7 @@ CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE) \
ADD_FILES = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
ADD_DEPS = $(REGEX1) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
VERSION = 19990707
VERSION = 19990712
DIST=gdb
LINT=/usr/5bin/lint
@ -242,7 +242,7 @@ RUNTESTFLAGS=
# part of libiberty) a POSIX interface. But at least for now the
# host-dependent makefile fragment might need to use something else
# besides ser-unix.o
SER_HARDWIRE = ser-unix.o
SER_HARDWIRE = ser-unix.o ser-pipe.o
# The `remote' debugging target is supported for most architectures,
# but not all (e.g. 960)
@ -967,7 +967,8 @@ ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
remote-st.c remote-utils.c dcache.c \
remote-udi.c remote-vx.c remote-vx29k.c \
rs6000-nat.c rs6000-tdep.c \
ser-go32.c ser-ocd.c ser-tcp.c sh-tdep.c solib.c sparc-nat.c \
ser-go32.c ser-pipe.c ser-ocd.c ser-tcp.c \
sh-tdep.c solib.c sparc-nat.c \
sparc-tdep.c sparcl-tdep.c sun3-nat.c sun386-nat.c \
symm-tdep.c symm-nat.c \
tahoe-tdep.c ultra3-nat.c ultra3-xdep.c umax-xdep.c \
@ -1492,6 +1493,8 @@ ser-mac.o: ser-mac.c $(defs_h) serial.h signals.h
ser-ocd.o: ser-ocd.c $(defs_h) serial.h signals.h gdb_string.h
ser-pipe.o: ser-pipe.c $(defs_h) serial.h signals.h gdb_string.h
ser-tcp.o: ser-tcp.c $(defs_h) serial.h signals.h gdb_string.h
ser-unix.o: ser-unix.c $(defs_h) serial.h

View file

@ -3,6 +3,16 @@
*** Changes since GDB-4.18:
* Remote targets can connect to a sub-program
A popen(3) style serial-device has been added. This device starts a
sub-process (such as a stand-alone simulator) and then communicates
with that. The sub-program to run is specified using the syntax
``|<program> <args>'' vis:
(gdb) set remotedebug 1
(gdb) target extended-remote |mn10300-elf-sim program-args
* New targets
TI TMS320C80 tic80-*-*
@ -13,6 +23,15 @@ Altos 3068 m68*-altos-*
Convex c1-*-*, c2-*-*
Pyramid pyramid-*-*
* MIPS 64 remote protocol
A long standing bug in the mips64 remote protocol where by GDB
expected certain 32 bit registers (ex SR) to be transfered as 32
instead of 64 bits has been fixed.
The command ``set remote-mips64-transfers-32bit-regs on'' has been
added to provide backward compatibility with older versions of GDB.
*** Changes in GDB-4.18:
* New native configurations

View file

@ -656,7 +656,7 @@ blockvector_for_pc_sect (pc, section, pindex, symtab)
while (bot >= 0)
{
b = BLOCKVECTOR_BLOCK (bl, bot);
if (BLOCK_END (b) >= pc)
if (BLOCK_END (b) > pc)
{
if (pindex)
*pindex = bot;

View file

@ -1376,8 +1376,7 @@ do_setshow_command (arg, from_tty, c)
fputs_filtered ("\"", gdb_stdout);
if (*(unsigned char **) c->var)
for (p = *(unsigned char **) c->var; *p != '\0'; p++)
gdb_printchar (*p, gdb_stdout, '"');
fputstr_filtered (*(unsigned char **) c->var, '"', gdb_stdout);
fputs_filtered ("\"", gdb_stdout);
}
break;

View file

@ -236,10 +236,31 @@ extern void mips_do_registers_info PARAMS ((int, int));
#define REGISTER_BYTE(N) ((N) * MIPS_REGSIZE)
/* Number of bytes of storage in the actual machine representation
for register N. */
/* Number of bytes of storage in the actual machine representation for
register N. NOTE: This indirectly defines the register size
transfered by the GDB protocol. */
#define REGISTER_RAW_SIZE(N) REGISTER_VIRTUAL_SIZE(N)
extern int mips_register_raw_size PARAMS ((int reg_nr));
#define REGISTER_RAW_SIZE(N) (mips_register_raw_size ((N)))
/* Covert between the RAW and VIRTUAL registers.
Some MIPS (SR, FSR, FIR) have a `raw' size of MIPS_REGSIZE but are
really 32 bit registers. This is a legacy of the 64 bit MIPS GDB
protocol which transfers 64 bits for 32 bit registers. */
extern int mips_register_convertible PARAMS ((int reg_nr));
#define REGISTER_CONVERTIBLE(N) (mips_register_convertible ((N)))
void mips_register_convert_to_virtual PARAMS ((int reg_nr, struct type *virtual_type, char *raw_buf, char *virt_buf));
#define REGISTER_CONVERT_TO_VIRTUAL(N,VIRTUAL_TYPE,RAW_BUF,VIRT_BUF) \
mips_register_convert_to_virtual (N,VIRTUAL_TYPE,RAW_BUF,VIRT_BUF)
void mips_register_convert_to_raw PARAMS ((struct type *virtual_type, int reg_nr, char *virt_buf, char *raw_buf));
#define REGISTER_CONVERT_TO_RAW(VIRTUAL_TYPE,N,VIRT_BUF,RAW_BUF) \
mips_register_convert_to_raw (VIRTUAL_TYPE,N,VIRT_BUF,RAW_BUF)
/* Number of bytes of storage in the program's representation
for register N. */

View file

@ -52,7 +52,6 @@ arc-*-*) gdb_target=arc ;;
arm-*-* | thumb-*-* | strongarm-*-*)
gdb_target=arm ;;
# OBSOLETE c1-*-*) gdb_target=convex ;;
# OBSOLETE c2-*-*) gdb_target=convex ;;

View file

@ -500,7 +500,11 @@ extern void print_spaces_filtered PARAMS ((int, GDB_FILE *));
extern char *n_spaces PARAMS ((int));
extern void gdb_printchar PARAMS ((int, GDB_FILE *, int));
extern void fputstr_filtered PARAMS ((const char *str, int quotr, GDB_FILE *stream));
extern void fputstr_unfiltered PARAMS ((const char *str, int quotr, GDB_FILE *stream));
extern void fputstrn_unfiltered PARAMS ((const char *str, int n, int quotr, GDB_FILE *stream));
extern void gdb_print_address PARAMS ((void *, GDB_FILE *));

View file

@ -253,6 +253,66 @@ mips_print_extra_frame_info (fi)
fi->extra_info->proc_desc->pdr.frameoffset);
}
/* Convert between RAW and VIRTUAL registers. The RAW register size
defines the remote-gdb packet. */
static int mips64_transfers_32bit_regs_p = 0;
int
mips_register_raw_size (reg_nr)
int reg_nr;
{
if (mips64_transfers_32bit_regs_p)
return REGISTER_VIRTUAL_SIZE (reg_nr);
else
return MIPS_REGSIZE;
}
int
mips_register_convertible (reg_nr)
int reg_nr;
{
if (mips64_transfers_32bit_regs_p)
return 0;
else
return (REGISTER_RAW_SIZE (reg_nr) > REGISTER_VIRTUAL_SIZE (reg_nr));
}
void
mips_register_convert_to_virtual (n, virtual_type, raw_buf, virt_buf)
int n;
struct type *virtual_type;
char *raw_buf;
char *virt_buf;
{
if (TARGET_BYTE_ORDER == BIG_ENDIAN)
memcpy (virt_buf,
raw_buf + (REGISTER_RAW_SIZE (n) - TYPE_LENGTH (virtual_type)),
TYPE_LENGTH (virtual_type));
else
memcpy (virt_buf,
raw_buf,
TYPE_LENGTH (virtual_type));
}
void
mips_register_convert_to_raw (virtual_type, n, virt_buf, raw_buf)
struct type *virtual_type;
int n;
char *virt_buf;
char *raw_buf;
{
memset (raw_buf, 0, REGISTER_RAW_SIZE (n));
if (TARGET_BYTE_ORDER == BIG_ENDIAN)
memcpy (raw_buf + (REGISTER_RAW_SIZE (n) - TYPE_LENGTH (virtual_type)),
virt_buf,
TYPE_LENGTH (virtual_type));
else
memcpy (raw_buf,
virt_buf,
TYPE_LENGTH (virtual_type));
}
/* Should the upper word of 64-bit addresses be zeroed? */
static int mask_address_p = 1;
@ -2423,14 +2483,18 @@ do_gp_register_row (regnum)
if (read_relative_register_raw_bytes (regnum, raw_buffer))
error ("can't read register %d (%s)", regnum, REGISTER_NAME (regnum));
/* pad small registers */
for (byte = 0; byte < (MIPS_REGSIZE - REGISTER_RAW_SIZE (regnum)); byte++)
for (byte = 0; byte < (MIPS_REGSIZE - REGISTER_VIRTUAL_SIZE (regnum)); byte++)
printf_filtered (" ");
/* Now print the register value in hex, endian order. */
if (TARGET_BYTE_ORDER == BIG_ENDIAN)
for (byte = 0; byte < REGISTER_RAW_SIZE (regnum); byte++)
for (byte = REGISTER_RAW_SIZE (regnum) - REGISTER_VIRTUAL_SIZE (regnum);
byte < REGISTER_RAW_SIZE (regnum);
byte++)
printf_filtered ("%02x", (unsigned char) raw_buffer[byte]);
else
for (byte = REGISTER_RAW_SIZE (regnum) - 1; byte >= 0; byte--)
for (byte = REGISTER_VIRTUAL_SIZE (regnum) - 1;
byte >= 0;
byte--)
printf_filtered ("%02x", (unsigned char) raw_buffer[byte]);
printf_filtered (" ");
col++;
@ -3571,4 +3635,17 @@ search. The only need to set it is when debugging a stripped executable.",
Use \"on\" to enable the masking, and \"off\" to disable it.\n\
Without an argument, zeroing of upper address bits is enabled.", &setlist),
&showlist);
/* Allow the user to control the size of 32 bit registers within the
raw remote packet. */
add_show_from_set (add_set_cmd ("remote-mips64-transfers-32bit-regs",
class_obscure,
var_boolean,
(char *)&mips64_transfers_32bit_regs_p, "\
Set compatibility with MIPS targets that transfers 32 and 64 bit quantities.\n\
Use \"on\" to enable backward compatibility with older MIPS 64 GDB+target\n\
that would transfer 32 bits for some registers (e.g. SR, FSR) and\n\
64 bits for others. Use \"off\" to disable compatibility mode",
&setlist),
&showlist);
}

View file

@ -3294,8 +3294,7 @@ print_packet (buf)
char *buf;
{
puts_filtered ("\"");
while (*buf)
gdb_printchar (*buf++, gdb_stdout, '"');
fputstr_filtered (buf, '"', gdb_stdout);
puts_filtered ("\"");
}
@ -3352,7 +3351,9 @@ putpkt_binary (buf, cnt)
if (remote_debug)
{
*p = '\0';
fprintf_unfiltered (gdb_stdlog, "Sending packet: %s...", buf2);
fprintf_unfiltered (gdb_stdlog, "Sending packet: ");
fputstrn_unfiltered (buf2, p - buf2, 0, gdb_stdlog);
fprintf_unfiltered (gdb_stdlog, "...", buf2);
gdb_flush (gdb_stdlog);
}
if (SERIAL_WRITE (remote_desc, buf2, p - buf2))
@ -3618,7 +3619,11 @@ getpkt (buf, forever)
if (val == 1)
{
if (remote_debug)
fprintf_unfiltered (gdb_stdlog, "Packet received: %s\n", buf);
{
fprintf_unfiltered (gdb_stdlog, "Packet received: ");
fputstr_unfiltered (buf, 0, gdb_stdlog);
fprintf_unfiltered (gdb_stdlog, "\n");
}
SERIAL_WRITE (remote_desc, "+", 1);
return;
}

View file

@ -240,6 +240,8 @@ serial_open (name)
ops = serial_interface_lookup ("tcp");
else if (strncmp (name, "lpt", 3) == 0)
ops = serial_interface_lookup ("parallel");
else if (strncmp (name, "|", 1) == 0)
ops = serial_interface_lookup ("pipe");
else
ops = serial_interface_lookup ("hardwire");

View file

@ -1,5 +1,5 @@
/* Target dependent code for the Fujitsu SPARClite for GDB, the GNU debugger.
Copyright 1994, 1995, 1996 Free Software Foundation, Inc.
Copyright 1994, 1995, 1996, 1999 Free Software Foundation, Inc.
This file is part of GDB.
@ -34,8 +34,7 @@
#include <netdb.h>
#endif
extern struct target_ops sparclite_ops; /* Forward decl */
extern struct target_ops remote_ops;
static struct target_ops sparclite_ops;
static char *remote_target_name = NULL;
static serial_t remote_desc = NULL;
@ -893,78 +892,21 @@ sparclite_download (filename, from_tty)
sparclite_serial_start);
}
/* Define the target subroutine names */
static struct target_ops sparclite_ops;
/* Set up the sparclite target vector. */
static void
init_sparclite_ops (void)
{
sparclite_ops.to_shortname = "sparclite";
sparclite_ops.to_longname = "SPARClite remote target";
sparclite_ops.to_doc = "Use a remote SPARClite target board via a serial line; using a gdb-specific protocol.\n\
Specify the serial device it is connected to (e.g. /dev/ttya).";
sparclite_ops.to_longname = "SPARClite download target";
sparclite_ops.to_doc = "Download to a remote SPARClite target board via serial of UDP.\n\
Specify the device it is connected to (e.g. /dev/ttya).";
sparclite_ops.to_open = sparclite_open;
sparclite_ops.to_close = sparclite_close;
sparclite_ops.to_attach = 0;
sparclite_ops.to_post_attach = NULL;
sparclite_ops.to_require_attach = NULL;
sparclite_ops.to_detach = 0;
sparclite_ops.to_require_detach = NULL;
sparclite_ops.to_resume = 0;
sparclite_ops.to_wait = 0;
sparclite_ops.to_post_wait = NULL;
sparclite_ops.to_fetch_registers = 0;
sparclite_ops.to_store_registers = 0;
sparclite_ops.to_prepare_to_store = 0;
sparclite_ops.to_xfer_memory = 0;
sparclite_ops.to_files_info = 0;
sparclite_ops.to_insert_breakpoint = 0;
sparclite_ops.to_remove_breakpoint = 0;
sparclite_ops.to_terminal_init = 0;
sparclite_ops.to_terminal_inferior = 0;
sparclite_ops.to_terminal_ours_for_output = 0;
sparclite_ops.to_terminal_ours = 0;
sparclite_ops.to_terminal_info = 0;
sparclite_ops.to_kill = 0;
sparclite_ops.to_load = sparclite_download;
sparclite_ops.to_lookup_symbol = 0;
sparclite_ops.to_create_inferior = 0;
sparclite_ops.to_post_startup_inferior = NULL;
sparclite_ops.to_acknowledge_created_inferior = NULL;
sparclite_ops.to_clone_and_follow_inferior = NULL;
sparclite_ops.to_post_follow_inferior_by_clone = NULL;
sparclite_ops.to_insert_fork_catchpoint = NULL;
sparclite_ops.to_remove_fork_catchpoint = NULL;
sparclite_ops.to_insert_vfork_catchpoint = NULL;
sparclite_ops.to_remove_vfork_catchpoint = NULL;
sparclite_ops.to_has_forked = NULL;
sparclite_ops.to_has_vforked = NULL;
sparclite_ops.to_can_follow_vfork_prior_to_exec = NULL;
sparclite_ops.to_post_follow_vfork = NULL;
sparclite_ops.to_insert_exec_catchpoint = NULL;
sparclite_ops.to_remove_exec_catchpoint = NULL;
sparclite_ops.to_has_execd = NULL;
sparclite_ops.to_reported_exec_events_per_exec_call = NULL;
sparclite_ops.to_has_exited = NULL;
sparclite_ops.to_mourn_inferior = 0;
sparclite_ops.to_can_run = 0;
sparclite_ops.to_notice_signals = 0;
sparclite_ops.to_thread_alive = 0;
sparclite_ops.to_stop = 0;
sparclite_ops.to_pid_to_exec_file = NULL;
sparclite_ops.to_core_file_to_sym_file = NULL;
sparclite_ops.to_stratum = download_stratum;
sparclite_ops.DONT_USE = 0;
sparclite_ops.to_has_all_memory = 0;
sparclite_ops.to_has_memory = 0;
sparclite_ops.to_has_stack = 0;
sparclite_ops.to_has_registers = 0;
sparclite_ops.to_has_execution = 0;
sparclite_ops.to_sections = 0;
sparclite_ops.to_sections_end = 0;
sparclite_ops.to_magic = OPS_MAGIC;
} /* init_sparclite_ops */
}
void
_initialize_sparcl_tdep ()

View file

@ -1,3 +1,11 @@
1999-07-08 Stan Shebs <shebs@andros.cygnus.com>
* gdb.base/callfwmall.c, gdb.base/callfwmall.exp: Renamed from
callfuncs2.c and callfuncs2.exp.
* gdb.base/list.exp: Remove mistaken xfails.
* gdb.base/list0.h: Add optional prototypes.
Wed Jul 7 00:27:35 1999 Andrew Cagney <cagney@amy.cygnus.com>
* gdb.base/setvar.exp: Increase the time-out on tests indirectly

View file

@ -104,9 +104,7 @@ proc test_listsize {} {
# Ensure we can limit printouts to one line
if [set_listsize 1] {
if {!$hp_cc_compiler && !$hp_aCC_compiler} { setup_xfail "*-*-*" }
gdb_test "list 1" "1\[ \t\]+#include \"list0.h\"" "list line 1 with listsize 1"
if {!$hp_cc_compiler && !$hp_aCC_compiler} { setup_xfail "*-*-*" }
gdb_test "list 2" "2\[ \t\]+" "list line 2 with listsize 1"
}
@ -123,10 +121,8 @@ proc test_listsize {} {
if [ set_listsize 3 ] {
setup_xfail "*-*-*"
gdb_test "list 1" "1\[ \t\]+#include \"list0.h\"2\[ \t\]+" "list line 1 with listsize 3"
if {!$hp_cc_compiler && !$hp_aCC_compiler} { setup_xfail "*-*-*" }
gdb_test "list 2" "1\[ \t\]+#include \"list0.h\".*3\[ \t\]+int main \[)(\]+" "list line 2 with listsize 3"
if {!$hp_cc_compiler && !$hp_aCC_compiler} { setup_xfail "*-*-*" }
gdb_test "list 3" "2\[ \t\]+\r\n3\[ \t\]+int main \[(\]+\[)\]+\r\n4\[ \t\]+\{" "list line 3 with listsize 3"
}

View file

@ -1,9 +1,10 @@
/* An include file that actually causes code to be generated in the
including file. This is known to cause problems on some systems. */
static void
foo (x)
int x;
/* An include file that actually causes code to be generated in the including file. This is known to cause problems on some systems. */
#ifdef PROTOTYPES
extern void bar(int);
static void foo (int x)
#else
static void foo (x) int x;
#endif
{
bar (x++);
bar (x++);

View file

@ -1273,9 +1273,13 @@ parse_escape (string_ptr)
be call for printing things which are independent of the language
of the program being debugged. */
void
gdb_printchar (c, stream, quoter)
register int c;
static void printchar PARAMS ((int c, void (*do_fputs) (const char *, GDB_FILE*), void (*do_fprintf) (GDB_FILE*, const char *, ...), GDB_FILE *stream, int quoter));
static void
printchar (c, do_fputs, do_fprintf, stream, quoter)
int c;
void (*do_fputs) PARAMS ((const char *, GDB_FILE*));
void (*do_fprintf) PARAMS ((GDB_FILE*, const char *, ...));
GDB_FILE *stream;
int quoter;
{
@ -1289,38 +1293,76 @@ gdb_printchar (c, stream, quoter)
switch (c)
{
case '\n':
fputs_filtered ("\\n", stream);
do_fputs ("\\n", stream);
break;
case '\b':
fputs_filtered ("\\b", stream);
do_fputs ("\\b", stream);
break;
case '\t':
fputs_filtered ("\\t", stream);
do_fputs ("\\t", stream);
break;
case '\f':
fputs_filtered ("\\f", stream);
do_fputs ("\\f", stream);
break;
case '\r':
fputs_filtered ("\\r", stream);
do_fputs ("\\r", stream);
break;
case '\033':
fputs_filtered ("\\e", stream);
do_fputs ("\\e", stream);
break;
case '\007':
fputs_filtered ("\\a", stream);
do_fputs ("\\a", stream);
break;
default:
fprintf_filtered (stream, "\\%.3o", (unsigned int) c);
do_fprintf (stream, "\\%.3o", (unsigned int) c);
break;
}
}
else
{
if (c == '\\' || c == quoter)
fputs_filtered ("\\", stream);
fprintf_filtered (stream, "%c", c);
do_fputs ("\\", stream);
do_fprintf (stream, "%c", c);
}
}
/* Print the character C on STREAM as part of the contents of a
literal string whose delimiter is QUOTER. Note that these routines
should only be call for printing things which are independent of
the language of the program being debugged. */
void
fputstr_filtered (str, quoter, stream)
const char *str;
int quoter;
GDB_FILE *stream;
{
while (*str)
printchar (*str++, fputs_filtered, fprintf_filtered, stream, quoter);
}
void
fputstr_unfiltered (str, quoter, stream)
const char *str;
int quoter;
GDB_FILE *stream;
{
while (*str)
printchar (*str++, fputs_unfiltered, fprintf_unfiltered, stream, quoter);
}
void
fputstrn_unfiltered (str, n, quoter, stream)
const char *str;
int n;
int quoter;
GDB_FILE *stream;
{
int i;
for (i = 0; i < n; i++)
printchar (str[i], fputs_unfiltered, fprintf_unfiltered, stream, quoter);
}
/* Number of lines per page or UINT_MAX if paging is disabled. */

View file

@ -1,3 +1,4 @@
1999-05-08 Felix Lee <flee@cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.

View file

@ -30,7 +30,6 @@ typedef char * VoidStar ;
#endif
typedef unsigned long ARMword ; /* must be 32 bits wide */
typedef struct ARMul_State ARMul_State ;
typedef unsigned ARMul_CPInits(ARMul_State *state) ;

View file

@ -464,6 +464,7 @@ ARMword ARMul_Emulate26(register ARMul_State *state)
if (temp) { /* if the condition codes don't match, stop here */
mainswitch:
switch ((int)BITS(20,27)) {
/***************************************************************************\
@ -877,6 +878,7 @@ mainswitch:
break ;
case 0x10 : /* TST reg and MRS CPSR and SWP word */
#ifdef MODET
if (BITS(4,11) == 0xB) {
/* STRH register offset, no write-back, down, pre indexed */

View file

@ -1,3 +1,26 @@
Sun Jul 11 23:47:20 1999 Andrew Cagney <cagney@b1.cygnus.com>
* sim-resume.c (sim_resume): Ensure that the siggnal [sic] is only
passed in when sim_resume is first entered - don't re-pass it
after a restart.
Sun Jul 11 23:34:44 1999 Andrew Cagney <cagney@b1.cygnus.com>
* sim-options.c (standard_option_handler): Add OPTION_LOAD_VMA and
OPTION_LOAD_LMA but only when is defined.
(standard_options): When SIM_HANDLES_LMA is defined include
options --load-lma and --load-vma.
(standard_install): Initialize STATE_LOAD_AT_LMA_P.
* sim-base.h (STATE_LOAD_AT_LMA_P): Define.
(struct sim_state_base): Add load_at_lma_p.
* sim-hload.c (sim_load): Replace SIM_HANDLES_LMA with
STATE_LOAD_AT_LMA_P.
Sun Jul 11 12:03:36 1999 Andrew Cagney <cagney@b1.cygnus.com>
* nrun.c (main): Re-format loop gnu style.
Wed Jul 7 19:56:03 1999 Andrew Cagney <cagney@b1.cygnus.com>
* dv-sockser.c (connected_p): Initialize addrlen.

View file

@ -416,27 +416,3 @@
/* end v850 sys target macros */
#endif
#endif
#ifdef NL_TARGET_venus
#ifdef sys_defs
/* from syscall.h */
/* begin venus sys target macros */
{ "SYS_argv", 13 },
{ "SYS_argvlen", 12 },
{ "SYS_chdir", 14 },
{ "SYS_chmod", 16 },
{ "SYS_close", 3 },
{ "SYS_exit", 1 },
{ "SYS_fstat", 10 },
{ "SYS_getpid", 8 },
{ "SYS_kill", 9 },
{ "SYS_lseek", 6 },
{ "SYS_open", 2 },
{ "SYS_read", 4 },
{ "SYS_stat", 15 },
{ "SYS_time", 18 },
{ "SYS_unlink", 7 },
{ "SYS_utime", 17 },
{ "SYS_write", 5 },
/* end venus sys target macros */
#endif
#endif

View file

@ -137,41 +137,44 @@ main (int argc, char **argv)
((reason == sim_stopped) &&
(STATE_ENVIRONMENT (sd) == OPERATING_ENVIRONMENT)));
}
else do
else
{
do
{
#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
struct sigaction sa, osa;
sa.sa_handler = cntrl_c;
sigemptyset (&sa.sa_mask);
sa.sa_flags = 0;
sigaction (SIGINT, &sa, &osa);
prev_sigint = osa.sa_handler;
struct sigaction sa, osa;
sa.sa_handler = cntrl_c;
sigemptyset (&sa.sa_mask);
sa.sa_flags = 0;
sigaction (SIGINT, &sa, &osa);
prev_sigint = osa.sa_handler;
#else
prev_sigint = signal (SIGINT, cntrl_c);
prev_sigint = signal (SIGINT, cntrl_c);
#endif
sim_resume (sd, 0, sigrc);
signal (SIGINT, prev_sigint);
sim_stop_reason (sd, &reason, &sigrc);
if ((reason == sim_stopped) &&
(sigrc == sim_signal_to_host (sd, SIM_SIGINT)))
break; /* exit on control-C */
/* remain on signals in oe mode */
} while ((reason == sim_stopped) &&
(STATE_ENVIRONMENT (sd) == OPERATING_ENVIRONMENT));
sim_resume (sd, 0, sigrc);
signal (SIGINT, prev_sigint);
sim_stop_reason (sd, &reason, &sigrc);
if ((reason == sim_stopped) &&
(sigrc == sim_signal_to_host (sd, SIM_SIGINT)))
break; /* exit on control-C */
/* remain on signals in oe mode */
} while ((reason == sim_stopped) &&
(STATE_ENVIRONMENT (sd) == OPERATING_ENVIRONMENT));
}
/* Print any stats the simulator collected. */
sim_info (sd, 0);
/* Shutdown the simulator. */
sim_close (sd, 0);
/* If reason is sim_exited, then sigrc holds the exit code which we want
to return. If reason is sim_stopped or sim_signalled, then sigrc holds
the signal that the simulator received; we want to return that to
indicate failure. */
#ifdef SIM_H8300 /* FIXME: Ugh. grep for SLEEP in compile.c */
if (sigrc == SIGILL)
abort ();

View file

@ -237,6 +237,11 @@ typedef struct {
#endif
/* Should image loads be performed using the LMA or VMA? Older
simulators use the VMA while newer simulators prefer the LMA. */
int load_at_lma_p;
#define STATE_LOAD_AT_LMA_P(SD) ((SD)->base.load_at_lma_p)
/* Marker for those wanting to do sanity checks.
This should remain the last member of this struct to help catch
miscompilation errors. */

View file

@ -45,20 +45,14 @@ sim_load (sd, prog_name, prog_bfd, from_tty)
incorrectly write the program sections at LMA interpreted as a
virtual address. This is still accommodated for backward
compatibility reasons. */
/* FIXME: The following simulators use this file as of 980313:
m32r, mips, v850 [grep for sim-hload in all Makefile.in's].
Each of these should be properly using lma. When this is confirmed,
SIM_HANDLES_LMA can go away. */
#ifndef SIM_HANDLES_LMA
#define SIM_HANDLES_LMA 0
#endif
result_bfd = sim_load_file (sd, STATE_MY_NAME (sd),
STATE_CALLBACK (sd),
prog_name,
STATE_PROG_BFD (sd),
STATE_OPEN_KIND (sd) == SIM_OPEN_DEBUG,
SIM_HANDLES_LMA, sim_write);
STATE_LOAD_AT_LMA_P (sd),
sim_write);
if (result_bfd == NULL)
{
bfd_close (STATE_PROG_BFD (sd));

View file

@ -111,6 +111,8 @@ typedef enum {
#ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir. */
OPTION_H8300,
#endif
OPTION_LOAD_LMA,
OPTION_LOAD_VMA,
} STANDARD_OPTIONS;
static const OPTION standard_options[] =
@ -182,6 +184,19 @@ static const OPTION standard_options[] =
'\0', "BFDNAME", "Specify the object-code format for the object files",
standard_option_handler },
#ifdef SIM_HANDLES_LMA
{ {"load-lma", no_argument, NULL, OPTION_LOAD_LMA},
'\0', NULL,
#if SIM_HANDLES_LMA
"Use VMA or LMA addresses when loading image (default LMA)",
#else
"Use VMA or LMA addresses when loading image (default VMA)",
#endif
standard_option_handler, "load-{lma,vma}" },
{ {"load-vma", no_argument, NULL, OPTION_LOAD_VMA},
'\0', NULL, "", standard_option_handler, "" },
#endif
{ {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL }
};
@ -394,6 +409,18 @@ standard_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
break;
}
case OPTION_LOAD_LMA:
{
STATE_LOAD_AT_LMA_P (sd) = 1;
break;
}
case OPTION_LOAD_VMA:
{
STATE_LOAD_AT_LMA_P (sd) = 0;
break;
}
case OPTION_HELP:
sim_print_help (sd, is_command);
if (STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE)
@ -413,6 +440,9 @@ standard_install (SIM_DESC sd)
SIM_ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
if (sim_add_option_table (sd, NULL, standard_options) != SIM_RC_OK)
return SIM_RC_FAIL;
#ifdef SIM_HANDLES_LMA
STATE_LOAD_AT_LMA_P (sd) = SIM_HANDLES_LMA;
#endif
return SIM_RC_OK;
}

View file

@ -70,6 +70,11 @@ sim_resume (SIM_DESC sd,
if (next_cpu_nr >= nr_cpus)
next_cpu_nr = 0;
/* Only deliver the siggnal ]sic] the first time through - don't
re-deliver any siggnal during a restart. */
if (jmpval == sim_engine_restart_jmpval)
siggnal = 0;
#ifdef SIM_CPU_EXCEPTION_RESUME
{
sim_cpu* cpu = STATE_CPU (sd, next_cpu_nr);

View file

@ -1,3 +1,17 @@
Mon Jul 12 00:02:27 1999 Andrew Cagney <cagney@amy.cygnus.com>
* interp.c (sim_monitor): Flush output before reading input.
Sun Jul 11 19:28:11 1999 Andrew Cagney <cagney@b1.cygnus.com>
* tconfig.in (SIM_HANDLES_LMA): Always define.
Thu Jul 8 16:06:59 1999 Andrew Cagney <cagney@b1.cygnus.com>
From Mark Salter <msalter@cygnus.com>:
* interp.c (BOARD_BSP): Define. Add to list of possible boards.
(sim_open): Add setup for BSP board.
Wed Jul 7 12:45:58 1999 Andrew Cagney <cagney@b1.cygnus.com>
* mips.igen (MULT, MULTU): Add syntax for two operand version.

View file

@ -257,6 +257,8 @@ static const OPTION mips_options[] =
"|" BOARD_JMR3904_PAL
#define BOARD_JMR3904_DEBUG "jmr3904debug"
"|" BOARD_JMR3904_DEBUG
#define BOARD_BSP "bsp"
"|" BOARD_BSP
, "Customize simulation for a particular board.", mips_option_handler },
@ -352,12 +354,40 @@ sim_open (kind, cb, abfd, argv)
device_init(sd);
}
else if (board != NULL
&& (strcmp(board, BOARD_BSP) == 0))
{
int i;
STATE_ENVIRONMENT (sd) = OPERATING_ENVIRONMENT;
/* ROM: 0x9FC0_0000 - 0x9FFF_FFFF and 0xBFC0_0000 - 0xBFFF_FFFF */
sim_do_commandf (sd, "memory alias 0x%lx@1,0x%lx,0x%0x",
0x9FC00000,
4 * 1024 * 1024, /* 4 MB */
0xBFC00000);
/* SRAM: 0x8000_0000 - 0x803F_FFFF and 0xA000_0000 - 0xA03F_FFFF */
sim_do_commandf (sd, "memory alias 0x%lx@1,0x%lx,0x%0x",
0x80000000,
4 * 1024 * 1024, /* 4 MB */
0xA0000000);
/* DRAM: 0x8800_0000 - 0x89FF_FFFF and 0xA800_0000 - 0xA9FF_FFFF */
for (i=0; i<8; i++) /* 32 MB total */
{
unsigned size = 4 * 1024 * 1024; /* 4 MB */
sim_do_commandf (sd, "memory alias 0x%lx@1,0x%lx,0x%0x",
0x88000000 + (i * size),
size,
0xA8000000 + (i * size));
}
}
#if (WITH_HW)
if (board != NULL
&& (strcmp(board, BOARD_JMR3904) == 0 ||
strcmp(board, BOARD_JMR3904_PAL) == 0 ||
strcmp(board, BOARD_JMR3904_DEBUG) == 0))
else if (board != NULL
&& (strcmp(board, BOARD_JMR3904) == 0 ||
strcmp(board, BOARD_JMR3904_PAL) == 0 ||
strcmp(board, BOARD_JMR3904_DEBUG) == 0))
{
/* match VIRTUAL memory layout of JMR-TX3904 board */
int i;
@ -973,6 +1003,8 @@ sim_monitor (SIM_DESC sd,
case 11: /* char inbyte(void) */
{
char tmp;
/* ensure that all output has gone... */
sim_io_flush_stdout (sd);
if (sim_io_read_stdin (sd, &tmp, sizeof(char)) != sizeof(char))
{
sim_io_error(sd,"Invalid return from character read");

View file

@ -12,6 +12,8 @@
MODULE_INSTALL_FN dv_sockser_install;
#define MODULE_LIST dv_sockser_install,
#else
#define SIM_HANDLES_LMA 0
#endif
/* Define this if the simulator supports profiling.