public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Re: GDB/MI snapshots between major release's
       [not found] <62E49A52-1639-11D9-8F59-000A9569836A@canids.net>
@ 2004-10-04 19:54 ` Jason Molenda
  2004-10-04 21:12   ` Bob Rossi
  0 siblings, 1 reply; 40+ messages in thread
From: Jason Molenda @ 2004-10-04 19:54 UTC (permalink / raw)
  To: Felix Lee; +Cc: gdb

On Mon, Oct 04, 2004 at 11:12:01AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > With the information I have now, here is the problem. A snapshot of GDB
> > will say that it is at MI4, although, it is really at some
> > developmental version.
> 
> does that ever happen? if gdb says it supports MI4 but it
> doesn't really, then it's lying, and that's a bug. 

For what it's worth, Bob does have a point here.

When an incompatible change to MI is made, the version # is bumped.
From that point in time until the new MI version is "finalized",
it's usually a free-for-all to add whatever changes you want into
the new MI version.

I don't know if there's an official way of telling whether a
particular MI version has been finalized -- personally, I think of
the highest MI version as being the in-development one, which is
subject to change.

I don't really agree with the problem Bob is pointing out,
personally.  If I were writing a front end, I'd target the
highest stable version I can rely on (these days that would
be MI2), and use that.  Or if I didn't really need the changes
in MI2, I'd target MI1.

I do see some legitimate problems that Bob is raising.

 1. I don't know of an official way to tell if an MI command set
    has been finalized.  The policy I outlined above -- the highest
    # MI command set is in development, until the version # is bumped --
    is my own understanding, but it might be wrong.

 2. There isn't any way for a front end developer to tell exactly
    what the MI differences are without looking at the source.  I
    know old gdb releases' documentation should make this clear,
    but I'd be surprised if it's really clear enough to write an
    implementation from.

 3. Is there a guarantee that old MI interfaces will be supported?
    Or will we wake up to find gdb 6.3 has deprecated, e.g. MI1, and
    scheduled it for purging?

Realistically, the changes to MI are not dramatic; they're almost
always additions that can be ignored if the front end wasn't expecting
them -- that was the whole point of the MI output design.  The most
obvious break was mi0 vs mi1, but that was a long time ago.

On the other hand, the reason the MI interface has been so stable is
(IMHO) because there are so few shipping FEs that use it.  Apple has
one, and we've got quite a large number of changes in the MI.  I
understand Eclipse is now using it -- the resurgance of work on the
FSF gdb MI interface these past couple years is the evidence of that.
As more FEs start using MI, I expect there to be more changes, or
at least more requests for changes, to the protocol.  And so these
sorts of issues could legitimately be important to set down.

Jason

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 19:54 ` GDB/MI snapshots between major release's Jason Molenda
@ 2004-10-04 21:12   ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 21:12 UTC (permalink / raw)
  To: Jason Molenda; +Cc: Felix Lee, gdb

On Mon, Oct 04, 2004 at 12:24:39PM -0700, Jason Molenda wrote:
> On Mon, Oct 04, 2004 at 11:12:01AM -0700, Felix Lee wrote:
> > Bob Rossi <bob@brasko.net>:
> > > With the information I have now, here is the problem. A snapshot of GDB
> > > will say that it is at MI4, although, it is really at some
> > > developmental version.
> > 
> > does that ever happen? if gdb says it supports MI4 but it
> > doesn't really, then it's lying, and that's a bug. 
> 
> For what it's worth, Bob does have a point here.
> 
> When an incompatible change to MI is made, the version # is bumped.
> >From that point in time until the new MI version is "finalized",
> it's usually a free-for-all to add whatever changes you want into
> the new MI version.
> 
> I don't know if there's an official way of telling whether a
> particular MI version has been finalized -- personally, I think of
> the highest MI version as being the in-development one, which is
> subject to change.
> 
> I don't really agree with the problem Bob is pointing out,
> personally.  If I were writing a front end, I'd target the
> highest stable version I can rely on (these days that would
> be MI2), and use that.  Or if I didn't really need the changes
> in MI2, I'd target MI1.

Yes yes, of course I am going to try to target the highest protocol that
the current GDB supports. The first implementation I write will be MI2.
The whole point of this thread is basically to figure out from GDB what
the highest stable protocol of MI that it supports is, and use it. I
want to be able to determine this even if GDB is not an official
release, but just a CVS snapshot.

> I do see some legitimate problems that Bob is raising.
> 
>  1. I don't know of an official way to tell if an MI command set
>     has been finalized.  The policy I outlined above -- the highest
>     # MI command set is in development, until the version # is bumped --
>     is my own understanding, but it might be wrong.

I basically need from GDB all of the MI versions that it supports. This
list should not include a development version of the MI protocol, that
is currently being worked on. If you have a CVS snapshot you currently
have no way of knowing that the highest MI protocol number is a
development version, and not an official release.

>  2. There isn't any way for a front end developer to tell exactly
>     what the MI differences are without looking at the source.  I
>     know old gdb releases' documentation should make this clear,
>     but I'd be surprised if it's really clear enough to write an
>     implementation from.

This is true, I would already have a hard time write an MI protocol
implementation. I really think at least having the differences from the
last protocol would be a big help. At least that way, I could start with
MI3, and then when MI4 comes around, I could see a list of
incompatibilites. The real answer to me would be to have a list of all
the MI protocols documented in every release. Especially since they are
backwards compatible, and GDB still supports them. Maybe things like
have the MI commands list what version of MI they appeared in.

>  3. Is there a guarantee that old MI interfaces will be supported?
>     Or will we wake up to find gdb 6.3 has deprecated, e.g. MI1, and
>     scheduled it for purging?

This is what I need to know.

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 18:41   ` Felix Lee
@ 2004-10-06 18:50     ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-06 18:50 UTC (permalink / raw)
  To: Felix Lee; +Cc: Eli Zaretskii, drow, gdb

On Wed, Oct 06, 2004 at 11:30:20AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > You obviously not understanding the point here. I can not even get my
> > front end to the point where it can look at the command. The reason is,
> > I can not *PARSE* the command. 
> 
> mostly, I don't understand why you feel you need to parse a
> command before understanding it, when the command is something
> simple like a 'who are you?' challenge/response.  most programs
> that can speak to different clients will do some dynamic
> adaptation of protocol based on interaction with the client.
> it's not clear to me why you want to do it differently.
> 
> > Therefor, I don't have a parse tree, and can not even begin to
> > understand what MI output command GDB just sent to me.
> 
> this seems to be the miscommunication going on.  I don't think I
> need a parse tree to begin understanding output, and it's not
> clear to me what programming model you're using that makes it
> hard to do simple output recognition without a parse tree.
> --

It's simply incorrect in my view to add the command to the MI command
set if no one expects you to use MI to use it. This is wierd.

I want to be able to use my MI parser's to read the MI protocol.

Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
                     ` (7 preceding siblings ...)
  2004-10-06 17:14   ` Felix Lee
@ 2004-10-06 18:41   ` Felix Lee
  2004-10-06 18:50     ` Bob Rossi
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-06 18:41 UTC (permalink / raw)
  To: Eli Zaretskii, drow, gdb

Bob Rossi <bob@brasko.net>:
> You obviously not understanding the point here. I can not even get my
> front end to the point where it can look at the command. The reason is,
> I can not *PARSE* the command. 

mostly, I don't understand why you feel you need to parse a
command before understanding it, when the command is something
simple like a 'who are you?' challenge/response.  most programs
that can speak to different clients will do some dynamic
adaptation of protocol based on interaction with the client.
it's not clear to me why you want to do it differently.

> Therefor, I don't have a parse tree, and can not even begin to
> understand what MI output command GDB just sent to me.

this seems to be the miscommunication going on.  I don't think I
need a parse tree to begin understanding output, and it's not
clear to me what programming model you're using that makes it
hard to do simple output recognition without a parse tree.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found]       ` <drow@false.org>
@ 2004-10-06 17:58         ` Felix Lee
  0 siblings, 0 replies; 40+ messages in thread
From: Felix Lee @ 2004-10-06 17:58 UTC (permalink / raw)
  To: gdb

Daniel Jacobowitz <drow@false.org>:
> Actually, I doubt GDB will continue to support old MI versions
> indefinitely.  It may be very hard.  For instance, at some point we may
> report multiple events to the front end at once (from different
> threads); or multiple addresses associated with a breakpoint.  Faking
> an old interface will not be worth the trouble.

> I expect there will be points at which front ends will have to be
> updated to talk to a new GDB.

right.  if it's too hard to support an old MI, any front-end
using the old MI will have the wrong model of interaction with
gdb, so the front-end will need substantial work to talk to the
new gdb no matter what, so that's not a problem either.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 17:14   ` Felix Lee
@ 2004-10-06 17:21     ` Daniel Jacobowitz
       [not found]       ` <drow@false.org>
  0 siblings, 1 reply; 40+ messages in thread
From: Daniel Jacobowitz @ 2004-10-06 17:21 UTC (permalink / raw)
  To: Felix Lee; +Cc: gdb

On Wed, Oct 06, 2004 at 10:12:53AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > If at some point, GDB decides not to honor MI2 anymore, I need to make
> > sure that I know that. If my front end only supports MI2, and GDB
> > supports only MI3, than the function you are suggesting will not be good
> > enough for me.
> 
> I think there's no chance that situation will occur.
> 
> if sometime in the future gdb stops honoring MI7, then presumably
> it honors a newer version, MI21.  since your front-end knows
> about MI21, then you don't care that MI7 is gone.  so that's not
> a problem.
> 
> if MI7 is the only version that a front-end knows, then that's a
> strong argument against removing MI7, so that's not a problem
> either.

Actually, I doubt GDB will continue to support old MI versions
indefinitely.  It may be very hard.  For instance, at some point we may
report multiple events to the front end at once (from different
threads); or multiple addresses associated with a breakpoint.  Faking
an old interface will not be worth the trouble.

I expect there will be points at which front ends will have to be
updated to talk to a new GDB.

-- 
Daniel Jacobowitz

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
                     ` (6 preceding siblings ...)
  2004-10-04 21:07   ` Felix Lee
@ 2004-10-06 17:14   ` Felix Lee
  2004-10-06 17:21     ` Daniel Jacobowitz
  2004-10-06 18:41   ` Felix Lee
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-06 17:14 UTC (permalink / raw)
  To: gdb

Bob Rossi <bob@brasko.net>:
> If at some point, GDB decides not to honor MI2 anymore, I need to make
> sure that I know that. If my front end only supports MI2, and GDB
> supports only MI3, than the function you are suggesting will not be good
> enough for me.

I think there's no chance that situation will occur.

if sometime in the future gdb stops honoring MI7, then presumably
it honors a newer version, MI21.  since your front-end knows
about MI21, then you don't care that MI7 is gone.  so that's not
a problem.

if MI7 is the only version that a front-end knows, then that's a
strong argument against removing MI7, so that's not a problem
either.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 17:00                     ` Paul Koning
@ 2004-10-06 17:02                       ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-06 17:02 UTC (permalink / raw)
  To: Paul Koning; +Cc: eliz, drow, gdb

On Wed, Oct 06, 2004 at 12:57:40PM -0400, Paul Koning wrote:
> >>>>> "Bob" == Bob Rossi <bob@brasko.net> writes:
> 
>  Bob> On Wed, Oct 06, 2004 at 02:26:55PM +0200, Eli Zaretskii wrote:
>  >> > Date: Wed, 6 Oct 2004 07:27:03 -0400 > From: Bob Rossi
>  >> <bob@brasko.net> > Cc: Daniel Jacobowitz <drow@false.org>,
>  >> gdb@sources.redhat.com
>  >> > 
>  >> > > First, it is possible that when the front end knows which MI
>  >> version > > is the last stable one, it will not need to restart
>  >> GDB, but just > > arrange for the appropriate parser to be used
>  >> for the rest of the > > session.
>  >> > 
>  >> > This is not correct. The front end has parsers for different
>  >> versions of > GDB's MI protocol. The parser for MI2 will not work
>  >> for the MI3 protocol
>  >> 
>  >> In general, it won't, but for a very specific case of
>  >> _a_single_command_, it could very well do.
> 
>  Bob> You obviously not understanding the point here. I can not even
>  Bob> get my front end to the point where it can look at the
>  Bob> command. The reason is, I can not *PARSE* the command.
> 
>  Bob> Here is a simple explanation that I have tried to discuss over
>  Bob> and over.
>    
>  Bob> 1. Each version of MI comes with a grammar.  2. If the MI
>  Bob> grammar changes between MI1 and MI2 then 3. A parser is
>  Bob> generated that understands the grammar for MI1 4. A parser is
>  Bob> generated that understands the grammar for MI2 5. The parser for
>  Bob> MI1 *will not parse* the output of MI2 6. The parser for MI2
>  Bob> *will not parse* the output of MI1
> 
> I'm puzzled.  If MI2 is a superset of MI1, then the parser for MI2 by
> definition will parse any string in MI1.  And generalizing, unless MI1
> and MI2 have essentially nothing in common, I don't see how it can be
> true that you cannot parse any command at all.
> 
> Just as in any protocol, you need version numbers to cope with the
> situation where a new MIx is NOT just a superset of MI<x-1>.  But the
> usual picture of protocol evolution is that those cases are not all
> that common -- most evoluation creates supersets.

Paul, you are almost correct, but you are not. The MIx is not a superset
of an MI<x-1>. They are incompatible. That is the problem.

Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 16:55                   ` Bob Rossi
@ 2004-10-06 17:00                     ` Paul Koning
  2004-10-06 17:02                       ` Bob Rossi
  0 siblings, 1 reply; 40+ messages in thread
From: Paul Koning @ 2004-10-06 17:00 UTC (permalink / raw)
  To: bob; +Cc: eliz, drow, gdb

>>>>> "Bob" == Bob Rossi <bob@brasko.net> writes:

 Bob> On Wed, Oct 06, 2004 at 02:26:55PM +0200, Eli Zaretskii wrote:
 >> > Date: Wed, 6 Oct 2004 07:27:03 -0400 > From: Bob Rossi
 >> <bob@brasko.net> > Cc: Daniel Jacobowitz <drow@false.org>,
 >> gdb@sources.redhat.com
 >> > 
 >> > > First, it is possible that when the front end knows which MI
 >> version > > is the last stable one, it will not need to restart
 >> GDB, but just > > arrange for the appropriate parser to be used
 >> for the rest of the > > session.
 >> > 
 >> > This is not correct. The front end has parsers for different
 >> versions of > GDB's MI protocol. The parser for MI2 will not work
 >> for the MI3 protocol
 >> 
 >> In general, it won't, but for a very specific case of
 >> _a_single_command_, it could very well do.

 Bob> You obviously not understanding the point here. I can not even
 Bob> get my front end to the point where it can look at the
 Bob> command. The reason is, I can not *PARSE* the command.

 Bob> Here is a simple explanation that I have tried to discuss over
 Bob> and over.
   
 Bob> 1. Each version of MI comes with a grammar.  2. If the MI
 Bob> grammar changes between MI1 and MI2 then 3. A parser is
 Bob> generated that understands the grammar for MI1 4. A parser is
 Bob> generated that understands the grammar for MI2 5. The parser for
 Bob> MI1 *will not parse* the output of MI2 6. The parser for MI2
 Bob> *will not parse* the output of MI1

I'm puzzled.  If MI2 is a superset of MI1, then the parser for MI2 by
definition will parse any string in MI1.  And generalizing, unless MI1
and MI2 have essentially nothing in common, I don't see how it can be
true that you cannot parse any command at all.

Just as in any protocol, you need version numbers to cope with the
situation where a new MIx is NOT just a superset of MI<x-1>.  But the
usual picture of protocol evolution is that those cases are not all
that common -- most evoluation creates supersets.

(And incidentally, a version numbering scheme would have to rely on
the restriction that a certain defined part of the protocol is
immutable, or at least allows no changes other than supersetting --
and that part conveys version information.)

     paul

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 13:19                 ` Eli Zaretskii
@ 2004-10-06 16:55                   ` Bob Rossi
  2004-10-06 17:00                     ` Paul Koning
  0 siblings, 1 reply; 40+ messages in thread
From: Bob Rossi @ 2004-10-06 16:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: drow, gdb

On Wed, Oct 06, 2004 at 02:26:55PM +0200, Eli Zaretskii wrote:
> > Date: Wed, 6 Oct 2004 07:27:03 -0400
> > From: Bob Rossi <bob@brasko.net>
> > Cc: Daniel Jacobowitz <drow@false.org>, gdb@sources.redhat.com
> > 
> > > First, it is possible that when the front end knows which MI version
> > > is the last stable one, it will not need to restart GDB, but just
> > > arrange for the appropriate parser to be used for the rest of the
> > > session.
> > 
> > This is not correct. The front end has parsers for different versions of
> > GDB's MI protocol. The parser for MI2 will not work for the MI3 protocol
> 
> In general, it won't, but for a very specific case of _a_single_command_,
> it could very well do.  

You obviously not understanding the point here. I can not even get my
front end to the point where it can look at the command. The reason is,
I can not *PARSE* the command. 

Here is a simple explanation that I have tried to discuss over and over.
   
   1. Each version of MI comes with a grammar.
   2. If the MI grammar changes between MI1 and MI2 then
   3. A parser is generated that understands the grammar for MI1
   4. A parser is generated that understands the grammar for MI2
   5. The parser for MI1 *will not parse* the output of MI2
   6. The parser for MI2 *will not parse* the output of MI1

Therefor, I don't have a parse tree, and can not even begin to
understand what MI output command GDB just sent to me. There is no
"specific case", where a front end could understand
"_a_single_command_".

This is a very simple issue I am discussing here and I expect people to
understand what I am saying.

> Obviously, we will need to agree to _never_ 
> change the syntax of the output of that command once it is introduced,
> but that is all we need to do to make sure _every_ MI parser henceforth
> will understand that command's output.

You are ready to guarentee that the MI output syntax (grammar) will
never change? This has nothing to do with the way the MI output command
lists the versions (field names, ... ).

> > The front end *can not* start up GDB just by using -interpreter=mi
> > because it doesn't know what parser to use in this situation.
> > Can we agree on this point for starters?
> 
> Obviously, I disagree: if the syntax of what that command outputs does
> not change, you should be able to use _any_ MI parser that knows about
> this command; in particularly, the latest MI parser will do, so
> invoking GDB with "-interpreter=mi" will solve the problem.  Can we
> agree on this point?

Are you saying that the MI output syntax wil never change? I doubt you
can make this promise.

> > > > I also like the idea of listing non-MI (which right now means annotate)
> > > > protocols in the same output.
> > > 
> > > Does some front end need that?  If not, why introduce unneeded
> > > generalizations?  
> > 
> > Yes, of course they do :)
> > xxgdb, ddd, gvd, ...
> > They all use annotations and they all assume annotate 1 is around. As
> > soon as you pull annotate 1, they will all have the same problem.
> 
> So how these front ends solve this problem now?

They assume annotate 1 is there, since it's 10 years old or so.
If it's not there, you probably will get random results.

> > > I actually think that the output of the feature we
> > > are discussing needs to be a single string: the latest version of MI
> > > supported by this GDB that is known to be stable.  Given that info,
> > > the front end should be able to figure out all the stable versions it
> > > can use: they are those whose version numbers are below the latest
> > > stable one.
> > 
> > This is wrong. I *need* the output to have *all* the versions of MI that
> > the current GDB supports. I need this for a very very simple reason. I
> > need to make sure that my front ends that don't support the current
> > official release of GDB can start GDB in the highest mode it supports.
> 
> I still don't see the problem, sorry.  Your front end surely knows (or
> can know) what is the latest MI version it supports, right?  If so,
> the following simple algorithm should do what you want:
> 
>   get the latest stable MI version from GDB, call it $mi-ver
>   if $mi-ver is greater than N, the latest MI version supported by the front-end
>     then restart GDB with "-interpreter=miN"
>     else either set up to use the parser for $mi-ver
>          or restart GDB with "-interpreter=mi"
>   endif
> 
> What am I missing?

You are missing elegance. It is a "first approach" to start GDB in every
MI mode from the highest one that the front end supports down. It would
be much more elegant to just ask GDB what versions of MI it supported.
As front ends scale, it could have to start GDB 10 times to figure out
what MI protocol it supports, even then, you wouldn't know if it was a
development protocol or not.

> > If at some point, GDB decides not to honor MI2 anymore, I need to make
> > sure that I know that. If my front end only supports MI2, and GDB
> > supports only MI3, than the function you are suggesting will not be good
> > enough for me.
> 
> If that happens, invoking GDB with "-interpreter=mi2" will exit with a
> failure status and print an error message.  That should be enough for
> the front end to say that it cannot work with such a GDB, if MI2 is
> the only MI version the front end understands.  Still no problem that
> I see; do you?

I understand your point here. I still think if we are going to put the
last officially released version, it would just be nice and easy to put
them all.

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 11:39               ` Bob Rossi
@ 2004-10-06 13:19                 ` Eli Zaretskii
  2004-10-06 16:55                   ` Bob Rossi
  0 siblings, 1 reply; 40+ messages in thread
From: Eli Zaretskii @ 2004-10-06 13:19 UTC (permalink / raw)
  To: Bob Rossi; +Cc: drow, gdb

> Date: Wed, 6 Oct 2004 07:27:03 -0400
> From: Bob Rossi <bob@brasko.net>
> Cc: Daniel Jacobowitz <drow@false.org>, gdb@sources.redhat.com
> 
> > First, it is possible that when the front end knows which MI version
> > is the last stable one, it will not need to restart GDB, but just
> > arrange for the appropriate parser to be used for the rest of the
> > session.
> 
> This is not correct. The front end has parsers for different versions of
> GDB's MI protocol. The parser for MI2 will not work for the MI3 protocol

In general, it won't, but for a very specific case of _a_single_command_,
it could very well do.  Obviously, we will need to agree to _never_ 
change the syntax of the output of that command once it is introduced,
but that is all we need to do to make sure _every_ MI parser henceforth
will understand that command's output.

> The front end *can not* start up GDB just by using -interpreter=mi
> because it doesn't know what parser to use in this situation.
> Can we agree on this point for starters?

Obviously, I disagree: if the syntax of what that command outputs does
not change, you should be able to use _any_ MI parser that knows about
this command; in particularly, the latest MI parser will do, so
invoking GDB with "-interpreter=mi" will solve the problem.  Can we
agree on this point?

> > > I also like the idea of listing non-MI (which right now means annotate)
> > > protocols in the same output.
> > 
> > Does some front end need that?  If not, why introduce unneeded
> > generalizations?  
> 
> Yes, of course they do :)
> xxgdb, ddd, gvd, ...
> They all use annotations and they all assume annotate 1 is around. As
> soon as you pull annotate 1, they will all have the same problem.

So how these front ends solve this problem now?

> > I actually think that the output of the feature we
> > are discussing needs to be a single string: the latest version of MI
> > supported by this GDB that is known to be stable.  Given that info,
> > the front end should be able to figure out all the stable versions it
> > can use: they are those whose version numbers are below the latest
> > stable one.
> 
> This is wrong. I *need* the output to have *all* the versions of MI that
> the current GDB supports. I need this for a very very simple reason. I
> need to make sure that my front ends that don't support the current
> official release of GDB can start GDB in the highest mode it supports.

I still don't see the problem, sorry.  Your front end surely knows (or
can know) what is the latest MI version it supports, right?  If so,
the following simple algorithm should do what you want:

  get the latest stable MI version from GDB, call it $mi-ver
  if $mi-ver is greater than N, the latest MI version supported by the front-end
    then restart GDB with "-interpreter=miN"
    else either set up to use the parser for $mi-ver
         or restart GDB with "-interpreter=mi"
  endif

What am I missing?

> If at some point, GDB decides not to honor MI2 anymore, I need to make
> sure that I know that. If my front end only supports MI2, and GDB
> supports only MI3, than the function you are suggesting will not be good
> enough for me.

If that happens, invoking GDB with "-interpreter=mi2" will exit with a
failure status and print an error message.  That should be enough for
the front end to say that it cannot work with such a GDB, if MI2 is
the only MI version the front end understands.  Still no problem that
I see; do you?

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-06 11:14             ` Eli Zaretskii
@ 2004-10-06 11:39               ` Bob Rossi
  2004-10-06 13:19                 ` Eli Zaretskii
  0 siblings, 1 reply; 40+ messages in thread
From: Bob Rossi @ 2004-10-06 11:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Daniel Jacobowitz, gdb

On Wed, Oct 06, 2004 at 12:15:40PM +0200, Eli Zaretskii wrote:
> > Date: Tue, 5 Oct 2004 10:07:36 -0400
> > From: Daniel Jacobowitz <drow@false.org>
> > Cc: Bob Rossi <bob@brasko.net>, kettenis@gnu.org, gdb@sources.redhat.com
> > 
> > I think using a command line switch makes sense.  You're going to have
> > to restart GDB to change MI protocols anyway, so why force the user to
> > go into MI?
> 
> First, it is possible that when the front end knows which MI version
> is the last stable one, it will not need to restart GDB, but just
> arrange for the appropriate parser to be used for the rest of the
> session.

This is not correct. The front end has parsers for different versions of
GDB's MI protocol. The parser for MI2 will not work for the MI3 protocol
The front end *can not* start up GDB just by using -interpreter=mi
because it doesn't know what parser to use in this situation.
Can we agree on this point for starters?

This is why there needs to be a non-MI command to figure out what MI
versions the current GDB supports.

> A downside of the command-line option that I very much don't like is
> that command-line options are mainly for the human users and are
> documented in a special section that describes how to run GDB, not how
> to use the MI interpreter.

Yes, this is a downside, but I don't think your MI solution is quite
ready for use, however, maybe we could come up with something better
still.

> > I also like the idea of listing non-MI (which right now means annotate)
> > protocols in the same output.
> 
> Does some front end need that?  If not, why introduce unneeded
> generalizations?  

Yes, of course they do :)
xxgdb, ddd, gvd, ...
They all use annotations and they all assume annotate 1 is around. As
soon as you pull annotate 1, they will all have the same problem.

Emacs uses annotate 1, probably annotate 2 at some version and now
annotate 3 at some version. Also, I believe it's moving into the MI
realm .... what a mess ...

> I actually think that the output of the feature we
> are discussing needs to be a single string: the latest version of MI
> supported by this GDB that is known to be stable.  Given that info,
> the front end should be able to figure out all the stable versions it
> can use: they are those whose version numbers are below the latest
> stable one.

This is wrong. I *need* the output to have *all* the versions of MI that
the current GDB supports. I need this for a very very simple reason. I
need to make sure that my front ends that don't support the current
official release of GDB can start GDB in the highest mode it supports.

If at some point, GDB decides not to honor MI2 anymore, I need to make
sure that I know that. If my front end only supports MI2, and GDB
supports only MI3, than the function you are suggesting will not be good
enough for me.

Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-05 14:18           ` Daniel Jacobowitz
  2004-10-06  1:40             ` Bob Rossi
@ 2004-10-06 11:14             ` Eli Zaretskii
  2004-10-06 11:39               ` Bob Rossi
  1 sibling, 1 reply; 40+ messages in thread
From: Eli Zaretskii @ 2004-10-06 11:14 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: bob, gdb

> Date: Tue, 5 Oct 2004 10:07:36 -0400
> From: Daniel Jacobowitz <drow@false.org>
> Cc: Bob Rossi <bob@brasko.net>, kettenis@gnu.org, gdb@sources.redhat.com
> 
> I think using a command line switch makes sense.  You're going to have
> to restart GDB to change MI protocols anyway, so why force the user to
> go into MI?

First, it is possible that when the front end knows which MI version
is the last stable one, it will not need to restart GDB, but just
arrange for the appropriate parser to be used for the rest of the
session.

And second, even if you do need to restart, it makes sense to have
this command in the MI so that the same parser could be used to do
the job of finding the MI version(s) as well, instead of having a
special code that parses the ouput of a command-line option.

A downside of the command-line option that I very much don't like is
that command-line options are mainly for the human users and are
documented in a special section that describes how to run GDB, not how
to use the MI interpreter.

> I also like the idea of listing non-MI (which right now means annotate)
> protocols in the same output.

Does some front end need that?  If not, why introduce unneeded
generalizations?  I actually think that the output of the feature we
are discussing needs to be a single string: the latest version of MI
supported by this GDB that is known to be stable.  Given that info,
the front end should be able to figure out all the stable versions it
can use: they are those whose version numbers are below the latest
stable one.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-05 14:18           ` Daniel Jacobowitz
@ 2004-10-06  1:40             ` Bob Rossi
  2004-10-06 11:14             ` Eli Zaretskii
  1 sibling, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-06  1:40 UTC (permalink / raw)
  To: Eli Zaretskii, kettenis, gdb

On Tue, Oct 05, 2004 at 10:07:36AM -0400, Daniel Jacobowitz wrote:
> On Tue, Oct 05, 2004 at 11:14:44AM +0200, Eli Zaretskii wrote:
> > > Date: Mon, 4 Oct 2004 11:58:05 -0400
> > > From: Bob Rossi <bob@brasko.net>
> > > Cc: eliz@gnu.org, gdb@sources.redhat.com
> > > 
> > > OK, this is good news. So basically, even thought the MI version is
> > > bumped it is still not official. Meaning, at that point, if I updated my
> > > front end to be compatible with the new MI protocol version, there could
> > > still be another incompatible change before the release. Meaning, I
> > > would have to wait for the release to get the use out of that new
> > > version. This is OK with me as long as,
> > > 
> > >    - I can have the --mi-protocols command line switch that tells me 
> > >    what version of GDB/MI protocol is officially supported.
> > > 
> > >    - This command line switch only has MI protocols added to it when the 
> > >    MI protocols become official ( for a release )
> > 
> > We could do that, but I still think an MI command is a better vehicle
> > for such a feature.
> 
> I think using a command line switch makes sense.  You're going to have
> to restart GDB to change MI protocols anyway, so why force the user to
> go into MI?
> 
> I also like the idea of listing non-MI (which right now means annotate)
> protocols in the same output.

Have we come to a resolution that a command like this is necessary? 

I basically need it to query GDB to determine what MI versions it
officially supports.

It would satisfy my needs from GDB, but what about others?

Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-05 10:57         ` Eli Zaretskii
@ 2004-10-05 14:18           ` Daniel Jacobowitz
  2004-10-06  1:40             ` Bob Rossi
  2004-10-06 11:14             ` Eli Zaretskii
  0 siblings, 2 replies; 40+ messages in thread
From: Daniel Jacobowitz @ 2004-10-05 14:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Bob Rossi, kettenis, gdb

On Tue, Oct 05, 2004 at 11:14:44AM +0200, Eli Zaretskii wrote:
> > Date: Mon, 4 Oct 2004 11:58:05 -0400
> > From: Bob Rossi <bob@brasko.net>
> > Cc: eliz@gnu.org, gdb@sources.redhat.com
> > 
> > OK, this is good news. So basically, even thought the MI version is
> > bumped it is still not official. Meaning, at that point, if I updated my
> > front end to be compatible with the new MI protocol version, there could
> > still be another incompatible change before the release. Meaning, I
> > would have to wait for the release to get the use out of that new
> > version. This is OK with me as long as,
> > 
> >    - I can have the --mi-protocols command line switch that tells me 
> >    what version of GDB/MI protocol is officially supported.
> > 
> >    - This command line switch only has MI protocols added to it when the 
> >    MI protocols become official ( for a release )
> 
> We could do that, but I still think an MI command is a better vehicle
> for such a feature.

I think using a command line switch makes sense.  You're going to have
to restart GDB to change MI protocols anyway, so why force the user to
go into MI?

I also like the idea of listing non-MI (which right now means annotate)
protocols in the same output.

-- 
Daniel Jacobowitz

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-05  9:18         ` Eli Zaretskii
@ 2004-10-05 13:37           ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-05 13:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Fabian Cenedese, gdb

On Tue, Oct 05, 2004 at 11:06:59AM +0200, Eli Zaretskii wrote:
> > Date: Tue, 05 Oct 2004 08:59:32 +0200
> > From: Fabian Cenedese <Cenedese@indel.ch>
> > 
> > One thing that could be added is that -i mi doesn't mean the last
> > one (like mi2 now) but the last official one. So if there will be a
> > mi3 in progress mi will still select mi2.  Like that you will always
> > be using the last stable protocol. And others can work with the
> > development version by calling -i mi3. But that won't solve your
> > problem of knowing what mi version the last stable really is.
> 
> Knowing which MI version is the last stable one is important, but it's
> a separate issue.  Do we all agree that for official GDB releases the
> problem of MI versions is solved by the features that we already have,
> or do someone think that a feature that reports supported MI versions
> is still needed even for the official releases?  Let's solve the
> situation with official releases first, and get to the development
> versions later.

I didn't think there was a problem with using a GDB stable version MI
protocol. This I expected to work the way the documentation described.
I started this thread to figure out how to deal with development
versions which were a side effect of using CVS snapshot's of GDB.

However, I still think that it is necessary to know the supported MI
versions, if the GDB is a stable or a development version.
I started the thread, 
"probing GDB for MI versions"
http://sources.redhat.com/ml/gdb/2004-10/msg00027.html
to resolve this issue (you obviously already know about this, but other
people might not)

It is a requirement of the front end to figure out the highest common MI
protocol that both it and GDB speek. This needs to be done before any
communication can occur between GDB and the front end.

> As for the problem with development versions, I think it's part of a
> larger problem: how can one know that a certain snapshot is stable
> enough to make it available to users?  

I do not know how to answer this question, and I assume that using a CVS
snapshot means that the MI protocol is under development and that it
should not be used.

> The stability of MI is a
> relatively small aspect of this larger problem, and there's always the
> solution suggested by Jason (I think): use the latest stable version
> of MI, the one released with the last official GDB version.

This seems like a good idea to me. I think that we have come to the
conclusion that the cutting edg MI protocol that comes with a CVS snapshots 
of GDB should not be used. It is essential that the front end can figure
out the last stable version of MI that was supported.

Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 16:04       ` Bob Rossi
@ 2004-10-05 10:57         ` Eli Zaretskii
  2004-10-05 14:18           ` Daniel Jacobowitz
  0 siblings, 1 reply; 40+ messages in thread
From: Eli Zaretskii @ 2004-10-05 10:57 UTC (permalink / raw)
  To: Bob Rossi; +Cc: kettenis, gdb

> Date: Mon, 4 Oct 2004 11:58:05 -0400
> From: Bob Rossi <bob@brasko.net>
> Cc: eliz@gnu.org, gdb@sources.redhat.com
> 
> OK, this is good news. So basically, even thought the MI version is
> bumped it is still not official. Meaning, at that point, if I updated my
> front end to be compatible with the new MI protocol version, there could
> still be another incompatible change before the release. Meaning, I
> would have to wait for the release to get the use out of that new
> version. This is OK with me as long as,
> 
>    - I can have the --mi-protocols command line switch that tells me 
>    what version of GDB/MI protocol is officially supported.
> 
>    - This command line switch only has MI protocols added to it when the 
>    MI protocols become official ( for a release )

We could do that, but I still think an MI command is a better vehicle
for such a feature.

> Is this your view or the view of GDB/MI's maintainers also?

I'm not an MI maintainer, but I fully agree with Mark, FWIW.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-05  9:03       ` Fabian Cenedese
@ 2004-10-05  9:18         ` Eli Zaretskii
  2004-10-05 13:37           ` Bob Rossi
  0 siblings, 1 reply; 40+ messages in thread
From: Eli Zaretskii @ 2004-10-05  9:18 UTC (permalink / raw)
  To: Fabian Cenedese; +Cc: gdb

> Date: Tue, 05 Oct 2004 08:59:32 +0200
> From: Fabian Cenedese <Cenedese@indel.ch>
> 
> One thing that could be added is that -i mi doesn't mean the last
> one (like mi2 now) but the last official one. So if there will be a
> mi3 in progress mi will still select mi2.  Like that you will always
> be using the last stable protocol. And others can work with the
> development version by calling -i mi3. But that won't solve your
> problem of knowing what mi version the last stable really is.

Knowing which MI version is the last stable one is important, but it's
a separate issue.  Do we all agree that for official GDB releases the
problem of MI versions is solved by the features that we already have,
or do someone think that a feature that reports supported MI versions
is still needed even for the official releases?  Let's solve the
situation with official releases first, and get to the development
versions later.

As for the problem with development versions, I think it's part of a
larger problem: how can one know that a certain snapshot is stable
enough to make it available to users?  The stability of MI is a
relatively small aspect of this larger problem, and there's always the
solution suggested by Jason (I think): use the latest stable version
of MI, the one released with the last official GDB version.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 22:14     ` Bob Rossi
@ 2004-10-05  9:03       ` Fabian Cenedese
  2004-10-05  9:18         ` Eli Zaretskii
  0 siblings, 1 reply; 40+ messages in thread
From: Fabian Cenedese @ 2004-10-05  9:03 UTC (permalink / raw)
  To: gdb

At 17:27 04.10.2004 -0400, Bob Rossi wrote:
>On Mon, Oct 04, 2004 at 01:53:57PM -0700, Felix Lee wrote:
>> why would that happen?  I expect 'create a new MI version' to be
>> basically an atomic change.  like, someone experiments with MI11
>> on a branch, then merges it into the trunk when it's stable and
>> tests reasonable cleanly.
>
>This is frustrating to me, does anyone understand the problem that I am
>describing? Maybe it could be said in a better way.

I do, though I haven't a solution either.

>Basically, a given GDB (from an official release) supports several MI protocols.
>A given GDB from a CVS snapshot supports several MI protocols and 1
>unsupported protocol.
>
>The 1 unsupported protocol is the problem. 

One thing that could be added is that -i mi doesn't mean the last one (like mi2 now)
but the last official one. So if there will be a mi3 in progress mi will still select mi2.
Like that you will always be using the last stable protocol. And others can work
with the development version by calling -i mi3. But that won't solve your problem
of knowing what mi version the last stable really is.

>During development, the first incompatible change forces the MI version
>number to be bumped. Every incompatible change after that does not
>effect the MI version number. Only after the release can the number be
>bumped again (as far as I understand it).

The release would be the point where -i mi changes from mi2 to mi3.

>I am saying that I need to know if GDB is communicating with one of
>these development MI protocols, because I want to use the last official
>MI protocol, not a development MI protocol.

To take your example:

gdb --mi-protocols
 mi1
*mi2
 mi3

which means that mi2 is the default (and therefore last stable) mi version. Like
that you get all the necessary info about available and stable versions at once.

bye  Fabi


^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 21:07   ` Felix Lee
  2004-10-04 21:27     ` Daniel Jacobowitz
@ 2004-10-04 22:14     ` Bob Rossi
  2004-10-05  9:03       ` Fabian Cenedese
  1 sibling, 1 reply; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 22:14 UTC (permalink / raw)
  To: Felix Lee; +Cc: gdb

On Mon, Oct 04, 2004 at 01:53:57PM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > T1 GDB 7.0 has MI10 (official)
> > T2 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X1 )
> > T3 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X2 )
> > T4 GDB 7.1 has MI11 (official)
> 
> why would that happen?  I expect 'create a new MI version' to be
> basically an atomic change.  like, someone experiments with MI11
> on a branch, then merges it into the trunk when it's stable and
> tests reasonable cleanly.

This is frustrating to me, does anyone understand the problem that I am
describing? Maybe it could be said in a better way.

Basically, a given GDB (from an official release) supports several MI protocols.
A given GDB from a CVS snapshot supports several MI protocols and 1
unsupported protocol.

The 1 unsupported protocol is the problem. 

During development, the first incompatible change forces the MI version
number to be bumped. Every incompatible change after that does not
effect the MI version number. Only after the release can the number be
bumped again (as far as I understand it).

Once the development GDB reaches maturity and becomes an official release, 
the development protocol becomes an official protocol. That new MI protocol could
consist of say 10 incompatible changes with it's predecessor.

Any CVS snapshot after the first incompatible change (version bump) and
before the release will have GDB talking an MI protocol that is not
supported by anyone. It is a development protocol that should never be
used.

I am saying that I need to know if GDB is communicating with one of
these development MI protocols, because I want to use the last official
MI protocol, not a development MI protocol.

Do you understand?

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 21:07   ` Felix Lee
@ 2004-10-04 21:27     ` Daniel Jacobowitz
  2004-10-04 22:14     ` Bob Rossi
  1 sibling, 0 replies; 40+ messages in thread
From: Daniel Jacobowitz @ 2004-10-04 21:27 UTC (permalink / raw)
  To: Felix Lee; +Cc: gdb

On Mon, Oct 04, 2004 at 01:53:57PM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > T1 GDB 7.0 has MI10 (official)
> > T2 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X1 )
> > T3 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X2 )
> > T4 GDB 7.1 has MI11 (official)
> 
> why would that happen?  I expect 'create a new MI version' to be
> basically an atomic change.  like, someone experiments with MI11
> on a branch, then merges it into the trunk when it's stable and
> tests reasonable cleanly.
> 
> if the incompatible change is simple enough to be done in the
> trunk, then updating the version and the testsuite should be part
> of the same commit.

Except that's not how it's done.  Someone else explained how the
version numbers work upthread - the latest one may be evolving.

-- 
Daniel Jacobowitz

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
                     ` (5 preceding siblings ...)
  2004-10-04 18:31   ` Felix Lee
@ 2004-10-04 21:07   ` Felix Lee
  2004-10-04 21:27     ` Daniel Jacobowitz
  2004-10-04 22:14     ` Bob Rossi
  2004-10-06 17:14   ` Felix Lee
  2004-10-06 18:41   ` Felix Lee
  8 siblings, 2 replies; 40+ messages in thread
From: Felix Lee @ 2004-10-04 21:07 UTC (permalink / raw)
  To: gdb

Bob Rossi <bob@brasko.net>:
> T1 GDB 7.0 has MI10 (official)
> T2 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X1 )
> T3 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X2 )
> T4 GDB 7.1 has MI11 (official)

why would that happen?  I expect 'create a new MI version' to be
basically an atomic change.  like, someone experiments with MI11
on a branch, then merges it into the trunk when it's stable and
tests reasonable cleanly.

if the incompatible change is simple enough to be done in the
trunk, then updating the version and the testsuite should be part
of the same commit.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 18:31   ` Felix Lee
@ 2004-10-04 19:00     ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 19:00 UTC (permalink / raw)
  To: Felix Lee; +Cc: gdb

On Mon, Oct 04, 2004 at 11:12:01AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > With the information I have now, here is the problem. A snapshot of GDB
> > will say that it is at MI4, although, it is really at some
> > developmental version.
> 
> does that ever happen?  if gdb says it supports MI4 but it
> doesn't really, then it's lying, and that's a bug.  I think it's
> unreasonable to expect a front-end to have workarounds for every
> gdb bug.  the best answer is often 'get a gdb without the bug'.
> it might be reasonable to have workarounds for bugs in gdb
> versions that are widely deployed, and that can be handled on a
> case-by-case basis.

Felix, I think either I am wrong here about how GDB bumps it's version
numbers, or you do not understand what I am talking about. I am often
blamed for not explaining things clearly, so here it goes again.

While GDB is between versions, it will bump it's MI protocol number by
one if there is an MI backwards compatible issue. Right? (this was
stated by Mark Kettenis )

OK, so, if you get snapshots of GDB during it's development, the newly
bumped version of the MI protocol is *not* a valid protocol. It is a
protocol under development that will become an official protocol only
after a release is made. Here is a simple example, 
T1 GDB 7.0 has MI10 (official)
T2 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X1 )
T3 GDB 7.0-CVS has MI11 (unofficial, because of MI incompatible change X2 )
T4 GDB 7.1 has MI11 (official)

The assertion is GDB is not necessarily talking an official MI protocol 
until the release.

If I get a snapshot of GDB when in development, between time T2 and T3,
then my front end will not work with GDB's MI11 protocol. It will only
work with MI10. So, I need to find out from GDB what version's it will
officially support, and then the issue of working with GDB snapshots
will go away for ever (hopefully). 


> I don't have any objection to an --mi-protocols switch, but it
> seems to me that it isn't really needed by front-ends.  one
> simple strategy is to just try each mi version you know until you
> find one that works.

GDB currently says that it supports MI11 between times T2 and T3,
however, this is not true. It is a developmental version, that does not
conform to any specific version of the MI protocol.

Do you see the problem I am describing?

Here is debian testing ( the first system I tried ).
$ gdb --version
GNU gdb 2002-04-01-cvs

We don't have to have all the package maintainers give a formal snapshot
of GDB, we just need to make front end's understand all of the official
protocols that a given GDB supports.

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
                     ` (4 preceding siblings ...)
  2004-10-04 16:48   ` Felix Lee
@ 2004-10-04 18:31   ` Felix Lee
  2004-10-04 19:00     ` Bob Rossi
  2004-10-04 21:07   ` Felix Lee
                     ` (2 subsequent siblings)
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-04 18:31 UTC (permalink / raw)
  To: gdb

Bob Rossi <bob@brasko.net>:
> With the information I have now, here is the problem. A snapshot of GDB
> will say that it is at MI4, although, it is really at some
> developmental version.

does that ever happen?  if gdb says it supports MI4 but it
doesn't really, then it's lying, and that's a bug.  I think it's
unreasonable to expect a front-end to have workarounds for every
gdb bug.  the best answer is often 'get a gdb without the bug'.
it might be reasonable to have workarounds for bugs in gdb
versions that are widely deployed, and that can be handled on a
case-by-case basis.

I don't have any objection to an --mi-protocols switch, but it
seems to me that it isn't really needed by front-ends.  one
simple strategy is to just try each mi version you know until you
find one that works.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 16:48   ` Felix Lee
@ 2004-10-04 17:37     ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 17:37 UTC (permalink / raw)
  To: Felix Lee; +Cc: Eli Zaretskii, gdb

On Mon, Oct 04, 2004 at 09:04:55AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > I don't know what you are talking about here. Can you see that I'm
> > interested in having a new front end start any GDB with it's newest MI
> > protocol?
> 
> why isn't that possible now?  what situation makes it difficult
> to do that?

My original posting has the problem that I am confronting,

   How should front end developers deal with snapshots of GDB, that are
   taken between major versions of GDB. Several distributions
   do this and I don't think most front end's would be capable of dealing
   with a GDB in this state. In this state, GDB says it is MI3 but outputs commands
   in the MI4 style (because version hasn't been bumped yet) or vice versa.
   Does this even happen?

With the information I have now, here is the problem. A snapshot of GDB
will say that it is at MI4, although, it is really at some
developmental version. So, I need to get from GDB that MI4 is not an
official protocol, and that I should be using MI3 to communicate with
it. This seems to be the only problem.

This is why I am suggesting the new command line switch, which according
to the case above, would produce,

gdb --mi-protocols
mi1
mi2
mi3

However, Eli suggested making an MI command that does this, that is
still up for debate I guess.

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
                     ` (3 preceding siblings ...)
  2004-10-04 15:34   ` Felix Lee
@ 2004-10-04 16:48   ` Felix Lee
  2004-10-04 17:37     ` Bob Rossi
  2004-10-04 18:31   ` Felix Lee
                     ` (3 subsequent siblings)
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-04 16:48 UTC (permalink / raw)
  To: Eli Zaretskii, gdb

Bob Rossi <bob@brasko.net>:
> I don't know what you are talking about here. Can you see that I'm
> interested in having a new front end start any GDB with it's newest MI
> protocol?

why isn't that possible now?  what situation makes it difficult
to do that?
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 15:49     ` Mark Kettenis
@ 2004-10-04 16:04       ` Bob Rossi
  2004-10-05 10:57         ` Eli Zaretskii
  0 siblings, 1 reply; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 16:04 UTC (permalink / raw)
  To: Mark Kettenis; +Cc: eliz, gdb

On Mon, Oct 04, 2004 at 05:33:54PM +0200, Mark Kettenis wrote:
>    Date: Mon, 4 Oct 2004 09:19:06 -0400
>    From: Bob Rossi <bob@brasko.net>
> 
>    On Mon, Oct 04, 2004 at 06:57:35AM +0200, Eli Zaretskii wrote:
>    > > Date: Sun, 3 Oct 2004 12:39:18 -0400
>    > > From: Bob Rossi <bob@brasko.net>
>    > > 
>    > > Here is my take, since Eli stated that MI is backwards compatible, I
>    > > think the version number should be bumped right before the release.
>    > 
>    > The MI number should be bumped when an incompatibility is introduced
>    > on purpose, i.e. at the very moment when we decide to start a new MI
>    > version.
> 
>    OK, at first I don't like this idea for several reasons. It seems to me
>    that with this approach you could end up releasing GDB 6.0 with MI
>    version 1 and GDB 6.1 with MI version 5. Meaning that there could be
>    several versions of MI revisions between one major release.
> 
> Of course not.  We'd bump the MI version on the first incompatible
> change after a release, but we wouldn't bump it again until after the
> next release.  It's highly unlikely that we'd have to bump the MI
> version for a patch release, except when there's a need to fix a
> critical bug in the MI interface.  Yes, GDB 6.1 could be released with
> MI version 2, 6.2, 6.3 with MI version 3, GDB 6.4 with MI version 4
> and GDB 7.0 with MI version 5.  But since we aim for stability of the
> MI interface, even that would be unlikely.

OK, this is good news. So basically, even thought the MI version is
bumped it is still not official. Meaning, at that point, if I updated my
front end to be compatible with the new MI protocol version, there could
still be another incompatible change before the release. Meaning, I
would have to wait for the release to get the use out of that new
version. This is OK with me as long as,

   - I can have the --mi-protocols command line switch that tells me 
   what version of GDB/MI protocol is officially supported.

   - This command line switch only has MI protocols added to it when the 
   MI protocols become official ( for a release )

>    It seems that you would have to run the testsuite on every incompatible
>    change that the MI protocol goes through, including several for only one
>    release. Also, a front end would have to understand all of these
>    revisions in hopes of working with the most recent GDB (CVS snapshots).
> 
> In the end there will be no hope for a frontend to be compatible with
> each and every CVS snapshot that's made.  

Agreed, and I am learning that it would be wise to stay away from this
idea. It seems better that the front end understand somehow that the
current version is not official (CVS snapshot) and it should work with
the last official release.

> If we go through the
> development process we might add several features between two
> releases.  All we can guarantee is that once we make an official GDB
> release with a certain version of MI, that version of MI will never
> change again, and will be supported in the next X GDB releases.

This is perfect. Is this your view or the view of GDB/MI's maintainers
also?

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 15:34   ` Felix Lee
@ 2004-10-04 15:58     ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 15:58 UTC (permalink / raw)
  To: Felix Lee; +Cc: Eli Zaretskii, gdb

On Mon, Oct 04, 2004 at 07:59:21AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > OK, at first I don't like this idea for several reasons. It seems to me
> > that with this approach you could end up releasing GDB 6.0 with MI
> > version 1 and GDB 6.1 with MI version 5. Meaning that there could be
> > several versions of MI revisions between one major release.
> > It seems that you would have to run the testsuite on every incompatible
> > change that the MI protocol goes through, including several for only one
> > release. Also, a front end would have to understand all of these
> > revisions in hopes of working with the most recent GDB (CVS snapshots).
> 
> I really don't understand what's the problem you're trying to
> solve.  MI doesn't change often.  

I'm not interested in how often it changes at all. I'm interested in
the fact that it does change.

> a front-end
> doesn't have to understand any MI changes if it doesn't want to,
> if it understands MI5, it should invoke gdb with
> --interpreter=mi5.

You are correct, a front end doesn't have to do anything if it doesn't
want to. 

However, I want my front end to understand every MI protocol and I think
that this is OK with the GDB people. Is it a goal of GDB to make sure
that front ends can not understand every protocol? I highly doubt it.

> if the gdb doesn't understand mi5, then you can try fallback to
> --interpreter=mi1.  I don't see much benefit to a front-end
> knowing more than two versions of MI, and most of the time
> knowing just one should be adequate.

Of course there is a benefit. A front end should know every version of
the MI protocol. Since it will know all of the protocols, it could work
with a given GDB using the latest/greatest protocol that that GDB
supported.

> if your front-end tries mi5 and fails because gdb has made an
> incompatible change to mi5, then that's a bug in gdb, and if that
> bug gets exposed in a user version of gdb, the answer is 'your
> gdb has a bug, install a non-buggy one'.
> 
> what's your failure scenario?

I don't know what you are talking about here. Can you see that I'm
interested in having a new front end start any GDB with it's newest MI
protocol?

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04 14:59   ` Bob Rossi
@ 2004-10-04 15:49     ` Mark Kettenis
  2004-10-04 16:04       ` Bob Rossi
  0 siblings, 1 reply; 40+ messages in thread
From: Mark Kettenis @ 2004-10-04 15:49 UTC (permalink / raw)
  To: bob; +Cc: eliz, gdb

   Date: Mon, 4 Oct 2004 09:19:06 -0400
   From: Bob Rossi <bob@brasko.net>

   On Mon, Oct 04, 2004 at 06:57:35AM +0200, Eli Zaretskii wrote:
   > > Date: Sun, 3 Oct 2004 12:39:18 -0400
   > > From: Bob Rossi <bob@brasko.net>
   > > 
   > > Here is my take, since Eli stated that MI is backwards compatible, I
   > > think the version number should be bumped right before the release.
   > 
   > The MI number should be bumped when an incompatibility is introduced
   > on purpose, i.e. at the very moment when we decide to start a new MI
   > version.

   OK, at first I don't like this idea for several reasons. It seems to me
   that with this approach you could end up releasing GDB 6.0 with MI
   version 1 and GDB 6.1 with MI version 5. Meaning that there could be
   several versions of MI revisions between one major release.

Of course not.  We'd bump the MI version on the first incompatible
change after a release, but we wouldn't bump it again until after the
next release.  It's highly unlikely that we'd have to bump the MI
version for a patch release, except when there's a need to fix a
critical bug in the MI interface.  Yes, GDB 6.1 could be released with
MI version 2, 6.2, 6.3 with MI version 3, GDB 6.4 with MI version 4
and GDB 7.0 with MI version 5.  But since we aim for stability of the
MI interface, even that would be unlikely.

   It seems that you would have to run the testsuite on every incompatible
   change that the MI protocol goes through, including several for only one
   release. Also, a front end would have to understand all of these
   revisions in hopes of working with the most recent GDB (CVS snapshots).

In the end there will be no hope for a frontend to be compatible with
each and every CVS snapshot that's made.  If we go through the
development process we might add several features between two
releases.  All we can guarantee is that once we make an official GDB
release with a certain version of MI, that version of MI will never
change again, and will be supported in the next X GDB releases.

Seems like your problem is that various Linux distribution come with
their own hacked versions of GDB that do not correspond to an official
release.  Those distributions are not doing proper release management.
You should blame them, not the GDB developers.  Or you should tell
your users to use an OS with proper release management like *BSD ;-).

   I have a suggestion, although I don't know how much it helps. I propose
   that GDB changes the MI version once for every major release. It
   documents the changes so that front end developers can update there
   protocols appropriately from the last release. Finally, if the user
   starts GDB like --interpreter=mi, it would actually give the current
   development version of MI which is unsupported officially. Then the
   front ends would have to query GDB for the officially supported released
   protocols, and start GDB with the newest one they support.

   Could this work well with the GDB team?

No.

Mark

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
                     ` (2 preceding siblings ...)
  2004-10-04  5:00   ` Felix Lee
@ 2004-10-04 15:34   ` Felix Lee
  2004-10-04 15:58     ` Bob Rossi
  2004-10-04 16:48   ` Felix Lee
                     ` (4 subsequent siblings)
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-04 15:34 UTC (permalink / raw)
  To: Eli Zaretskii, gdb

Bob Rossi <bob@brasko.net>:
> OK, at first I don't like this idea for several reasons. It seems to me
> that with this approach you could end up releasing GDB 6.0 with MI
> version 1 and GDB 6.1 with MI version 5. Meaning that there could be
> several versions of MI revisions between one major release.
> It seems that you would have to run the testsuite on every incompatible
> change that the MI protocol goes through, including several for only one
> release. Also, a front end would have to understand all of these
> revisions in hopes of working with the most recent GDB (CVS snapshots).

I really don't understand what's the problem you're trying to
solve.  MI doesn't change often.  and even if it did, each
version of MI has separate tests in the testsuite.  a front-end
doesn't have to understand any MI changes if it doesn't want to,
if it understands MI5, it should invoke gdb with
--interpreter=mi5.

if the gdb doesn't understand mi5, then you can try fallback to
--interpreter=mi1.  I don't see much benefit to a front-end
knowing more than two versions of MI, and most of the time
knowing just one should be adequate.

if your front-end tries mi5 and fails because gdb has made an
incompatible change to mi5, then that's a bug in gdb, and if that
bug gets exposed in a user version of gdb, the answer is 'your
gdb has a bug, install a non-buggy one'.

what's your failure scenario?
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-04  5:04 ` Eli Zaretskii
@ 2004-10-04 14:59   ` Bob Rossi
  2004-10-04 15:49     ` Mark Kettenis
  0 siblings, 1 reply; 40+ messages in thread
From: Bob Rossi @ 2004-10-04 14:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gdb

On Mon, Oct 04, 2004 at 06:57:35AM +0200, Eli Zaretskii wrote:
> > Date: Sun, 3 Oct 2004 12:39:18 -0400
> > From: Bob Rossi <bob@brasko.net>
> > 
> > Here is my take, since Eli stated that MI is backwards compatible, I
> > think the version number should be bumped right before the release.
> 
> The MI number should be bumped when an incompatibility is introduced
> on purpose, i.e. at the very moment when we decide to start a new MI
> version.

OK, at first I don't like this idea for several reasons. It seems to me
that with this approach you could end up releasing GDB 6.0 with MI
version 1 and GDB 6.1 with MI version 5. Meaning that there could be
several versions of MI revisions between one major release.
It seems that you would have to run the testsuite on every incompatible
change that the MI protocol goes through, including several for only one
release. Also, a front end would have to understand all of these
revisions in hopes of working with the most recent GDB (CVS snapshots).

I have a suggestion, although I don't know how much it helps. I propose
that GDB changes the MI version once for every major release. It
documents the changes so that front end developers can update there
protocols appropriately from the last release. Finally, if the user
starts GDB like --interpreter=mi, it would actually give the current
development version of MI which is unsupported officially. Then the
front ends would have to query GDB for the officially supported released
protocols, and start GDB with the newest one they support.

Could this work well with the GDB team?

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-03 17:01 Bob Rossi
       [not found] ` <bob@brasko.net>
@ 2004-10-04  5:04 ` Eli Zaretskii
  2004-10-04 14:59   ` Bob Rossi
  1 sibling, 1 reply; 40+ messages in thread
From: Eli Zaretskii @ 2004-10-04  5:04 UTC (permalink / raw)
  To: Bob Rossi; +Cc: gdb

> Date: Sun, 3 Oct 2004 12:39:18 -0400
> From: Bob Rossi <bob@brasko.net>
> 
> Here is my take, since Eli stated that MI is backwards compatible, I
> think the version number should be bumped right before the release.

The MI number should be bumped when an incompatibility is introduced
on purpose, i.e. at the very moment when we decide to start a new MI
version.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
  2004-10-03 18:36   ` Felix Lee
  2004-10-03 19:39   ` Felix Lee
@ 2004-10-04  5:00   ` Felix Lee
  2004-10-04 15:34   ` Felix Lee
                     ` (5 subsequent siblings)
  8 siblings, 0 replies; 40+ messages in thread
From: Felix Lee @ 2004-10-04  5:00 UTC (permalink / raw)
  To: GDB

Bob Rossi <bob@brasko.net>:
> Is there a list of these known failures or problems?

here's one list, for redhat-8.0
    http://www.shout.net/~mec/sunday/current/
for mi tests, search for the string 'gdb.mi'
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-03 19:39   ` Felix Lee
@ 2004-10-03 20:19     ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-03 20:19 UTC (permalink / raw)
  To: Felix Lee; +Cc: GDB

On Sun, Oct 03, 2004 at 12:35:47PM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > I would say that I am not overthinking it, I am simply thinking about
> > it. I want to make sure that CVS snapshots will support a valid MI
> > interface. Major distro's use these snapshots, and I would like to have
> > compatibility with them.
> 
> the gdb testsuite has tests that exercise the MI versions.
> 'successfully passing the MI tests' is a form of compatibility
> guarantee.  if the existing tests aren't a strong enough
> guarantee, then new tests can be added.  

This is great news!

> the bigger problem is
> insufficient manpower to fix known failures.

Is there a list of these known failures or problems?

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
  2004-10-03 18:36   ` Felix Lee
@ 2004-10-03 19:39   ` Felix Lee
  2004-10-03 20:19     ` Bob Rossi
  2004-10-04  5:00   ` Felix Lee
                     ` (6 subsequent siblings)
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-03 19:39 UTC (permalink / raw)
  To: GDB

Bob Rossi <bob@brasko.net>:
> I would say that I am not overthinking it, I am simply thinking about
> it. I want to make sure that CVS snapshots will support a valid MI
> interface. Major distro's use these snapshots, and I would like to have
> compatibility with them.

the gdb testsuite has tests that exercise the MI versions.
'successfully passing the MI tests' is a form of compatibility
guarantee.  if the existing tests aren't a strong enough
guarantee, then new tests can be added.  the bigger problem is
insufficient manpower to fix known failures.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-03 18:42       ` Daniel Jacobowitz
@ 2004-10-03 19:35         ` Bob Rossi
  0 siblings, 0 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-03 19:35 UTC (permalink / raw)
  To: GDB

On Sun, Oct 03, 2004 at 02:40:36PM -0400, Daniel Jacobowitz wrote:
> On Sun, Oct 03, 2004 at 02:36:18PM -0400, Bob Rossi wrote:
> > On Sun, Oct 03, 2004 at 11:00:30AM -0700, Felix Lee wrote:
> > > Bob Rossi <bob@brasko.net>:
> > > > How should front end developers deal with snapshots of GDB, that are
> > > > taken between major versions of GDB. Several distributions
> > > 
> > > I think you're overthinking this.  if some version of gdb doesn't
> > > fulfill the compatibility guarantee, then it's a bug in gdb, and
> > > it shouldn't be hard to have the user install a gdb version
> > > without the bug.  at worst, you can supply your own version of
> > > gdb.  few things depend on specific gdb version.  it's not a big
> > > deal to have multiple gdb versions installed.  source code
> > > availability means you don't have to wait for the gdb cabal to
> > > fix it, and the cabal is generally eager to take reasonable
> > > bugfixes, which solves the long-term problem.
> > 
> > I would say that I am not overthinking it, I am simply thinking about
> > it. I want to make sure that CVS snapshots will support a valid MI
> > interface. Major distro's use these snapshots, and I would like to have
> > compatibility with them.
> 
> So, use the last frozen MI version supported by that snapshot?

Yes, that's what I was thinking also. Is that what is expected? Finally,
this idea along with this new command line argument,
http://sources.redhat.com/ml/gdb/2004-10/msg00027.html

I would be able to figure out the last stable version of MI is and use it,
even when it is a CVS snapshot. 

Does this sound correct? I figure the command line argument
--mi-protocols will only output the versions of MI that were released as
stable ( for a release ).

This would solve several important problem for me.

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-03 18:40     ` Bob Rossi
@ 2004-10-03 18:42       ` Daniel Jacobowitz
  2004-10-03 19:35         ` Bob Rossi
  0 siblings, 1 reply; 40+ messages in thread
From: Daniel Jacobowitz @ 2004-10-03 18:42 UTC (permalink / raw)
  To: GDB

On Sun, Oct 03, 2004 at 02:36:18PM -0400, Bob Rossi wrote:
> On Sun, Oct 03, 2004 at 11:00:30AM -0700, Felix Lee wrote:
> > Bob Rossi <bob@brasko.net>:
> > > How should front end developers deal with snapshots of GDB, that are
> > > taken between major versions of GDB. Several distributions
> > 
> > I think you're overthinking this.  if some version of gdb doesn't
> > fulfill the compatibility guarantee, then it's a bug in gdb, and
> > it shouldn't be hard to have the user install a gdb version
> > without the bug.  at worst, you can supply your own version of
> > gdb.  few things depend on specific gdb version.  it's not a big
> > deal to have multiple gdb versions installed.  source code
> > availability means you don't have to wait for the gdb cabal to
> > fix it, and the cabal is generally eager to take reasonable
> > bugfixes, which solves the long-term problem.
> 
> I would say that I am not overthinking it, I am simply thinking about
> it. I want to make sure that CVS snapshots will support a valid MI
> interface. Major distro's use these snapshots, and I would like to have
> compatibility with them.

So, use the last frozen MI version supported by that snapshot?

-- 
Daniel Jacobowitz

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
  2004-10-03 18:36   ` Felix Lee
@ 2004-10-03 18:40     ` Bob Rossi
  2004-10-03 18:42       ` Daniel Jacobowitz
  0 siblings, 1 reply; 40+ messages in thread
From: Bob Rossi @ 2004-10-03 18:40 UTC (permalink / raw)
  To: Felix Lee; +Cc: GDB

On Sun, Oct 03, 2004 at 11:00:30AM -0700, Felix Lee wrote:
> Bob Rossi <bob@brasko.net>:
> > How should front end developers deal with snapshots of GDB, that are
> > taken between major versions of GDB. Several distributions
> 
> I think you're overthinking this.  if some version of gdb doesn't
> fulfill the compatibility guarantee, then it's a bug in gdb, and
> it shouldn't be hard to have the user install a gdb version
> without the bug.  at worst, you can supply your own version of
> gdb.  few things depend on specific gdb version.  it's not a big
> deal to have multiple gdb versions installed.  source code
> availability means you don't have to wait for the gdb cabal to
> fix it, and the cabal is generally eager to take reasonable
> bugfixes, which solves the long-term problem.

I would say that I am not overthinking it, I am simply thinking about
it. I want to make sure that CVS snapshots will support a valid MI
interface. Major distro's use these snapshots, and I would like to have
compatibility with them.

Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GDB/MI snapshots between major release's
       [not found] ` <bob@brasko.net>
@ 2004-10-03 18:36   ` Felix Lee
  2004-10-03 18:40     ` Bob Rossi
  2004-10-03 19:39   ` Felix Lee
                     ` (7 subsequent siblings)
  8 siblings, 1 reply; 40+ messages in thread
From: Felix Lee @ 2004-10-03 18:36 UTC (permalink / raw)
  To: GDB

Bob Rossi <bob@brasko.net>:
> How should front end developers deal with snapshots of GDB, that are
> taken between major versions of GDB. Several distributions

I think you're overthinking this.  if some version of gdb doesn't
fulfill the compatibility guarantee, then it's a bug in gdb, and
it shouldn't be hard to have the user install a gdb version
without the bug.  at worst, you can supply your own version of
gdb.  few things depend on specific gdb version.  it's not a big
deal to have multiple gdb versions installed.  source code
availability means you don't have to wait for the gdb cabal to
fix it, and the cabal is generally eager to take reasonable
bugfixes, which solves the long-term problem.
--

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GDB/MI snapshots between major release's
@ 2004-10-03 17:01 Bob Rossi
       [not found] ` <bob@brasko.net>
  2004-10-04  5:04 ` Eli Zaretskii
  0 siblings, 2 replies; 40+ messages in thread
From: Bob Rossi @ 2004-10-03 17:01 UTC (permalink / raw)
  To: GDB

Hi,

To make things simple, I am separating some of my questions out into
several threads as Eli suggested. There are only a few, and I hope they
are not to annoying.

How should front end developers deal with snapshots of GDB, that are
taken between major versions of GDB. Several distributions
do this and I don't think most front end's would be capable of dealing
with a GDB in this state. In this state, GDB says it is MI3 but outputs commands
in the MI4 style (because version hasn't been bumped yet) or vice versa.
Does this even happen?

Here is my take, since Eli stated that MI is backwards compatible, I
think the version number should be bumped right before the release. This
way, any snapshot of GDB will get the last major version of the MI
protocol that was publically released and supported. Does this sound
correct?

Thanks,
Bob Rossi

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2004-10-06 18:43 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <62E49A52-1639-11D9-8F59-000A9569836A@canids.net>
2004-10-04 19:54 ` GDB/MI snapshots between major release's Jason Molenda
2004-10-04 21:12   ` Bob Rossi
2004-10-03 17:01 Bob Rossi
     [not found] ` <bob@brasko.net>
2004-10-03 18:36   ` Felix Lee
2004-10-03 18:40     ` Bob Rossi
2004-10-03 18:42       ` Daniel Jacobowitz
2004-10-03 19:35         ` Bob Rossi
2004-10-03 19:39   ` Felix Lee
2004-10-03 20:19     ` Bob Rossi
2004-10-04  5:00   ` Felix Lee
2004-10-04 15:34   ` Felix Lee
2004-10-04 15:58     ` Bob Rossi
2004-10-04 16:48   ` Felix Lee
2004-10-04 17:37     ` Bob Rossi
2004-10-04 18:31   ` Felix Lee
2004-10-04 19:00     ` Bob Rossi
2004-10-04 21:07   ` Felix Lee
2004-10-04 21:27     ` Daniel Jacobowitz
2004-10-04 22:14     ` Bob Rossi
2004-10-05  9:03       ` Fabian Cenedese
2004-10-05  9:18         ` Eli Zaretskii
2004-10-05 13:37           ` Bob Rossi
2004-10-06 17:14   ` Felix Lee
2004-10-06 17:21     ` Daniel Jacobowitz
     [not found]       ` <drow@false.org>
2004-10-06 17:58         ` Felix Lee
2004-10-06 18:41   ` Felix Lee
2004-10-06 18:50     ` Bob Rossi
2004-10-04  5:04 ` Eli Zaretskii
2004-10-04 14:59   ` Bob Rossi
2004-10-04 15:49     ` Mark Kettenis
2004-10-04 16:04       ` Bob Rossi
2004-10-05 10:57         ` Eli Zaretskii
2004-10-05 14:18           ` Daniel Jacobowitz
2004-10-06  1:40             ` Bob Rossi
2004-10-06 11:14             ` Eli Zaretskii
2004-10-06 11:39               ` Bob Rossi
2004-10-06 13:19                 ` Eli Zaretskii
2004-10-06 16:55                   ` Bob Rossi
2004-10-06 17:00                     ` Paul Koning
2004-10-06 17:02                       ` Bob Rossi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).