Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Gary Benson <gbenson@redhat.com>
To: Doug Evans <dje@google.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA take 4] Allow setting breakpoints on inline functions (PR	10738)
Date: Wed, 15 Feb 2012 12:17:00 -0000	[thread overview]
Message-ID: <20120215094752.GA2712@redhat.com> (raw)
In-Reply-To: <CADPb22TCd3xJ51S4FRStJO8YRVF8rX6FoSTVY2Tu1JvfjQpcCA@mail.gmail.com>

Doug Evans wrote:
> On Tue, Feb 14, 2012 at 1:02 AM, Gary Benson <gbenson@redhat.com> wrote:
> > Doug Evans wrote:
> > > On Mon, Feb 13, 2012 at 10:47 AM, Gary Benson <gbenson@redhat.com> wrote:
> > > > This patch makes GDB able to set breakpoints on inlined
> > > > functions.
> > > >
> > > > This version of the patch has been updated to fix the issues
> > > > Jan pointed out with the last version.
> > > >
> > > > This patch bumps the version number of the .gdb-index to 6,
> > > > but it does not remove any of the backwards compatibility code
> > > > which I would prefer to do as a separate patch.
> > >
> > > I agree support for older versions should be a separate patch.
> > > However this patch doesn't do that (it removes current
> > > acceptance of older versions of the index).
> >
> > That's correct.  The older versions do not contain partial symbols
> > for inlined functions.  If GDB were to be run on a file with an
> > older versioned index without rejecting it then the ability to set
> > breakpoints on inlined functions would silently fail.
> 
> "silently fail" as in "work *worse* than it did in previous gdb
> versions"?

It wouldn't work *worse* than previous gdb versions--it would be the
same--but it would work worse than itself.  You would have the
situation where an optimization was causing functionality to be lost,
and that doesn't seem right to me.

> While it may seem like it's always a win to just discard the index
> to get new functionality, I'm not sure all users would agree with
> that in all situations.  If gdb 7.4 startup takes 5 seconds and gdb
> 7.5 startup takes 45 seconds on the same binary, and our response to
> their complaint is that they have to rebuild the index, I'm not sure
> I'd be comfortable with that.  Especially if, for example, they're,
> say, debugging a core file and can't use the new functionality
> anyway.  ***OTOH***, if there is a functional *regression* (as
> opposed to a speed regression) then I'd be much more comfortable
> with discarding the index.
> [to repeat my question above, for clarity's sake: Is there a
> functional regression if we don't discard the index?]
> OTOOH, 1/2 :-), why must there be a functional regression? [as
> opposed to the absence of a new feature or capability]

I guess it depends on how you define a functional regression.

If you compare GDB as it is now, GDB with this patch, and GDB with
this patch minus the index version, the functionality would look
like this:

                           |   GDB    GDB         GDB
                           |   now    ver bump    no ver bump
  -------------------------+-----------------------------------
                           |
  Break on inline funcs    |   no     yes         yes
  in files without index   |
                           |
  Break on inline funcs    |   no     yes         no
  in files with old index  |          (ignored)
     	   	    	   |
  Break on inline funcs	   |   no     yes         yes
  in files with new index  |


GDB's behaviour is inconsistent if you don't rejecting the old index
files.  That seemed like a bad thing to be introducing.

> One could support the old version for a release or two, and print a
> warning when older versions are encountered.

I wondered about this myself, though it was pointed out to me that
printed warnings often get lost in the noise.

> The user's build procedure may involve building the index in a way
> that is not easily updated in a timely manner.  Thus all the speed
> improvements are (at least temporarily, but for a long enough time to
> be troublesome) wiped out simply by using a *newer* version of gdb.
> And that makes me uncomfortable.

How would it be if there the default behaviour was be to reject old
indexes (as the patch does now) but with the addition of a flag
("maint set allow-old-gdb-indexes" perhaps?) that would allow users in
this particular situation to get around it?  That way, our response to
complaints can be "rebuild the index *or* use this flag (which by the
way will lose you such and such a functionality)"  Inconsistent
behaviour doesn't seem so bad if the user asked for it.

Cheers,
Gary

-- 
http://gbenson.net/


  reply	other threads:[~2012-02-15  9:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-13 18:47 Gary Benson
2012-02-14  1:39 ` Doug Evans
2012-02-14  9:02   ` Gary Benson
2012-02-15  8:05     ` Doug Evans
2012-02-15 12:17       ` Gary Benson [this message]
2012-02-15 20:14         ` Doug Evans
2012-02-16 10:41           ` Gary Benson
2012-02-17 22:42             ` Doug Evans
2012-02-21 16:32               ` Gary Benson
2012-02-14  9:34 ` Mark Wielaard
2012-02-14  9:38   ` Jan Kratochvil
2012-02-14  9:48     ` Mark Wielaard
2012-02-14 10:51       ` Gary Benson
2012-02-14 18:04   ` 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=20120215094752.GA2712@redhat.com \
    --to=gbenson@redhat.com \
    --cc=dje@google.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