Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* GDB/MI Output syntax
@ 2004-08-24 19:19 Bob Rossi
  2004-08-24 19:33 ` Michael Chastain
  2004-08-25  4:09 ` Eli Zaretskii
  0 siblings, 2 replies; 12+ messages in thread
From: Bob Rossi @ 2004-08-24 19:19 UTC (permalink / raw)
  To: gdb-patches

Hi,

Below is a patch that adds a much needed newline into the
out-of-band-record. This makes the grammar match the output of GDB and
was hinted to that it was just a typo to not have it there.

Permission to apply?

Thanks,
Bob Rossi

Index: gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.212
diff -w -u -r1.212 gdb.texinfo
--- gdb.texinfo 30 Jul 2004 19:23:54 -0000      1.212
+++ gdb.texinfo 24 Aug 2004 19:17:49 -0000
@@ -14674,7 +14674,7 @@
 @code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}

 @item @var{out-of-band-record} @expansion{}
-@code{@var{async-record} | @var{stream-record}}
+@code{( @var{async-record} | @var{stream-record} ) @var{nl}}

 @item @var{async-record} @expansion{}
 @code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}


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

* Re: GDB/MI Output syntax
  2004-08-24 19:19 GDB/MI Output syntax Bob Rossi
@ 2004-08-24 19:33 ` Michael Chastain
  2004-08-24 19:39   ` Bob Rossi
  2004-08-24 19:48   ` Andrew Cagney
  2004-08-25  4:09 ` Eli Zaretskii
  1 sibling, 2 replies; 12+ messages in thread
From: Michael Chastain @ 2004-08-24 19:33 UTC (permalink / raw)
  To: gdb-patches, bob

Bob Rossi <bob@brasko.net> wrote:
> -@code{@var{async-record} | @var{stream-record}}
> +@code{( @var{async-record} | @var{stream-record} ) @var{nl}}

I'm dubious about this.

stream-record does not have an NL terminator and needs one, yes.

But async-record already gets an NL terminator in the grammar
and does not need a second one.

  async-record -> exec-async-output | status-async-output | notify-async-output
  exec-async-output -> [token] "*" async-output
  async-output -> async-class ("," result)* nl

For example, gdb.mi/gdb669.exp gives:

  # gdb.log excerpt
  ~"[Thread debugging using libthread_db enabled]\n"
  ~"[New Thread 8192 (LWP 26606)]\n"
  ~"[Switching to Thread 8192 (LWP 26606)]\n"
  000*stopped,reason="breakpoint-hit",bkptno="1",thread-id="1",frame={addr="0x0804852d",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff814"}],file="/berman/fsf/_today_/source/gdb/HEAD/src/gdb/testsuite/gdb.mi/pthreads.c",line="81"}
  (gdb) 


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

* Re: GDB/MI Output syntax
  2004-08-24 19:33 ` Michael Chastain
@ 2004-08-24 19:39   ` Bob Rossi
  2004-08-24 19:43     ` Bob Rossi
  2004-08-24 19:53     ` Michael Chastain
  2004-08-24 19:48   ` Andrew Cagney
  1 sibling, 2 replies; 12+ messages in thread
From: Bob Rossi @ 2004-08-24 19:39 UTC (permalink / raw)
  To: Michael Chastain; +Cc: gdb-patches

On Tue, Aug 24, 2004 at 03:33:30PM -0400, Michael Chastain wrote:
> Bob Rossi <bob@brasko.net> wrote:
> > -@code{@var{async-record} | @var{stream-record}}
> > +@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
> 
> I'm dubious about this.
> 
> stream-record does not have an NL terminator and needs one, yes.
> 
> But async-record already gets an NL terminator in the grammar
> and does not need a second one.
> 
>   async-record -> exec-async-output | status-async-output | notify-async-output
>   exec-async-output -> [token] "*" async-output
>   async-output -> async-class ("," result)* nl
> 
> For example, gdb.mi/gdb669.exp gives:
> 
>   # gdb.log excerpt
>   ~"[Thread debugging using libthread_db enabled]\n"
>   ~"[New Thread 8192 (LWP 26606)]\n"
>   ~"[Switching to Thread 8192 (LWP 26606)]\n"
>   000*stopped,reason="breakpoint-hit",bkptno="1",thread-id="1",frame={addr="0x0804852d",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff814"}],file="/berman/fsf/_today_/source/gdb/HEAD/src/gdb/testsuite/gdb.mi/pthreads.c",line="81"}
>   (gdb) 

Thanks again. I stand corrected.
We could do, 
   out-of-band-record ==>
       async-record | stream-record newline

does that sound correct?

Thanks,
Bob Rossi


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

* Re: GDB/MI Output syntax
  2004-08-24 19:39   ` Bob Rossi
@ 2004-08-24 19:43     ` Bob Rossi
  2004-08-24 19:53     ` Michael Chastain
  1 sibling, 0 replies; 12+ messages in thread
From: Bob Rossi @ 2004-08-24 19:43 UTC (permalink / raw)
  To: Michael Chastain, gdb-patches

On Tue, Aug 24, 2004 at 03:39:28PM -0400, Bob Rossi wrote:
> On Tue, Aug 24, 2004 at 03:33:30PM -0400, Michael Chastain wrote:
> > Bob Rossi <bob@brasko.net> wrote:
> > > -@code{@var{async-record} | @var{stream-record}}
> > > +@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
> > 
> > I'm dubious about this.
> > 
> > stream-record does not have an NL terminator and needs one, yes.
> > 
> > But async-record already gets an NL terminator in the grammar
> > and does not need a second one.
> > 
> >   async-record -> exec-async-output | status-async-output | notify-async-output
> >   exec-async-output -> [token] "*" async-output
> >   async-output -> async-class ("," result)* nl
> > 
> > For example, gdb.mi/gdb669.exp gives:
> > 
> >   # gdb.log excerpt
> >   ~"[Thread debugging using libthread_db enabled]\n"
> >   ~"[New Thread 8192 (LWP 26606)]\n"
> >   ~"[Switching to Thread 8192 (LWP 26606)]\n"
> >   000*stopped,reason="breakpoint-hit",bkptno="1",thread-id="1",frame={addr="0x0804852d",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff814"}],file="/berman/fsf/_today_/source/gdb/HEAD/src/gdb/testsuite/gdb.mi/pthreads.c",line="81"}
> >   (gdb) 
> 
> Thanks again. I stand corrected.
> We could do, 
>    out-of-band-record ==>
>        async-record | stream-record newline
> 
> does that sound correct?

otherwise if you prefer to have the newline at the bottom of the chain
we could just do 
   console-stream-output ==>
       "~" c-string nl

   target-stream-output ==>
       "@" c-string nl

   log-stream-output ==>
       "&" c-string nl

The first solution is shorter, the second solution is more obvious to
the eye.

Bob Rossi


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

* Re: GDB/MI Output syntax
  2004-08-24 19:33 ` Michael Chastain
  2004-08-24 19:39   ` Bob Rossi
@ 2004-08-24 19:48   ` Andrew Cagney
  2004-08-24 19:54     ` Bob Rossi
  2004-08-24 20:01     ` Bob Rossi
  1 sibling, 2 replies; 12+ messages in thread
From: Andrew Cagney @ 2004-08-24 19:48 UTC (permalink / raw)
  To: Michael Chastain, bob; +Cc: gdb-patches

> Bob Rossi <bob@brasko.net> wrote:
> 
>>> -@code{@var{async-record} | @var{stream-record}}
>>> +@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
> 
> 
> I'm dubious about this.
> 
> stream-record does not have an NL terminator and needs one, yes.
> 
> But async-record already gets an NL terminator in the grammar
> and does not need a second one.

That's kind of why, per my earlier post, I suggested moving all the 
@var{nl} to the @var{output} production.  That way we can see exactly 
where they fit in.

Andrew

>   async-record -> exec-async-output | status-async-output | notify-async-output
>   exec-async-output -> [token] "*" async-output
>   async-output -> async-class ("," result)* nl
> 
> For example, gdb.mi/gdb669.exp gives:
> 
>   # gdb.log excerpt
>   ~"[Thread debugging using libthread_db enabled]\n"
>   ~"[New Thread 8192 (LWP 26606)]\n"
>   ~"[Switching to Thread 8192 (LWP 26606)]\n"
>   000*stopped,reason="breakpoint-hit",bkptno="1",thread-id="1",frame={addr="0x0804852d",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff814"}],file="/berman/fsf/_today_/source/gdb/HEAD/src/gdb/testsuite/gdb.mi/pthreads.c",line="81"}
>   (gdb) 
> 
> 


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

* Re: GDB/MI Output syntax
  2004-08-24 19:39   ` Bob Rossi
  2004-08-24 19:43     ` Bob Rossi
@ 2004-08-24 19:53     ` Michael Chastain
  1 sibling, 0 replies; 12+ messages in thread
From: Michael Chastain @ 2004-08-24 19:53 UTC (permalink / raw)
  To: eliz, bob; +Cc: gdb-patches

Bob Rossi <bob@brasko.net> wrote:

   out-of-band-record ==>
       async-record | stream-record newline

Yikes.  That looks correct, but ugly.  An async-record includes its own
newline, but a stream-record doesn't!  That's gonna be a maintenance
annoyance.

That's just the micro-level feedback.  On a higher level, I think it
would be better to let go of the micro-patches and spend some time
making up an integrated plan.

(And I'd be happy to contribute my two hundred cents if you want ideas
 for a plan).


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

* Re: GDB/MI Output syntax
  2004-08-24 19:48   ` Andrew Cagney
@ 2004-08-24 19:54     ` Bob Rossi
  2004-08-24 20:01     ` Bob Rossi
  1 sibling, 0 replies; 12+ messages in thread
From: Bob Rossi @ 2004-08-24 19:54 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Michael Chastain, gdb-patches

On Tue, Aug 24, 2004 at 03:46:52PM -0400, Andrew Cagney wrote:
> >Bob Rossi <bob@brasko.net> wrote:
> >
> >>>-@code{@var{async-record} | @var{stream-record}}
> >>>+@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
> >
> >
> >I'm dubious about this.
> >
> >stream-record does not have an NL terminator and needs one, yes.
> >
> >But async-record already gets an NL terminator in the grammar
> >and does not need a second one.
> 
> That's kind of why, per my earlier post, I suggested moving all the 
> @var{nl} to the @var{output} production.  That way we can see exactly 
> where they fit in.

I don't think it would be possible to move all of the @var{nl} to the
output production. Not without making the output production very large.
This is because in several case's the newline is only outputted
conditionally, since some productions are optional.

I think the simple patch would be fine for now. Do you agree?

Thanks,
Bob Rossi


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

* Re: GDB/MI Output syntax
  2004-08-24 19:48   ` Andrew Cagney
  2004-08-24 19:54     ` Bob Rossi
@ 2004-08-24 20:01     ` Bob Rossi
  2004-08-24 20:18       ` Andrew Cagney
  1 sibling, 1 reply; 12+ messages in thread
From: Bob Rossi @ 2004-08-24 20:01 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Michael Chastain, gdb-patches

On Tue, Aug 24, 2004 at 03:46:52PM -0400, Andrew Cagney wrote:
> >Bob Rossi <bob@brasko.net> wrote:
> >
> >>>-@code{@var{async-record} | @var{stream-record}}
> >>>+@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
> >
> >
> >I'm dubious about this.
> >
> >stream-record does not have an NL terminator and needs one, yes.
> >
> >But async-record already gets an NL terminator in the grammar
> >and does not need a second one.
> 
> That's kind of why, per my earlier post, I suggested moving all the 
> @var{nl} to the @var{output} production.  That way we can see exactly 
> where they fit in.

Andrew, were you suggesting something like this?

from
   output ==> ( out-of-band-record )* [ result-record ] "(gdb)" nl
to
   output ==> (out-of-band-record nl)* [ result-record nl] "(gdb)" nl

and removing the 'nl' everywhere else?

That might actually work. Although, I don't personally know a way of
changing a grammar and guaranteeing that there the same.

Bob Rossi


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

* Re: GDB/MI Output syntax
  2004-08-24 20:01     ` Bob Rossi
@ 2004-08-24 20:18       ` Andrew Cagney
  2004-08-24 20:56         ` Bob Rossi
  0 siblings, 1 reply; 12+ messages in thread
From: Andrew Cagney @ 2004-08-24 20:18 UTC (permalink / raw)
  To: Bob Rossi; +Cc: Michael Chastain, gdb-patches

> On Tue, Aug 24, 2004 at 03:46:52PM -0400, Andrew Cagney wrote:
> 
>>>> >Bob Rossi <bob@brasko.net> wrote:
>>>> >
>>>
>>>>>> >>>-@code{@var{async-record} | @var{stream-record}}
>>>>>> >>>+@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
>>>
>>>> >
>>>> >
>>>> >I'm dubious about this.
>>>> >
>>>> >stream-record does not have an NL terminator and needs one, yes.
>>>> >
>>>> >But async-record already gets an NL terminator in the grammar
>>>> >and does not need a second one.
>>
>>> 
>>> That's kind of why, per my earlier post, I suggested moving all the 
>>> @var{nl} to the @var{output} production.  That way we can see exactly 
>>> where they fit in.
> 
> 
> Andrew, were you suggesting something like this?
> 
> from
>    output ==> ( out-of-band-record )* [ result-record ] "(gdb)" nl
> to
>    output ==> (out-of-band-record nl)* [ result-record nl] "(gdb)" nl
> 
> and removing the 'nl' everywhere else?

Yep.

> That might actually work. Although, I don't personally know a way of
> changing a grammar and guaranteeing that there the same.

A series of rewrites where NL is slow pushed down should eventually 
result in the old grammar (well except that it would be fixed).

Andrew



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

* Re: GDB/MI Output syntax
  2004-08-24 20:18       ` Andrew Cagney
@ 2004-08-24 20:56         ` Bob Rossi
  2004-08-25 15:51           ` Andrew Cagney
  0 siblings, 1 reply; 12+ messages in thread
From: Bob Rossi @ 2004-08-24 20:56 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Michael Chastain, gdb-patches

On Tue, Aug 24, 2004 at 04:16:44PM -0400, Andrew Cagney wrote:
> >On Tue, Aug 24, 2004 at 03:46:52PM -0400, Andrew Cagney wrote:
> >
> >>>>>Bob Rossi <bob@brasko.net> wrote:
> >>>>>
> >>>
> >>>>>>>>>-@code{@var{async-record} | @var{stream-record}}
> >>>>>>>>>+@code{( @var{async-record} | @var{stream-record} ) @var{nl}}
> >>>
> >>>>>
> >>>>>
> >>>>>I'm dubious about this.
> >>>>>
> >>>>>stream-record does not have an NL terminator and needs one, yes.
> >>>>>
> >>>>>But async-record already gets an NL terminator in the grammar
> >>>>>and does not need a second one.
> >>
> >>>
> >>>That's kind of why, per my earlier post, I suggested moving all the 
> >>>@var{nl} to the @var{output} production.  That way we can see exactly 
> >>>where they fit in.
> >
> >
> >Andrew, were you suggesting something like this?
> >
> >from
> >   output ==> ( out-of-band-record )* [ result-record ] "(gdb)" nl
> >to
> >   output ==> (out-of-band-record nl)* [ result-record nl] "(gdb)" nl
> >
> >and removing the 'nl' everywhere else?
> 
> Yep.
> 
> >That might actually work. Although, I don't personally know a way of
> >changing a grammar and guaranteeing that there the same.
> 
> A series of rewrites where NL is slow pushed down should eventually 
> result in the old grammar (well except that it would be fixed).

By the way you are talking, I can't tell if you are going to do this, or
if you expect someone else to do it?

Should I just post a new grammar with the suggestion? The problem is, I
don't know how to prove that the new grammar is equivalant to the old
grammar. Is there a way to do that?


Thanks,
Bob Rossi


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

* Re: GDB/MI Output syntax
  2004-08-24 19:19 GDB/MI Output syntax Bob Rossi
  2004-08-24 19:33 ` Michael Chastain
@ 2004-08-25  4:09 ` Eli Zaretskii
  1 sibling, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2004-08-25  4:09 UTC (permalink / raw)
  To: Bob Rossi; +Cc: gdb-patches

> Date: Tue, 24 Aug 2004 15:19:31 -0400
> From: Bob Rossi <bob@brasko.net>
> 
> Below is a patch that adds a much needed newline into the
> out-of-band-record. This makes the grammar match the output of GDB and
> was hinted to that it was just a typo to not have it there.
> 
> Permission to apply?

I understand that you've withdrawn this patch.  If not, and if you
still want my approval, please explain what does the extra level of
parens stand for and why did you leave whitespace inside it.


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

* Re: GDB/MI Output syntax
  2004-08-24 20:56         ` Bob Rossi
@ 2004-08-25 15:51           ` Andrew Cagney
  0 siblings, 0 replies; 12+ messages in thread
From: Andrew Cagney @ 2004-08-25 15:51 UTC (permalink / raw)
  To: Bob Rossi; +Cc: Michael Chastain, gdb-patches


>>>> >Andrew, were you suggesting something like this?
>>>> >
>>>> >from
>>>> >   output ==> ( out-of-band-record )* [ result-record ] "(gdb)" nl
>>>> >to
>>>> >   output ==> (out-of-band-record nl)* [ result-record nl] "(gdb)" nl
>>>> >
>>>> >and removing the 'nl' everywhere else?
>>
>>> 
>>> Yep.
>>> 
>>
>>>> >That might actually work. Although, I don't personally know a way of
>>>> >changing a grammar and guaranteeing that there the same.
>>
>>> 
>>> A series of rewrites where NL is slow pushed down should eventually 
>>> result in the old grammar (well except that it would be fixed).
> 
> 
> By the way you are talking, I can't tell if you are going to do this, or
> if you expect someone else to do it?

I eye balled it - it puts a NL at the end of each record which was the 
intent.

> Should I just post a new grammar with the suggestion? The problem is, I
> don't know how to prove that the new grammar is equivalant to the old
> grammar. Is there a way to do that?

Well, to be pedantic, the old grammer contained a bug which this fixes 
so we can't prove equivalence.  However using a sequence of 
transformations (rewrite was a poor choice of word) we can show rough 
equivalence.  For instance:

> @item @var{output} @expansion{}
> @code{( @var{out-of-band-record} @var{nl} )* [ @var{result-record} @var{nl} ] "(gdb)" @var{nl}}
> 
> @item @var{result-record} @expansion{}
> @code{[ @var{token} ] "^" @var{result-class} ( "," @var{result} )*}

Moving result-record's NL into the result-record production yields:

> @item @var{output} @expansion{}
> @code{( @var{out-of-band-record} @var{nl})* [ @var{result-record} ] "(gdb)" @var{nl}}
> 
> @item @var{result-record} @expansion{}
> @code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}

which is the easy one done.  The other while longer and more tedious is 
similar except it ends up pushing an NL down into stream-record (where 
it was missing).

Is this what you ment?

Andrew



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

end of thread, other threads:[~2004-08-25 15:51 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-08-24 19:19 GDB/MI Output syntax Bob Rossi
2004-08-24 19:33 ` Michael Chastain
2004-08-24 19:39   ` Bob Rossi
2004-08-24 19:43     ` Bob Rossi
2004-08-24 19:53     ` Michael Chastain
2004-08-24 19:48   ` Andrew Cagney
2004-08-24 19:54     ` Bob Rossi
2004-08-24 20:01     ` Bob Rossi
2004-08-24 20:18       ` Andrew Cagney
2004-08-24 20:56         ` Bob Rossi
2004-08-25 15:51           ` Andrew Cagney
2004-08-25  4:09 ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox