From: Keith Seitz <keiths@redhat.com>
To: David Taylor <dtaylor@emc.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: RFA/remote: compare-sections
Date: Wed, 16 Apr 2014 22:46:00 -0000 [thread overview]
Message-ID: <534F0493.9040404@redhat.com> (raw)
In-Reply-To: <18733.1397666636@usendtaylorx2l>
On 04/16/2014 09:43 AM, David Taylor wrote:
> Final ping.
Hi, David,
I am really sorry that patch reviewing is going so slowly right now. It
appears the few active maintainers we have are (extremely) busy with
"work." As it is, I think maintainers are probably several /months/
behind on patch reviews. There are neither enough people to review
patches nor enough maintainers to approve patches after random folk
(like me) make recommendations.
So please don't feel that you've been singled out. It is a growing pain
that gdb is experiencing right now.
>>> 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.
This is excellent. Thank you for providing this information. I found it
very useful.
>>> 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;
>>> + }
Two (and one-half) things:
1) It was recently agreed that we would now explicitly check pointers
against NULL.
2) I think it better/more consistent to use check_for_argument (in
cli/cli-utils.[ch]) for this:
if (args != NULL
&& check_for_argument (&args, "-r", sizeof ("-r") - 1))
read_only = 1;
2.5) I'm a testing freak, so I'd really like to see is a test case.
Alas, I see that there are no tests /at all/ for compare-sections, so
that may be heaping more hardship onto this than is either necessary or
plausible. I am not going to ask you to provide one because of this, but
a global maintainer might.
In any case, with the two changes above, I recommend that this patch be
approved by a maintainer.
Keith
>>> +
>>> 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
>>>
>>
next prev parent reply other threads:[~2014-04-16 22:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-26 16:00 David Taylor
2014-03-26 17:51 ` Eli Zaretskii
2014-04-03 20:39 ` David Taylor
2014-04-04 7:54 ` Eli Zaretskii
2014-04-04 12:37 ` David Taylor
2014-04-16 16:44 ` David Taylor
2014-04-16 22:46 ` Keith Seitz [this message]
2014-05-02 0:51 ` [PATCH, doc RFA] Make compare-sections work against all targets; add, compare-sections [-r] tests Pedro Alves
2014-05-02 7:22 ` Eli Zaretskii
2014-05-20 18:17 ` Pedro Alves
2014-05-01 17:15 ` RFA/remote: compare-sections Pedro Alves
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=534F0493.9040404@redhat.com \
--to=keiths@redhat.com \
--cc=dtaylor@emc.com \
--cc=gdb-patches@sourceware.org \
/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