Re: starting gdb/mi from FE

Bob Rossi
2006-06-06T02:01:44Z

On Tue, Jun 06, 2006 at 01:55:40PM +1200, Nick Roberts wrote:
> B> > > $This change is backwards compatible because users were not able in the
> > > > $past to have a comma separated list in the -i flag.
> > >
> > > Backward compatible because it won't work with any version before GDB 6.5?
> >
> > Backward compatible because FE's can use mi2 when they do mi2, and
> > mi3,mi2 when they do more than mi2. I'm thinking no front end will ever
> > support mi1 (correct me if I'm wrong). Therefore, if we do this now,
> > it'll work for most FE's.
>
> But it won't work for *released* versions of GDB.

Hmmm, I see your point. As soon as I support mi3, it won't work with
these old released GDB's anymore. In that case, I'll know that I have to
try start GDB with just mi2 on it's own. I don't see any other solution.

> >...
> > > Pre GDB 6.5 wouldn't really work in this case either, but
> > >
> > > (gdb)
> > > -mi-version
> > > ^error,msg="Undefined MI command: mi-version"
> > > (gdb)
> > >
> > > wouldn't require restarting GDB, while:
> > >
> > > nickrob/21 gdb -i=mi2,mi1 myprog
> > > Interpreter `mi2,mi1' unrecognized
> > > nickrob/22
> > >
> > > would.
> >
> > That's not correct. Unless you will work with mi1. It will work with mi2
> > on as described above.
>
> I don't see how, unless you plan to `recall' all released versions of GDB.
>
> > Also, the solution your provide is a chicken/egg
> > problem. If anyone ever changes the MI output syntax in a non backwards
> > compatible way, then I will not know which generated parser to use. If I
> > don't know which generated parser to use, I can't possible call
> > -mi-version and expect to parse the output.
>
> If it changes from:
>
> (gdb)
> -mi-version
> ^done,major="3",minor="1"
> (gdb)
>
> your right, but I think this part of MI should be pretty constant. I imagine
> MI level changes involving things like asynchronous operation, event
> notification etc.

This solution works if you can guarentee that the protocol will never
change. I don't care anything about the format of specific MI commands.

> > I think it's bad to provide
> > functionality that only works with makeshift parsers.
>
> I think we need to be practical and work within our limited resources. If
> a corporate sponsor comes along then maybe we can consider such general
> principles.

I'm confused, the patch I provided is about 20 lines of code. If you are
talking about generating a parser, I've also done that with a 300 line
bison input file. I think I'm misunderstanding you here.

Bob Rossi