From: Michael Snyder <msnyder@redhat.com>
To: Andrew Cagney <ac131313@cygnus.com>
Cc: Michael Snyder <msnyder@cygnus.com>, gdb-patches@sources.redhat.com
Subject: Re: [RFA] New option "trust-readonly-sections"
Date: Wed, 30 Jan 2002 18:25:00 -0000 [thread overview]
Message-ID: <3C58A987.E4F85674@redhat.com> (raw)
In-Reply-To: <3C5057E6.6070401@cygnus.com>
[-- Attachment #1: Type: text/plain, Size: 1308 bytes --]
Andrew Cagney wrote:
>
> > *************** do_xfer_memory (CORE_ADDR memaddr, char
> > *** 857,862 ****
> > --- 859,883 ----
> > 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++)
> > + {
> > + /* FIXME: take it only if it's entirely within the section. */
> > + if (memaddr >= secp->addr && memaddr + len <= secp->endaddr)
> > + return xfer_memory (memaddr, myaddr, len, 0,
> > + attrib, ¤t_target);
>
> My understanding of do_xfer_memory() is that it is allowed to do partial
> transfers. Hence, here, if the data doesn't all lie in the section, it
> is safe to truncate the transfer and return the number of bytes transfered.
Thanks. Implementing both this suggestion and your other one about
using "add_set_boolean_cmd", I have committed the patch in the new
form attached below:
Eli may now nag me for doco, and you may nag me for a NEWS entry. ;-)
[-- Attachment #2: trust.patch --]
[-- Type: text/plain, Size: 3185 bytes --]
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".
Index: target.c
===================================================================
RCS file: /cvs/src/src/gdb/target.c,v
retrieving revision 1.30
diff -p -r1.30 target.c
*** target.c 2002/01/09 00:36:58 1.30
--- target.c 2002/01/31 02:20:53
*************** target_write_memory (CORE_ADDR memaddr,
*** 835,840 ****
--- 835,842 ----
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.
*************** do_xfer_memory (CORE_ADDR memaddr, char
*** 857,862 ****
--- 859,882 ----
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);
*************** initialize_targets (void)
*** 2254,2266 ****
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\
When non-zero, target debugging is enabled.", &setdebuglist),
! &showdebuglist);
add_com ("monitor", class_obscure, do_monitor_command,
"Send a command to the remote monitor (remote targets only).");
--- 2274,2296 ----
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\
When non-zero, target debugging is enabled.", &setdebuglist),
! &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).");
next prev parent reply other threads:[~2002-01-31 2:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-23 19:29 Michael Snyder
2002-01-23 20:15 ` Andrew Cagney
2002-01-23 21:45 ` Daniel Jacobowitz
2002-01-23 23:23 ` Eli Zaretskii
2002-01-24 8:35 ` Daniel Jacobowitz
2002-01-24 8:51 ` Andrew Cagney
2002-01-24 9:14 ` Andrew Cagney
2002-01-24 9:25 ` Daniel Jacobowitz
2002-01-23 23:29 ` Stan Shebs
2002-01-24 10:40 ` Michael Snyder
2002-01-24 10:52 ` Andrew Cagney
2002-01-30 18:25 ` Michael Snyder [this message]
2002-01-31 1:03 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3C58A987.E4F85674@redhat.com \
--to=msnyder@redhat.com \
--cc=ac131313@cygnus.com \
--cc=gdb-patches@sources.redhat.com \
--cc=msnyder@cygnus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox