2002-01-15 Michael Snyder <msnyder@redhat.com>
* target.c: New command, "set trust-readonly-sections on". (do_xfer_memory): Honor the suggestion to trust readonly sections by reading them from the object file instead of from the target. (initialize_targets): Register command "set trust-readonly-sections".
This commit is contained in:
parent
2c955b8b61
commit
3a11626da1
2 changed files with 42 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2002-01-15 Michael Snyder <msnyder@redhat.com>
|
||||
|
||||
* target.c: New command, "set trust-readonly-sections on".
|
||||
(do_xfer_memory): Honor the suggestion to trust readonly sections
|
||||
by reading them from the object file instead of from the target.
|
||||
(initialize_targets): Register command "set trust-readonly-sections".
|
||||
|
||||
2002-01-29 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* parse.c (target_map_name_to_register): Simplify, search regs and
|
||||
|
|
40
gdb/target.c
40
gdb/target.c
|
@ -835,6 +835,8 @@ target_write_memory (CORE_ADDR memaddr, char *myaddr, int len)
|
|||
return target_xfer_memory (memaddr, myaddr, len, 1);
|
||||
}
|
||||
|
||||
static int trust_readonly = 0;
|
||||
|
||||
/* Move memory to or from the targets. The top target gets priority;
|
||||
if it cannot handle it, it is offered to the next one down, etc.
|
||||
|
||||
|
@ -857,6 +859,24 @@ do_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write,
|
|||
0. */
|
||||
errno = 0;
|
||||
|
||||
if (!write && trust_readonly)
|
||||
{
|
||||
/* User-settable option, "trust-readonly". If true, then
|
||||
memory from any SEC_READONLY bfd section may be read
|
||||
directly from the bfd file. */
|
||||
|
||||
struct section_table *secp;
|
||||
|
||||
for (secp = current_target.to_sections;
|
||||
secp < current_target.to_sections_end;
|
||||
secp++)
|
||||
{
|
||||
if (memaddr >= secp->addr && memaddr < secp->endaddr)
|
||||
return xfer_memory (memaddr, myaddr, len, 0,
|
||||
attrib, ¤t_target);
|
||||
}
|
||||
}
|
||||
|
||||
/* The quick case is that the top target can handle the transfer. */
|
||||
res = current_target.to_xfer_memory
|
||||
(memaddr, myaddr, len, write, attrib, ¤t_target);
|
||||
|
@ -2254,13 +2274,23 @@ initialize_targets (void)
|
|||
add_info ("target", target_info, targ_desc);
|
||||
add_info ("files", target_info, targ_desc);
|
||||
|
||||
add_show_from_set (
|
||||
add_set_cmd ("target", class_maintenance, var_zinteger,
|
||||
(char *) &targetdebug,
|
||||
"Set target debugging.\n\
|
||||
add_show_from_set
|
||||
(add_set_cmd ("target", class_maintenance, var_zinteger,
|
||||
(char *) &targetdebug,
|
||||
"Set target debugging.\n\
|
||||
When non-zero, target debugging is enabled.", &setdebuglist),
|
||||
&showdebuglist);
|
||||
&showdebuglist);
|
||||
|
||||
add_show_from_set
|
||||
(add_set_boolean_cmd
|
||||
("trust-readonly-sections", class_support,
|
||||
&trust_readonly,
|
||||
"Set mode for reading from readonly sections.\n\
|
||||
When this mode is on, memory reads from readonly sections (such as .text)\n\
|
||||
will be read from the object file instead of from the target. This will\n\
|
||||
result in significant performance improvement for remote targets.",
|
||||
&setlist),
|
||||
&showlist);
|
||||
|
||||
add_com ("monitor", class_obscure, do_monitor_command,
|
||||
"Send a command to the remote monitor (remote targets only).");
|
||||
|
|
Loading…
Reference in a new issue