RFA/remote: compare-sections
Commit Message
On 04/16/2014 05:43 PM, David Taylor wrote:
> Final ping. I initially posted this three weeks ago. Eli Zaretskii
> immediately approved the doc part. The remainder has been ignored.
> I pinged two weeks ago. The remainder continues to be unreviewed.
As Keith said. Please don't take it personally.
In his quick reply, Eli also mentioned that this warrants
a NEWS entry. I agree. But, I didn't see an updated patch.
Would you like to contribute one?
>>> 2014-03-26 David Taylor <dtaylor@emc.com>
>>>
>>> * remote.c (compare_sections_command): Add -r option to compare
>>> all loadable read-only sections.
This is OK. I've pushed it in, as below. I took the liberty of
using an explicit NULL check, and removed the redundant parens.
Thank you.
----------
>From 95cf3b38cd2fae4a53c8ff12bef21b2ae3fdd0cb Mon Sep 17 00:00:00 2001
From: David Taylor <dtaylor@emc.com>
Date: Thu, 1 May 2014 18:09:43 +0100
Subject: [PATCH] compare-sections: New -r option.
When connecting to a remote system, we use the compare-sections
command to verify that the box is running the code that we think it is
running. Since the system is up and running and *NOT* 'freshly
downloaded without yet executing anything', read-write sections, of
course, differ from what they were in the executable file.
Comparing read-write sections takes time and more importantly the
MIS-MATCHED output is confusing to some users.
The compare-sections command compares all loadable sections including
read-write sections. This patch gives the user the option to compare
just the loadable read-only sections.
gdb/
2014-05-01 David Taylor <dtaylor@emc.com>
* remote.c (compare_sections_command): Add -r option to compare
all loadable read-only sections.
gdb/doc/
2014-05-01 David Taylor <dtaylor@emc.com>
* gdb.texinfo (compare-sections): Document the new -r (read-only)
option.
---
gdb/ChangeLog | 5 +++++
gdb/doc/ChangeLog | 5 +++++
gdb/doc/gdb.texinfo | 5 +++--
gdb/remote.c | 13 ++++++++++++-
4 files changed, 25 insertions(+), 3 deletions(-)
@@ -1,3 +1,8 @@
+2014-05-01 David Taylor <dtaylor@emc.com>
+
+ * remote.c (compare_sections_command): Add -r option to compare
+ all loadable read-only sections.
+
2014-04-30 Siva Chandra Reddy <sivachandra@google.com>
* dwarf2loc.c (dwarf2_locexpr_baton_eval,
@@ -1,3 +1,8 @@
+2014-05-01 David Taylor <dtaylor@emc.com>
+
+ * gdb.texinfo (compare-sections): Document the new -r (read-only)
+ option.
+
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
@@ -8772,11 +8772,12 @@ situations.
@table @code
@kindex compare-sections
-@item compare-sections @r{[}@var{section-name}@r{]}
+@item compare-sections @r{[}@var{section-name}@r{|}@code{-r}@r{]}
Compare the data of a loadable section @var{section-name} in the
executable file of the program being debugged with the same section in
the remote machine's memory, and report any mismatches. With no
-arguments, compares all loadable sections. This command's
+arguments, compares all loadable sections. With an argument of
+@code{-r}, compares all loadable read-only sections. This command's
availability depends on the target's support for the @code{"qCRC"}
remote request.
@end table
@@ -8484,6 +8484,7 @@ compare_sections_command (char *args, int from_tty)
int matched = 0;
int mismatched = 0;
int res;
+ int read_only = 0;
if (!exec_bfd)
error (_("command cannot be used without an exec file"));
@@ -8491,11 +8492,20 @@ compare_sections_command (char *args, int from_tty)
/* Make sure the remote is pointing at the right process. */
set_general_process ();
+ if (args != NULL && strcmp (args, "-r") == 0)
+ {
+ read_only = 1;
+ args = NULL;
+ }
+
for (s = exec_bfd->sections; s; s = s->next)
{
if (!(s->flags & SEC_LOAD))
continue; /* Skip non-loadable section. */
+ if (read_only && (s->flags & SEC_READONLY) == 0)
+ continue; /* Skip writeable sections */
+
size = bfd_get_section_size (s);
if (size == 0)
continue; /* Skip zero-length section. */
@@ -11771,7 +11781,8 @@ the packets being used"),
add_cmd ("compare-sections", class_obscure, compare_sections_command, _("\
Compare section data on target to the exec file.\n\
-Argument is a single section name (default: all loaded sections)."),
+Argument is a single section name (default: all loaded sections).\n\
+To compare only read-only loaded sections, specify the -r option."),
&cmdlist);
add_cmd ("packet", class_maintenance, packet_command, _("\