projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* defs.h (extract_signed_integer, extract_unsigned_integer,
[deliverable/binutils-gdb.git]
/
gdb
/
remote-mips.c
diff --git
a/gdb/remote-mips.c
b/gdb/remote-mips.c
index 9b8ca0bf24f10772eca6598fbb76fe6815bd484d..332d21ef69d0ee00ebdec2ef801a32b81c16f767 100644
(file)
--- a/
gdb/remote-mips.c
+++ b/
gdb/remote-mips.c
@@
-1,7
+1,7
@@
/* Remote debugging interface for MIPS remote debugging protocol.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
/* Remote debugging interface for MIPS remote debugging protocol.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2003, 2004, 2006, 2007, 2008
, 2009
Free Software Foundation, Inc.
Contributed by Cygnus Support. Written by Ian Lance Taylor
<ian@cygnus.com>.
Contributed by Cygnus Support. Written by Ian Lance Taylor
<ian@cygnus.com>.
@@
-84,26
+84,16
@@
static void lsi_open (char *name, int from_tty);
static void mips_close (int quitting);
static void mips_close (int quitting);
-static void mips_detach (char *args, int from_tty);
-
-static void mips_resume (ptid_t ptid, int step,
- enum target_signal siggnal);
-
-static ptid_t mips_wait (ptid_t ptid,
- struct target_waitstatus *status);
+static void mips_detach (struct target_ops *ops, char *args, int from_tty);
static int mips_map_regno (struct gdbarch *, int);
static int mips_map_regno (struct gdbarch *, int);
-static void mips_fetch_registers (struct regcache *regcache, int regno);
-
static void mips_prepare_to_store (struct regcache *regcache);
static void mips_prepare_to_store (struct regcache *regcache);
-static void mips_store_registers (struct regcache *regcache, int regno);
-
static unsigned int mips_fetch_word (CORE_ADDR addr);
static int mips_store_word (CORE_ADDR addr, unsigned int value,
static unsigned int mips_fetch_word (CORE_ADDR addr);
static int mips_store_word (CORE_ADDR addr, unsigned int value,
-
char
*old_contents);
+
int
*old_contents);
static int mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
int write,
static int mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
int write,
@@
-112,7
+102,7
@@
static int mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
static void mips_files_info (struct target_ops *ignore);
static void mips_files_info (struct target_ops *ignore);
-static void mips_mourn_inferior (
void
);
+static void mips_mourn_inferior (
struct target_ops *ops
);
static int pmon_makeb64 (unsigned long v, char *p, int n, int *chksum);
static int pmon_makeb64 (unsigned long v, char *p, int n, int *chksum);
@@
-1197,6
+1187,7
@@
mips_request (int cmd,
int timeout,
char *buff)
{
int timeout,
char *buff)
{
+ int addr_size = gdbarch_addr_bit (target_gdbarch) / 8;
char myBuff[DATA_MAXLEN + 1];
int len;
int rpid;
char myBuff[DATA_MAXLEN + 1];
int len;
int rpid;
@@
-1212,7
+1203,8
@@
mips_request (int cmd,
if (mips_need_reply)
internal_error (__FILE__, __LINE__,
_("mips_request: Trying to send command before reply"));
if (mips_need_reply)
internal_error (__FILE__, __LINE__,
_("mips_request: Trying to send command before reply"));
- sprintf (buff, "0x0 %c 0x%s 0x%s", cmd, paddr_nz (addr), paddr_nz (data));
+ sprintf (buff, "0x0 %c 0x%s 0x%s", cmd,
+ phex_nz (addr, addr_size), phex_nz (data, addr_size));
mips_send_packet (buff, 1);
mips_need_reply = 1;
}
mips_send_packet (buff, 1);
mips_need_reply = 1;
}
@@
-1490,8
+1482,7
@@
device is attached to the target board (e.g., /dev/ttya).\n"
/* Parse the serial port name, the optional TFTP name, and the
optional local TFTP name. */
/* Parse the serial port name, the optional TFTP name, and the
optional local TFTP name. */
- if ((argv = buildargv (name)) == NULL)
- nomem (0);
+ argv = gdb_buildargv (name);
make_cleanup_freeargv (argv);
serial_port_name = xstrdup (argv[0]);
make_cleanup_freeargv (argv);
serial_port_name = xstrdup (argv[0]);
@@
-1584,7
+1575,7
@@
device is attached to the target board (e.g., /dev/ttya).\n"
reinit_frame_cache ();
registers_changed ();
reinit_frame_cache ();
registers_changed ();
- stop_pc = re
ad_pc (
);
+ stop_pc = re
gcache_read_pc (get_current_regcache ()
);
print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC);
xfree (serial_port_name);
}
print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC);
xfree (serial_port_name);
}
@@
-1653,7
+1644,7
@@
mips_close (int quitting)
/* Detach from the remote board. */
static void
/* Detach from the remote board. */
static void
-mips_detach (char *args, int from_tty)
+mips_detach (
struct target_ops *ops,
char *args, int from_tty)
{
if (args)
error ("Argument given to \"detach\" when remotely debugging.");
{
if (args)
error ("Argument given to \"detach\" when remotely debugging.");
@@
-1671,7
+1662,8
@@
mips_detach (char *args, int from_tty)
where PMON does return a reply. */
static void
where PMON does return a reply. */
static void
-mips_resume (ptid_t ptid, int step, enum target_signal siggnal)
+mips_resume (struct target_ops *ops,
+ ptid_t ptid, int step, enum target_signal siggnal)
{
int err;
{
int err;
@@
-1704,7
+1696,8
@@
mips_signal_from_protocol (int sig)
/* Wait until the remote stops, and return a wait status. */
static ptid_t
/* Wait until the remote stops, and return a wait status. */
static ptid_t
-mips_wait (ptid_t ptid, struct target_waitstatus *status)
+mips_wait (struct target_ops *ops,
+ ptid_t ptid, struct target_waitstatus *status, int options)
{
int rstatus;
int err;
{
int rstatus;
int err;
@@
-1756,26
+1749,27
@@
mips_wait (ptid_t ptid, struct target_waitstatus *status)
{
struct regcache *regcache = get_current_regcache ();
struct gdbarch *gdbarch = get_regcache_arch (regcache);
{
struct regcache *regcache = get_current_regcache ();
struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
char buf[MAX_REGISTER_SIZE];
char buf[MAX_REGISTER_SIZE];
- store_unsigned_integer
(buf,
- register_size
-
(gdbarch, gdbarch_pc_regnum (gdbarch))
, rpc);
+ store_unsigned_integer
+ (buf, register_size (gdbarch, gdbarch_pc_regnum (gdbarch)),
+
byte_order
, rpc);
regcache_raw_supply (regcache, gdbarch_pc_regnum (gdbarch), buf);
store_unsigned_integer
regcache_raw_supply (regcache, gdbarch_pc_regnum (gdbarch), buf);
store_unsigned_integer
- (buf, register_size (gdbarch, gdbarch_pc_regnum (gdbarch)), rfp);
+ (buf, register_size (gdbarch, gdbarch_pc_regnum (gdbarch)),
+ byte_order, rfp);
regcache_raw_supply (regcache, 30, buf); /* This register they are avoiding and so it is unnamed */
regcache_raw_supply (regcache, 30, buf); /* This register they are avoiding and so it is unnamed */
- store_unsigned_integer (buf, register_size (gdbarch,
- gdbarch_sp_regnum (gdbarch)), rsp);
+ store_unsigned_integer
+ (buf, register_size (gdbarch, gdbarch_sp_regnum (gdbarch)),
+ byte_order, rsp);
regcache_raw_supply (regcache, gdbarch_sp_regnum (gdbarch), buf);
regcache_raw_supply (regcache, gdbarch_sp_regnum (gdbarch), buf);
- store_unsigned_integer (buf,
- register_size (gdbarch,
- gdbarch_deprecated_fp_regnum
- (gdbarch)),
- 0);
+ store_unsigned_integer
+ (buf, register_size (gdbarch, gdbarch_deprecated_fp_regnum (gdbarch)),
+ byte_order, 0);
regcache_raw_supply (regcache,
gdbarch_deprecated_fp_regnum (gdbarch), buf);
regcache_raw_supply (regcache,
gdbarch_deprecated_fp_regnum (gdbarch), buf);
@@
-1801,7
+1795,7
@@
mips_wait (ptid_t ptid, struct target_waitstatus *status)
fetch breakpoint, not a data watchpoint. FIXME when PMON
provides some way to tell us what type of breakpoint it is. */
int i;
fetch breakpoint, not a data watchpoint. FIXME when PMON
provides some way to tell us what type of breakpoint it is. */
int i;
- CORE_ADDR pc = re
ad_pc (
);
+ CORE_ADDR pc = re
gcache_read_pc (get_current_regcache ()
);
hit_watchpoint = 1;
for (i = 0; i < MAX_LSI_BREAKPOINTS; i++)
hit_watchpoint = 1;
for (i = 0; i < MAX_LSI_BREAKPOINTS; i++)
@@
-1852,7
+1846,7
@@
mips_wait (ptid_t ptid, struct target_waitstatus *status)
{
char *func_name;
CORE_ADDR func_start;
{
char *func_name;
CORE_ADDR func_start;
- CORE_ADDR pc = re
ad_pc (
);
+ CORE_ADDR pc = re
gcache_read_pc (get_current_regcache ()
);
find_pc_partial_function (pc, &func_name, &func_start, NULL);
if (func_name != NULL && strcmp (func_name, "_exit") == 0
find_pc_partial_function (pc, &func_name, &func_start, NULL);
if (func_name != NULL && strcmp (func_name, "_exit") == 0
@@
-1902,16
+1896,18
@@
mips_map_regno (struct gdbarch *gdbarch, int regno)
/* Fetch the remote registers. */
static void
/* Fetch the remote registers. */
static void
-mips_fetch_registers (struct regcache *regcache, int regno)
+mips_fetch_registers (struct target_ops *ops,
+ struct regcache *regcache, int regno)
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
unsigned LONGEST val;
int err;
if (regno == -1)
{
for (regno = 0; regno < gdbarch_num_regs (gdbarch); regno++)
unsigned LONGEST val;
int err;
if (regno == -1)
{
for (regno = 0; regno < gdbarch_num_regs (gdbarch); regno++)
- mips_fetch_registers (regcache, regno);
+ mips_fetch_registers (
ops,
regcache, regno);
return;
}
return;
}
@@
-1949,7
+1945,8
@@
mips_fetch_registers (struct regcache *regcache, int regno)
/* We got the number the register holds, but gdb expects to see a
value in the target byte ordering. */
/* We got the number the register holds, but gdb expects to see a
value in the target byte ordering. */
- store_unsigned_integer (buf, register_size (gdbarch, regno), val);
+ store_unsigned_integer (buf, register_size (gdbarch, regno),
+ byte_order, val);
regcache_raw_supply (regcache, regno, buf);
}
}
regcache_raw_supply (regcache, regno, buf);
}
}
@@
-1965,7
+1962,8
@@
mips_prepare_to_store (struct regcache *regcache)
/* Store remote register(s). */
static void
/* Store remote register(s). */
static void
-mips_store_registers (struct regcache *regcache, int regno)
+mips_store_registers (struct target_ops *ops,
+ struct regcache *regcache, int regno)
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
ULONGEST val;
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
ULONGEST val;
@@
-1974,7
+1972,7
@@
mips_store_registers (struct regcache *regcache, int regno)
if (regno == -1)
{
for (regno = 0; regno < gdbarch_num_regs (gdbarch); regno++)
if (regno == -1)
{
for (regno = 0; regno < gdbarch_num_regs (gdbarch); regno++)
- mips_store_registers (regcache, regno);
+ mips_store_registers (
ops,
regcache, regno);
return;
}
return;
}
@@
-2000,8
+1998,8
@@
mips_fetch_word (CORE_ADDR addr)
val = mips_request ('i', addr, 0, &err,
mips_receive_wait, NULL);
if (err)
val = mips_request ('i', addr, 0, &err,
mips_receive_wait, NULL);
if (err)
- mips_error ("Can't read address
0x
%s: %s",
- paddr
_nz (
addr), safe_strerror (errno));
+ mips_error ("Can't read address %s: %s",
+ paddr
ess (target_gdbarch,
addr), safe_strerror (errno));
}
return val;
}
}
return val;
}
@@
-2012,7
+2010,7
@@
mips_fetch_word (CORE_ADDR addr)
/* FIXME! make sure only 32-bit quantities get stored! */
static int
/* FIXME! make sure only 32-bit quantities get stored! */
static int
-mips_store_word (CORE_ADDR addr, unsigned int val,
char
*old_contents)
+mips_store_word (CORE_ADDR addr, unsigned int val,
int
*old_contents)
{
int err;
unsigned int oldcontents;
{
int err;
unsigned int oldcontents;
@@
-2028,7
+2026,7
@@
mips_store_word (CORE_ADDR addr, unsigned int val, char *old_contents)
return errno;
}
if (old_contents != NULL)
return errno;
}
if (old_contents != NULL)
-
store_unsigned_integer (old_contents, 4, oldcontents)
;
+
*old_contents = oldcontents
;
return 0;
}
return 0;
}
@@
-2045,6
+2043,7
@@
static int
mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
struct mem_attrib *attrib, struct target_ops *target)
{
mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
struct mem_attrib *attrib, struct target_ops *target)
{
+ enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch);
int i;
CORE_ADDR addr;
int count;
int i;
CORE_ADDR addr;
int count;
@@
-2069,14
+2068,15
@@
mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
if (addr != memaddr || len < 4)
{
/* Need part of initial word -- fetch it. */
if (addr != memaddr || len < 4)
{
/* Need part of initial word -- fetch it. */
- store_unsigned_integer (&buffer[0], 4, mips_fetch_word (addr));
+ store_unsigned_integer (&buffer[0], 4, byte_order,
+ mips_fetch_word (addr));
}
if (count > 1)
{
/* Need part of last word -- fetch it. FIXME: we do this even
if we don't need it. */
}
if (count > 1)
{
/* Need part of last word -- fetch it. FIXME: we do this even
if we don't need it. */
- store_unsigned_integer (&buffer[(count - 1) * 4], 4,
+ store_unsigned_integer (&buffer[(count - 1) * 4], 4,
byte_order,
mips_fetch_word (addr + (count - 1) * 4));
}
mips_fetch_word (addr + (count - 1) * 4));
}
@@
-2088,9
+2088,9
@@
mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
for (i = 0; i < count; i++, addr += 4)
{
for (i = 0; i < count; i++, addr += 4)
{
- status = mips_store_word (addr,
- extract_unsigned_integer (&buffer[i * 4], 4),
-
NULL);
+ int word;
+ word = extract_unsigned_integer (&buffer[i * 4], 4, byte_order);
+
status = mips_store_word (addr, word,
NULL);
/* Report each kilobyte (we download 32-bit words at a time) */
if (i % 256 == 255)
{
/* Report each kilobyte (we download 32-bit words at a time) */
if (i % 256 == 255)
{
@@
-2112,7
+2112,8
@@
mips_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
/* Read all the longwords */
for (i = 0; i < count; i++, addr += 4)
{
/* Read all the longwords */
for (i = 0; i < count; i++, addr += 4)
{
- store_unsigned_integer (&buffer[i * 4], 4, mips_fetch_word (addr));
+ store_unsigned_integer (&buffer[i * 4], 4, byte_order,
+ mips_fetch_word (addr));
QUIT;
}
QUIT;
}
@@
-2136,7
+2137,7
@@
mips_files_info (struct target_ops *ignore)
right port, we could interrupt the process with a break signal. */
static void
right port, we could interrupt the process with a break signal. */
static void
-mips_kill (
void
)
+mips_kill (
struct target_ops *ops
)
{
if (!mips_wait_flag)
return;
{
if (!mips_wait_flag)
return;
@@
-2149,8
+2150,8
@@
mips_kill (void)
target_terminal_ours ();
target_terminal_ours ();
- if (query ("Interrupted while waiting for the program.\n\
-Give up (and stop debugging it)? "))
+ if (query (
_(
"Interrupted while waiting for the program.\n\
+Give up (and stop debugging it)? "))
)
{
/* Clean up in such a way that mips_close won't try to talk to the
board (it almost surely won't work since we weren't able to talk to
{
/* Clean up in such a way that mips_close won't try to talk to the
board (it almost surely won't work since we weren't able to talk to
@@
-2189,7
+2190,8
@@
Give up (and stop debugging it)? "))
/* Start running on the target board. */
static void
/* Start running on the target board. */
static void
-mips_create_inferior (char *execfile, char *args, char **env, int from_tty)
+mips_create_inferior (struct target_ops *ops, char *execfile,
+ char *args, char **env, int from_tty)
{
CORE_ADDR entry_pt;
{
CORE_ADDR entry_pt;
@@
-2210,13
+2212,13
@@
Can't pass arguments to remote MIPS board; arguments ignored.");
/* FIXME: Should we set inferior_ptid here? */
/* FIXME: Should we set inferior_ptid here? */
-
write_pc (
entry_pt);
+
regcache_write_pc (get_current_regcache (),
entry_pt);
}
/* Clean up after a process. Actually nothing to do. */
static void
}
/* Clean up after a process. Actually nothing to do. */
static void
-mips_mourn_inferior (
void
)
+mips_mourn_inferior (
struct target_ops *ops
)
{
if (current_ops != NULL)
unpush_target (current_ops);
{
if (current_ops != NULL)
unpush_target (current_ops);
@@
-2234,28
+2236,30
@@
mips_mourn_inferior (void)
target contents. */
static int
target contents. */
static int
-mips_insert_breakpoint (struct bp_target_info *bp_tgt)
+mips_insert_breakpoint (struct gdbarch *gdbarch,
+ struct bp_target_info *bp_tgt)
{
if (monitor_supports_breakpoints)
return mips_set_breakpoint (bp_tgt->placed_address, MIPS_INSN32_SIZE,
BREAK_FETCH);
else
{
if (monitor_supports_breakpoints)
return mips_set_breakpoint (bp_tgt->placed_address, MIPS_INSN32_SIZE,
BREAK_FETCH);
else
- return memory_insert_breakpoint (bp_tgt);
+ return memory_insert_breakpoint (
gdbarch,
bp_tgt);
}
static int
}
static int
-mips_remove_breakpoint (struct bp_target_info *bp_tgt)
+mips_remove_breakpoint (struct gdbarch *gdbarch,
+ struct bp_target_info *bp_tgt)
{
if (monitor_supports_breakpoints)
return mips_clear_breakpoint (bp_tgt->placed_address, MIPS_INSN32_SIZE,
BREAK_FETCH);
else
{
if (monitor_supports_breakpoints)
return mips_clear_breakpoint (bp_tgt->placed_address, MIPS_INSN32_SIZE,
BREAK_FETCH);
else
- return memory_remove_breakpoint (bp_tgt);
+ return memory_remove_breakpoint (
gdbarch,
bp_tgt);
}
/* Tell whether this target can support a hardware breakpoint. CNT
is the number of hardware breakpoints already installed. This
}
/* Tell whether this target can support a hardware breakpoint. CNT
is the number of hardware breakpoints already installed. This
- implements the
TARGET_CAN_USE_HARDWARE_WATCHPOINT
macro. */
+ implements the
target_can_use_hardware_watchpoint
macro. */
int
mips_can_use_watchpoint (int type, int cnt, int othertype)
int
mips_can_use_watchpoint (int type, int cnt, int othertype)
@@
-2345,7
+2349,7
@@
static int
mips_check_lsi_error (CORE_ADDR addr, int rerrflg)
{
struct lsi_error *err;
mips_check_lsi_error (CORE_ADDR addr, int rerrflg)
{
struct lsi_error *err;
- char *saddr = paddr
_nz (addr); /* printable address string */
+ char *saddr = paddr
ess (target_gdbarch, addr);
if (rerrflg == 0) /* no error */
return 0;
if (rerrflg == 0) /* no error */
return 0;
@@
-2362,14
+2366,14
@@
mips_check_lsi_error (CORE_ADDR addr, int rerrflg)
{
found = 1;
fprintf_unfiltered (gdb_stderr, "\
{
found = 1;
fprintf_unfiltered (gdb_stderr, "\
-mips_common_breakpoint (
0x
%s): Warning: %s\n",
+mips_common_breakpoint (%s): Warning: %s\n",
saddr,
err->string);
}
}
if (!found)
fprintf_unfiltered (gdb_stderr, "\
saddr,
err->string);
}
}
if (!found)
fprintf_unfiltered (gdb_stderr, "\
-mips_common_breakpoint (
0x
%s): Unknown warning: 0x%x\n",
+mips_common_breakpoint (%s): Unknown warning: 0x%x\n",
saddr,
rerrflg);
}
saddr,
rerrflg);
}
@@
-2382,14
+2386,14
@@
mips_common_breakpoint (0x%s): Unknown warning: 0x%x\n",
if ((err->code & rerrflg) == err->code)
{
fprintf_unfiltered (gdb_stderr, "\
if ((err->code & rerrflg) == err->code)
{
fprintf_unfiltered (gdb_stderr, "\
-mips_common_breakpoint (
0x
%s): Error: %s\n",
+mips_common_breakpoint (%s): Error: %s\n",
saddr,
err->string);
return 1;
}
}
fprintf_unfiltered (gdb_stderr, "\
saddr,
err->string);
return 1;
}
}
fprintf_unfiltered (gdb_stderr, "\
-mips_common_breakpoint (
0x
%s): Unknown error: 0x%x\n",
+mips_common_breakpoint (%s): Unknown error: 0x%x\n",
saddr,
rerrflg);
return 1;
saddr,
rerrflg);
return 1;
@@
-2412,6
+2416,7
@@
mips_common_breakpoint (0x%s): Unknown error: 0x%x\n",
static int
mips_common_breakpoint (int set, CORE_ADDR addr, int len, enum break_type type)
{
static int
mips_common_breakpoint (int set, CORE_ADDR addr, int len, enum break_type type)
{
+ int addr_size = gdbarch_addr_bit (target_gdbarch) / 8;
char buf[DATA_MAXLEN + 1];
char cmd, rcmd;
int rpid, rerrflg, rresponse, rlen;
char buf[DATA_MAXLEN + 1];
char cmd, rcmd;
int rpid, rerrflg, rresponse, rlen;
@@
-2445,7
+2450,7
@@
mips_common_breakpoint (int set, CORE_ADDR addr, int len, enum break_type type)
{
warning ("\
mips_common_breakpoint: Attempt to clear bogus breakpoint at %s\n",
{
warning ("\
mips_common_breakpoint: Attempt to clear bogus breakpoint at %s\n",
- paddr
_nz (
addr));
+ paddr
ess (target_gdbarch,
addr));
return 1;
}
return 1;
}
@@
-2494,15
+2499,16
@@
mips_common_breakpoint: Bad response from remote board: %s",
if (type == BREAK_FETCH) /* instruction breakpoint */
{
cmd = 'B';
if (type == BREAK_FETCH) /* instruction breakpoint */
{
cmd = 'B';
- sprintf (buf, "0x0 B 0x%s 0x0", p
addr_nz (addr
));
+ sprintf (buf, "0x0 B 0x%s 0x0", p
hex_nz (addr, addr_size
));
}
else
/* watchpoint */
{
cmd = 'A';
}
else
/* watchpoint */
{
cmd = 'A';
- sprintf (buf, "0x0 A 0x%s 0x%x 0x%s", paddr_nz (addr),
- type == BREAK_READ ? 1 : (type == BREAK_WRITE ? 2 : 3),
- paddr_nz (addr + len - 1));
+ sprintf (buf, "0x0 A 0x%s 0x%x 0x%s",
+ phex_nz (addr, addr_size),
+ type == BREAK_READ ? 1 : (type == BREAK_WRITE ? 2 : 3),
+ phex_nz (addr + len - 1, addr_size));
}
mips_send_packet (buf, 1);
}
mips_send_packet (buf, 1);
@@
-2563,13
+2569,13
@@
mips_common_breakpoint: Bad response from remote board: %s",
}
cmd = 'B';
}
cmd = 'B';
- sprintf (buf, "0x0 B 0x%s 0x%s %s", p
addr_nz (addr
),
- p
addr_nz (mask
), flags);
+ sprintf (buf, "0x0 B 0x%s 0x%s %s", p
hex_nz (addr, addr_size
),
+ p
hex_nz (mask, addr_size
), flags);
}
else
{
cmd = 'b';
}
else
{
cmd = 'b';
- sprintf (buf, "0x0 b 0x%s", p
addr_nz (addr
));
+ sprintf (buf, "0x0 b 0x%s", p
hex_nz (addr, addr_size
));
}
mips_send_packet (buf, 1);
}
mips_send_packet (buf, 1);
@@
-2593,8
+2599,8
@@
mips_common_breakpoint: Bad response from remote board: %s",
rresponse = rerrflg;
if (rresponse != 22) /* invalid argument */
fprintf_unfiltered (gdb_stderr, "\
rresponse = rerrflg;
if (rresponse != 22) /* invalid argument */
fprintf_unfiltered (gdb_stderr, "\
-mips_common_breakpoint (
0x
%s): Got error: 0x%x\n",
- paddr
_nz (
addr), rresponse);
+mips_common_breakpoint (%s): Got error: 0x%x\n",
+ paddr
ess (target_gdbarch,
addr), rresponse);
return 1;
}
}
return 1;
}
}
@@
-2620,7
+2626,8
@@
send_srec (char *srec, int len, CORE_ADDR addr)
case 0x6: /* ACK */
return;
case 0x15: /* NACK */
case 0x6: /* ACK */
return;
case 0x15: /* NACK */
- fprintf_unfiltered (gdb_stderr, "Download got a NACK at byte %s! Retrying.\n", paddr_u (addr));
+ fprintf_unfiltered (gdb_stderr, "Download got a NACK at byte %s! Retrying.\n",
+ paddress (target_gdbarch, addr));
continue;
default:
error ("Download got unexpected ack char: 0x%x, retrying.\n", ch);
continue;
default:
error ("Download got unexpected ack char: 0x%x, retrying.\n", ch);
@@
-3264,6
+3271,8
@@
pmon_load_fast (char *file)
static void
mips_load (char *file, int from_tty)
{
static void
mips_load (char *file, int from_tty)
{
+ struct regcache *regcache;
+
/* Get the board out of remote debugging mode. */
if (mips_exit_debug ())
error ("mips_load: Couldn't get into monitor mode.");
/* Get the board out of remote debugging mode. */
if (mips_exit_debug ())
error ("mips_load: Couldn't get into monitor mode.");
@@
-3276,18
+3285,17
@@
mips_load (char *file, int from_tty)
mips_initialize ();
/* Finally, make the PC point at the start address */
mips_initialize ();
/* Finally, make the PC point at the start address */
+ regcache = get_current_regcache ();
if (mips_monitor != MON_IDT)
{
/* Work around problem where PMON monitor updates the PC after a load
to a different value than GDB thinks it has. The following ensures
if (mips_monitor != MON_IDT)
{
/* Work around problem where PMON monitor updates the PC after a load
to a different value than GDB thinks it has. The following ensures
- that the write_pc() WILL update the PC value: */
- struct regcache *regcache = get_current_regcache ();
- regcache_set_valid_p (regcache,
- gdbarch_pc_regnum (get_regcache_arch (regcache)),
- 0);
+ that the regcache_write_pc() WILL update the PC value: */
+ regcache_invalidate (regcache,
+ gdbarch_pc_regnum (get_regcache_arch (regcache)));
}
if (exec_bfd)
}
if (exec_bfd)
-
write_pc (
bfd_get_start_address (exec_bfd));
+
regcache_write_pc (regcache,
bfd_get_start_address (exec_bfd));
inferior_ptid = null_ptid; /* No process now */
inferior_ptid = null_ptid; /* No process now */
@@
-3345,11
+3353,11
@@
_initialize_remote_mips (void)
mips_ops.to_mourn_inferior = mips_mourn_inferior;
mips_ops.to_log_command = serial_log_command;
mips_ops.to_stratum = process_stratum;
mips_ops.to_mourn_inferior = mips_mourn_inferior;
mips_ops.to_log_command = serial_log_command;
mips_ops.to_stratum = process_stratum;
- mips_ops.to_has_all_memory =
1
;
- mips_ops.to_has_memory =
1
;
- mips_ops.to_has_stack =
1
;
- mips_ops.to_has_registers =
1
;
- mips_ops.to_has_execution =
1
;
+ mips_ops.to_has_all_memory =
default_child_has_all_memory
;
+ mips_ops.to_has_memory =
default_child_has_memory
;
+ mips_ops.to_has_stack =
default_child_has_stack
;
+ mips_ops.to_has_registers =
default_child_has_registers
;
+ mips_ops.to_has_execution =
default_child_has_execution
;
mips_ops.to_magic = OPS_MAGIC;
/* Copy the common fields to all four target vectors. */
mips_ops.to_magic = OPS_MAGIC;
/* Copy the common fields to all four target vectors. */
This page took
0.033393 seconds
and
4
git commands to generate.