RE: probing GDB for MI versions

Dave Korn
2004-10-06T16:55:50Z

> -----Original Message-----
> From: 'Bob Rossi'
> Sent: 06 October 2004 17:22

> On Wed, Oct 06, 2004 at 12:50:34PM +0100, Dave Korn wrote:
> > > -----Original Message-----
> > > From: gdb-owner On Behalf Of Bob Rossi
> > > Sent: 06 October 2004 12:39

> > > The front end has parsers for different versions of GDB's
> > > MI protocol.
> > > The parser for MI2 may not work for the MI3 protocol.
> > > The parser for the MI3 protocol may not work for the
> MI2 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?
> >
> > No, we can't. As long as the output from the -mi-version
> MI command stays
> > in the same format, you can always parse that and determine
> which version to
> > use.

> Dave, you do not understand the problem at all. I do not
> appreciate your
> defininative answer, especially since it is incorrect.

#1. Well, I don't appreciate your rudeness, but hey, we don't always get
what we want in life. Guess you're just SOL.

#2. My answer IS correct. I DO understand the problem, and in fact I
understand it better enough than you do that I can see the very very obvious
solution (that you aren't capable of grasping) as well as the problem
itself.

#3. Why do you have to be the _only_ person in the entire software industry
who isn't capable of dealing with elementary versioning and compatibility
issues? These techniques work fine for EVERYONE else but you.

> The actual MI output syntax is capable of changing between MI
> versions.

Yes. I hope we're all agreed that there is no hope of (nor point to)
tracking a work-in-progress as it changes on a day-by-day basis.

> If the MI4 output syntax (grammar) has an incompatible change
> with MI3,
> then
> * the MI3 parser will not even be capable of parsing and
> building a
> parse tree for the MI4 protocol.
> * the MI4 parser will not even be capable of parsing and building a
> parse tree for the MI3 protocol.

Try and think outside the box. Your over-reliance on tools is hobbling
you. You aren't obliged by statute to use an automatically generated parser
based on a formal grammar. You can use printf to send the -mi-version
command to the gdb instance, and you can use sscanf to parse the version
number out of the string "MI version is XXXX" that it returns.

> It is not possible to understand the output of the command no
> matter how simple it is.

Speak for yourself. I can understand it, it's human readable. I could
write a very very very simple bit of code using sscanf that would understand
it. You might have a problem understanding it, but you're the only one who
does, and there's no need for you to.

>If there is no parse tree, then there is no way to
> understand the output from GDB.

Don't be so facile. You send one very simple command, get back one very
simple output that you can parse with strcmp or sscanf, for crying out loud.
Then you know what MI version you're dealing with.

> I don't understand the concept of an "utterly minimal
> unintelligent parser".

Well, you're clearly biting off more than you can chew with this entire
project. As I said above, something of the degree of complexity of a single
sscanf statement is what I mean.

> That is rediculous. I am generating a parser from the grammar.
>
> There absolutly needs to be a way for the front end to ask GDB what
> versions of the MI protocol it supports.
>
> There is no way the front end can ask GDB what protocols it
> supports if
> it needs to talk to it with an MI protocol. Understood?

I understand what you're claiming, but I gave you a perfectly clear and
simple way of doing it. You haven't demonstrated any problem with my
proposal, because as you said above, you haven't even understood it yet.
When you do understand it, you'll also understand that it works just fine.

cheers,
DaveK
--
Can't think of a witty .sigline today....