This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA/remote: compare-sections


ping.

David Taylor <dtaylor@emc.com> wrote:

> Motivation:
> 
> 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.
> 
> For gdb/ChangeLog:
> 
> 2014-03-26  David Taylor  <dtaylor@emc.com>
> 
> 	* remote.c (compare_sections_command): Add -r option to compare
> 	all loadable read-only sections.
> 
> For gdb/doc/ChangeLog:
> 
> 2014-03-26  David Taylor  <dtaylor@emc.com>
> 
> 	* gdb.texinfo (compare-sections): Document the new -r (read-only)
> 	option.
> 
> I'm not sure that this patch is big enough to require a copyright
> assignment, but regardless, EMC has a copyright assignment on file for
> GDB (and GCC and BINUTILS as well).
> 
> If it is approved, I will need someone else to commit it as I don't have
> write access.
> 
> Patch:
> 
> Index: gdb/remote.c
> ===================================================================
> RCS file: /home/cvsroot/GDB/gdb/remote.c,v
> retrieving revision 1.8
> diff -u -r1.8 remote.c
> --- gdb/remote.c	26 Mar 2014 14:12:34 -0000	1.8
> +++ gdb/remote.c	26 Mar 2014 15:49:40 -0000
> @@ -8664,6 +8664,7 @@
>    int matched = 0;
>    int mismatched = 0;
>    int res;
> +  int read_only = 0;
>  
>    if (!exec_bfd)
>      error (_("command cannot be used without an exec file"));
> @@ -8671,11 +8672,20 @@
>    /* Make sure the remote is pointing at the right process.  */
>    set_general_process ();
>  
> +  if (args && (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.  */
> @@ -12046,7 +12056,8 @@
>  
>    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, _("\
> Index: gdb/doc/gdb.texinfo
> ===================================================================
> RCS file: /home/cvsroot/GDB/gdb/doc/gdb.texinfo,v
> retrieving revision 1.1.1.2
> diff -u -r1.1.1.2 gdb.texinfo
> --- gdb/doc/gdb.texinfo	18 Feb 2014 15:36:03 -0000	1.1.1.2
> +++ gdb/doc/gdb.texinfo	26 Mar 2014 15:49:40 -0000
> @@ -8760,11 +8760,12 @@
>  
>  @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 Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]