From: Yao Qi <yao@codesourcery.com>
To: <gdb-patches@sourceware.org>
Subject: [PATCH 10/12] Match dynamic="1" in the output of -var-list-children
Date: Fri, 14 Feb 2014 08:46:00 -0000 [thread overview]
Message-ID: <1392367471-13527-11-git-send-email-yao@codesourcery.com> (raw)
In-Reply-To: <1392367471-13527-1-git-send-email-yao@codesourcery.com>
When I play with pretty-printer and available-children-only, I get the
following output,
-var-list-children ss1
^done,numchild="2",children=[child={name="ss1.a",exp="a",numchild="0",type="struct s",thread-id="1",dynamic="1"},child={name="ss1.b",exp="b",numchild="0",type="struct s",thread-id="1",dynamic="1"}],has_more="0"
existing proc mi_child_regexp doesn't append "dynamic=1" to the pattern,
so it doesn't match output. This patch adds "dynamic=1" to the pattern.
I am not satisfied with the regexp construction for each child in
mi_child_regexp. In each list, there are three mandatory fields,
"name", "exp", and "numchild". There are also some optional fields,
"value", "type" and "dynamic". The current regexp construction code
is hard to be extended (add for "dynamic"). I suggest that we can
pass the list to mi_list_varobj_children like this,
{ name exp numchild optional }
the list has four elements, and OPTIONAL is an array, which index can
be "value", "type" or "dynamic". The existing usage of
mi_list_varobj_children like:
mi_list_varobj_children "struct_declarations" {
{struct_declarations.integer integer 0 int}
} "test"
will be rewritten to:
mi_list_varobj_children "struct_declarations" {
{struct_declarations.integer integer 0 {type int}}
} "test"
if we want to match "dynamic" attribute, we can write:
mi_list_varobj_children "struct_declarations" {
{struct_declarations.integer integer 0 {type int dynamic 1}}
} "test"
Since mi_list_varobj_children has been widely used in test suite, I'd
like to defer the change after this patch series.
V2:
- Remove empty 'else' block.
gdb/testsuite:
2014-02-14 Yao Qi <yao@codesourcery.com>
* lib/mi-support.exp (mi_child_regexp): Append 'dynamic="1"' to
children_exp.
---
gdb/testsuite/lib/mi-support.exp | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index 1e8fee6..df68bd2 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -1410,21 +1410,24 @@ proc mi_child_regexp {children add_child} {
set name [lindex $item 0]
set exp [lindex $item 1]
set numchild [lindex $item 2]
+
+ set line "$pre{name=\"$name\",exp=\"$exp\",numchild=\"$numchild\""
+
if {[llength $item] == 5} {
set type [lindex $item 3]
set value [lindex $item 4]
- lappend children_exp\
- "$pre{name=\"$name\",exp=\"$exp\",numchild=\"$numchild\",value=\"$value\",type=\"$type\"(,thread-id=\"\[0-9\]+\")?}"
+ append line ",value=\"$value\",type=\"$type\""
} elseif {[llength $item] == 4} {
set type [lindex $item 3]
- lappend children_exp\
- "$pre{name=\"$name\",exp=\"$exp\",numchild=\"$numchild\",type=\"$type\"(,thread-id=\"\[0-9\]+\")?}"
- } else {
- lappend children_exp\
- "$pre{name=\"$name\",exp=\"$exp\",numchild=\"$numchild\"(,thread-id=\"\[0-9\]+\")?}"
+ append line ",type=\"$type\""
}
+
+ append line \
+ "(,thread-id=\"\[0-9\]+\")?(,dynamic=\"1\")?}"
+
+ lappend children_exp $line
}
return [join $children_exp ","]
}
--
1.7.7.6
next prev parent reply other threads:[~2014-02-14 8:46 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-14 8:46 [RFC 00/12 V2] Visit varobj available children only in MI Yao Qi
2014-02-14 8:46 ` [PATCH 11/12] Test case Yao Qi
2014-04-18 11:45 ` Yao Qi
2014-04-24 20:53 ` Keith Seitz
2014-02-14 8:46 ` [PATCH 08/12] Iterator varobj_items by their availability Yao Qi
2014-04-24 20:28 ` Keith Seitz
2014-02-14 8:46 ` [PATCH 07/12] MI option --available-children-only Yao Qi
2014-04-24 20:02 ` Keith Seitz
2014-02-14 8:46 ` [PATCH 01/12] Use 'struct varobj_item' to represent name and value pair Yao Qi
2014-04-23 18:16 ` Keith Seitz
2014-05-21 17:53 ` Tom Tromey
2014-02-14 8:46 ` [PATCH 05/12] Rename varobj_pretty_printed_p to varobj_is_dynamic_p Yao Qi
2014-04-24 17:39 ` Keith Seitz
2014-05-21 18:02 ` Tom Tromey
2014-02-14 8:46 ` [PATCH 02/12] Generalize varobj iterator Yao Qi
2014-04-23 19:24 ` Keith Seitz
2014-05-21 17:51 ` Tom Tromey
2014-05-23 1:23 ` Yao Qi
2014-06-04 20:21 ` Tom Tromey
2014-06-05 5:36 ` Yao Qi
2014-06-05 18:21 ` Tom Tromey
2014-02-14 8:46 ` [PATCH 03/12] Iterate over 'struct varobj_item' instead of PyObject Yao Qi
2014-04-23 19:29 ` Keith Seitz
2014-05-21 18:01 ` Tom Tromey
2014-05-23 1:33 ` Yao Qi
2014-06-04 20:22 ` Tom Tromey
2014-02-14 8:46 ` [PATCH 12/12] NEWS and Doc on --available-children-only Yao Qi
2014-02-14 9:40 ` Eli Zaretskii
2014-02-17 9:46 ` Yao Qi
2014-02-17 15:04 ` Eli Zaretskii
2014-02-18 2:01 ` Yao Qi
2014-02-18 5:11 ` Eli Zaretskii
2014-02-18 7:14 ` Yao Qi
2014-02-18 15:07 ` Eli Zaretskii
2014-02-14 8:46 ` Yao Qi [this message]
2014-04-24 20:50 ` [PATCH 10/12] Match dynamic="1" in the output of -var-list-children Keith Seitz
2014-02-14 8:46 ` [PATCH 09/12] Delete varobj's children on traceframe is changed Yao Qi
2014-04-24 20:45 ` Keith Seitz
2014-02-14 8:46 ` [PATCH 04/12] Remove #if HAVE_PYTHON Yao Qi
2014-04-23 19:25 ` Keith Seitz
2014-05-21 17:52 ` Tom Tromey
2014-02-14 8:46 ` [PATCH 06/12] Use varobj_is_dynamic_p more widely Yao Qi
2014-04-24 18:17 ` Keith Seitz
2014-05-21 18:04 ` Tom Tromey
[not found] ` <5327A296.3050605@codesourcery.com>
2014-04-04 2:00 ` [RFC 00/12 V2] Visit varobj available children only in MI Yao Qi
2014-04-17 1:12 ` ping : " Yao Qi
2014-04-21 16:20 ` Joel Brobecker
2014-04-22 2:54 ` Yao Qi
2014-06-12 7:37 ` Yao Qi
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=1392367471-13527-11-git-send-email-yao@codesourcery.com \
--to=yao@codesourcery.com \
--cc=gdb-patches@sourceware.org \
/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