Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Jan Vrany <jan.vrany@fit.cvut.cz>, gdb-patches@sourceware.org
Subject: Re: [RFC] mi: Print frame architecture when printing frames on an MI channel
Date: Fri, 10 Aug 2018 10:30:00 -0000	[thread overview]
Message-ID: <27ddbc19-e970-a08b-d684-870dd11846b0@redhat.com> (raw)
In-Reply-To: <20180810055511.26257-1-jan.vrany@fit.cvut.cz>

Hi Jan,

On 08/10/2018 06:55 AM, Jan Vrany wrote:
> When printing frames on an MI channel also print frame architecture
> like in:
> 
>     (gdb)
>     -stack-list-frames 3 3
>     ^done,stack=
>     [frame={level="3",addr="0x000107a4",func="foo",
>       file="recursive2.c",fullname="/home/foo/bar/recursive2.c",
>       line="14",arch="i386:x86_64"}]
>    (gdb)
> 
> This is usefull for MI clients that need to know the architecture in order

Typo: "useful"

> to perform further analysis, for example to use their own disassembler to
> analyze mechinbe code.

Typo: "machine"

Sounds like a good idea.  Could be useful too for multi-arch debugging (like mixed
SPU and Power frames on Cell).

This needs a NEWS entry.

> 
> gdb/Changelog:
> 
> 	* stack.c (print_frame): print frame architecture when printing on
>         an MI output.

Uppercase "Print".

> 
> gdb/testsuite/Changelog
> 
> 	* lib/mi-support.exp (mi_expect_stop): Regexp updated tp aaccomodate

Typo: "accommodate"

> 	new "arch" field in frame output.
> 	* gdb.mi/mi-return.exp: Likewise.
> 	* gdb.mi/mi-stack.exp: Likewise.
> 	* gdb.mi/mi-syn-frame.exp: Likewise.
> 	* gdb.mi/user-selected-context-sync.exp: Likewise.
> 
> gdb/doc/Changelog
> 
> 	* gdb.texinfo (The -stack-list-frames Command): Updated description
>         to mention "arch".
>         Updated MI examples thorough the document to contain "arch" in frame
>         output.

(Nit: avoid past tense, "Updated" -> "Update" throughout.)


> diff --git a/gdb/testsuite/gdb.mi/user-selected-context-sync.exp b/gdb/testsuite/gdb.mi/user-selected-context-sync.exp
> index 05624deb0a..df3ee42af3 100644
> --- a/gdb/testsuite/gdb.mi/user-selected-context-sync.exp
> +++ b/gdb/testsuite/gdb.mi/user-selected-context-sync.exp
> @@ -156,11 +156,11 @@ proc make_mi_re { mode thread frame type } {
>      set thread_event_re "=thread-selected,id=\"$thread\""
>      set thread_answer_re "\\^done,new-thread-id=\"$thread\""
>  
> -    set frame_re(0) ",frame=\{level=\"0\",addr=\"$hex\",func=\"child_sub_function\",args=\\\[\\\],file=\"${any}${srcfile}\",fullname=\"${any}${srcfile}\",line=\"$thread_loop_line\"\}"
> -    set frame_re(1) ",frame=\{level=\"1\",addr=\"$hex\",func=\"child_function\",args=\\\[\{name=\"args\",value=\"0x0\"\}\\\],file=\"${any}${srcfile}\",fullname=\"${any}${srcfile}\",line=\"$thread_caller_line\"\}"
> +    set frame_re(0) ",frame=\{level=\"0\",addr=\"$hex\",func=\"child_sub_function\",args=\\\[\\\],file=\"${any}${srcfile}\",fullname=\"${any}${srcfile}\",line=\"$thread_loop_line\",arch=\".*\"\}"
> +    set frame_re(1) ",frame=\{level=\"1\",addr=\"$hex\",func=\"child_function\",args=\\\[\{name=\"args\",value=\"0x0\"\}\\\],file=\"${any}${srcfile}\",fullname=\"${any}${srcfile}\",line=\"$thread_caller_line\",arch=\".*\"\}"

I'd rather use a stricter \[^\r\n\]+ or better \[^"\]+ instead of ".*" throughout,
in case ".*" ends up too greedy and manages to consume further attributes,
like a bug that results in:

   ....arch="foo", arch="foo"}

or a bug/regression that causes arch to come out empty, like:

   ....arch=""}

or if .* makes a test manage to consume one frame too many,
or other things like that.  

(In this file, notice the "$any" variable.)

Thanks,
Pedro Alves


  reply	other threads:[~2018-08-10 10:30 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-10  5:57 Jan Vrany
2018-08-10 10:30 ` Pedro Alves [this message]
2018-08-13 10:53   ` [RFC] mi: print " Jan Vrany
2018-08-16 19:01     ` Pedro Alves
2018-08-20 10:24       ` Jan Vrany
2018-08-20 11:16         ` Pedro Alves
2018-08-20 20:43           ` Jan Vrany
2018-08-21 15:42             ` Pedro Alves
2018-08-21 16:16               ` Eli Zaretskii
2018-08-22  9:43               ` Jan Vrany
2018-08-22 11:39                 ` Pedro Alves
2018-08-24 20:22                   ` Regression on gdb.arch/amd64-invalid-stack-*.exp (was: Re: [RFC] mi: print frame architecture when printing frames on an MI channel) Sergio Durigan Junior
2018-08-27 13:37                     ` Jan Vrany
2018-08-21 16:16             ` [RFC] mi: print frame architecture when printing frames on an MI channel Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=27ddbc19-e970-a08b-d684-870dd11846b0@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jan.vrany@fit.cvut.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox