compare-sections: New -r option.
authorDavid Taylor <dtaylor@emc.com>
Thu, 1 May 2014 17:09:43 +0000 (18:09 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 1 May 2014 17:09:43 +0000 (18:09 +0100)
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
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/remote.c

index 7e5b29049e65f778e9520eb07592b1ffc02eda5e..eac603717c7e01440cfe1e4f054a7cd60dd1c8dc 100644 (file)
@@ -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,
index 2b0f686e946fa473d6cfbb7b53b1370d21af621d..1e60575a0024add96fbcfb831890e898b1a974a2 100644 (file)
@@ -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>
 
index 9d9107545df0e133f079eda2329e0f0366e32442..7f7650d75c860bc7ddfdff11a37574357988035b 100644 (file)
@@ -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
index 4177b399b34143225f15ecfddaf8bbf5d8f7b0f7..ba04d0c7cd2a387fb46b347f49afc12cd666cdc5 100644 (file)
@@ -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, _("\