From: Yao Qi <yao@codesourcery.com>
To: <gdb-patches@sourceware.org>
Subject: [PATCH 1/5] Remove global variable tracepoint_list and stepping_list.
Date: Fri, 07 Jun 2013 13:07:00 -0000 [thread overview]
Message-ID: <1370610493-26468-2-git-send-email-yao@codesourcery.com> (raw)
In-Reply-To: <1370610493-26468-1-git-send-email-yao@codesourcery.com>
This patch is a refactor patch. Simply, it removes two global
variables tracepoint_list and stepping_list.
gdb:
2013-06-07 Pedro Alves <pedro@codesourcery.com>
Yao Qi <yao@codesourcery.com>
* tracepoint.c (tracepoint_list, stepping_list): Remove.
(do_clear_collection_list, init_collection_list): New.
(encode_actions): Change the type of the second and third
parameter from 'char ***' to 'struct collection_list *'.
(encode_actions): Rename to encode_actions_rsp, and rewrite on top
of the new encode_actions implementation.
(encode_actions): New function.
(_initialize_tracepoint): Delete references to 'tracepoint_list'
and 'stepping_list'.
* tracepoint.h (encode_actions): Remove declaration.
(encode_actions_rsp): Add declaration.
* remote.c (remote_download_tracepoint): Caller update.
---
gdb/remote.c | 2 +-
gdb/tracepoint.c | 112 ++++++++++++++++++++++++++++++-----------------------
gdb/tracepoint.h | 4 +-
3 files changed, 66 insertions(+), 52 deletions(-)
diff --git a/gdb/remote.c b/gdb/remote.c
index 080d048..d06b1ed 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -10524,7 +10524,7 @@ remote_download_tracepoint (struct bp_location *loc)
struct breakpoint *b = loc->owner;
struct tracepoint *t = (struct tracepoint *) b;
- encode_actions (loc, &tdp_actions, &stepping_actions);
+ encode_actions_rsp (loc, &tdp_actions, &stepping_actions);
old_chain = make_cleanup (free_actions_list_cleanup_wrapper,
tdp_actions);
(void) make_cleanup (free_actions_list_cleanup_wrapper,
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 5bad3e8..03f9230 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -873,8 +873,7 @@ struct collection_list
/* True is the user requested a collection of "$_sdata", "static
tracepoint data". */
int strace_data;
- }
-tracepoint_list, stepping_list;
+ };
/* MEMRANGE functions: */
@@ -1239,6 +1238,35 @@ clear_collection_list (struct collection_list *list)
list->next_aexpr_elt = 0;
memset (list->regs_mask, 0, sizeof (list->regs_mask));
list->strace_data = 0;
+
+ xfree (list->aexpr_list);
+ xfree (list->list);
+}
+
+/* Wrapper to function clear_collection_list. */
+
+static void
+do_clear_collection_list (void *list)
+{
+ struct collection_list *l = list;
+
+ clear_collection_list (l);
+}
+
+/* Initialize collection_list CLIST. */
+
+static void
+init_collection_list (struct collection_list *clist)
+{
+ memset (clist, 0, sizeof *clist);
+
+ clist->listsize = 128;
+ clist->list = xcalloc (clist->listsize,
+ sizeof (struct memrange));
+
+ clist->aexpr_listsize = 128;
+ clist->aexpr_list = xcalloc (clist->aexpr_listsize,
+ sizeof (struct agent_expr *));
}
/* Reduce a collection list to string form (for gdb protocol). */
@@ -1606,37 +1634,50 @@ encode_actions_1 (struct command_line *action,
} /* for */
}
-/* Render all actions into gdb protocol. */
-
-void
-encode_actions (struct bp_location *tloc, char ***tdp_actions,
- char ***stepping_actions)
+static void
+encode_actions (struct bp_location *tloc,
+ struct collection_list *tracepoint_list,
+ struct collection_list *stepping_list)
{
- char *default_collect_line = NULL;
- struct command_line *actions;
- struct command_line *default_collect_action = NULL;
int frame_reg;
LONGEST frame_offset;
- struct cleanup *back_to;
-
- back_to = make_cleanup (null_cleanup, NULL);
+ struct command_line *actions;
+ struct cleanup *old_chain;
- clear_collection_list (&tracepoint_list);
- clear_collection_list (&stepping_list);
+ old_chain = make_cleanup (null_cleanup, NULL);
- *tdp_actions = NULL;
- *stepping_actions = NULL;
+ actions = all_tracepoint_actions_and_cleanup (tloc->owner);
gdbarch_virtual_frame_pointer (tloc->gdbarch,
tloc->address, &frame_reg, &frame_offset);
- actions = all_tracepoint_actions_and_cleanup (tloc->owner);
-
encode_actions_1 (actions, tloc, frame_reg, frame_offset,
- &tracepoint_list, &stepping_list);
+ tracepoint_list, stepping_list);
+
+ do_cleanups (old_chain);
+
+ memrange_sortmerge (tracepoint_list);
+ memrange_sortmerge (stepping_list);
+}
+
+/* Render all actions into gdb protocol. */
+
+void
+encode_actions_rsp (struct bp_location *tloc,
+ char ***tdp_actions, char ***stepping_actions)
+{
+ struct cleanup *back_to;
+ struct collection_list tracepoint_list, stepping_list;
+
+ back_to = make_cleanup (null_cleanup, NULL);
- memrange_sortmerge (&tracepoint_list);
- memrange_sortmerge (&stepping_list);
+ init_collection_list (&tracepoint_list);
+ init_collection_list (&stepping_list);
+
+ make_cleanup (do_clear_collection_list, &tracepoint_list);
+ make_cleanup (do_clear_collection_list, &stepping_list);
+
+ encode_actions (tloc, &tracepoint_list, &stepping_list);
*tdp_actions = stringify_collection_list (&tracepoint_list);
*stepping_actions = stringify_collection_list (&stepping_list);
@@ -5673,33 +5714,6 @@ _initialize_tracepoint (void)
traceframe_number = -1;
tracepoint_number = -1;
- if (tracepoint_list.list == NULL)
- {
- tracepoint_list.listsize = 128;
- tracepoint_list.list = xmalloc
- (tracepoint_list.listsize * sizeof (struct memrange));
- }
- if (tracepoint_list.aexpr_list == NULL)
- {
- tracepoint_list.aexpr_listsize = 128;
- tracepoint_list.aexpr_list = xmalloc
- (tracepoint_list.aexpr_listsize * sizeof (struct agent_expr *));
- }
-
- if (stepping_list.list == NULL)
- {
- stepping_list.listsize = 128;
- stepping_list.list = xmalloc
- (stepping_list.listsize * sizeof (struct memrange));
- }
-
- if (stepping_list.aexpr_list == NULL)
- {
- stepping_list.aexpr_listsize = 128;
- stepping_list.aexpr_list = xmalloc
- (stepping_list.aexpr_listsize * sizeof (struct agent_expr *));
- }
-
add_info ("scope", scope_info,
_("List the variables local to a scope"));
diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h
index 3b09ca8..5ecf1fb 100644
--- a/gdb/tracepoint.h
+++ b/gdb/tracepoint.h
@@ -357,8 +357,8 @@ void free_actions (struct breakpoint *);
extern const char *decode_agent_options (const char *exp, int *trace_string);
-extern void encode_actions (struct bp_location *tloc,
- char ***tdp_actions, char ***stepping_actions);
+extern void encode_actions_rsp (struct bp_location *tloc,
+ char ***tdp_actions, char ***stepping_actions);
extern void validate_actionline (const char *, struct breakpoint *);
extern void validate_trace_state_variable_name (const char *name);
--
1.7.7.6
next prev parent reply other threads:[~2013-06-07 13:07 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 13:07 [PATCH 0/5] New MI command -trace-frame-collected Yao Qi
2013-06-07 13:07 ` [PATCH 3/5] Add id of TSV into traceframe_info Yao Qi
2013-06-07 14:39 ` Eli Zaretskii
2013-06-08 11:06 ` Yao Qi
2013-06-07 13:07 ` [PATCH 2/5] Move code to get_traceframe_location Yao Qi
2013-06-07 21:09 ` Pedro Alves
2013-06-07 13:07 ` [PATCH 5/5] New test: gdb.trace/mi-trace-frame-collected.exp Yao Qi
2013-06-07 13:07 ` [PATCH 4/5] New MI command -trace-frame-collected Yao Qi
2013-06-07 13:07 ` Yao Qi [this message]
2013-06-07 20:50 ` [PATCH 1/5] Remove global variable tracepoint_list and stepping_list Pedro Alves
2013-06-13 1:29 ` [PATCH 0/6 V2] New MI command -trace-frame-collected Yao Qi
2013-06-13 1:29 ` [PATCH 2/6] Emit error in tdump command when traceframe is not selected Yao Qi
2013-06-25 15:32 ` Pedro Alves
2013-06-13 1:29 ` [PATCH 4/6] Add id of TSV into traceframe_info Yao Qi
2013-06-13 3:40 ` Eli Zaretskii
2013-06-25 16:18 ` Pedro Alves
2013-06-26 8:19 ` Yao Qi
2013-06-13 1:29 ` [PATCH 5/6] New MI command -trace-frame-collected Yao Qi
2013-06-13 14:27 ` Eli Zaretskii
2013-06-14 9:52 ` Yao Qi
2013-06-14 12:34 ` Eli Zaretskii
2013-06-17 10:21 ` Yao Qi
2013-06-17 15:48 ` Eli Zaretskii
2013-06-18 14:09 ` Yao Qi
2013-06-18 17:24 ` Eli Zaretskii
2013-06-25 17:31 ` Pedro Alves
2013-06-26 8:29 ` Yao Qi
2013-06-26 11:22 ` Pedro Alves
2013-06-13 1:29 ` [PATCH 6/6] New test: gdb.trace/mi-trace-frame-collected.exp Yao Qi
2013-06-25 18:42 ` Pedro Alves
2013-06-26 10:32 ` Yao Qi
2013-06-13 1:29 ` [PATCH 3/6] Move code to get_traceframe_location Yao Qi
2013-06-25 15:43 ` Pedro Alves
2013-06-13 2:46 ` [PATCH 1/6] Remove global variable tracepoint_list and stepping_list Yao Qi
2013-06-25 15:28 ` Pedro Alves
2013-06-24 15:25 ` [ping]: [PATCH 0/6 V2] New MI command -trace-frame-collected 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=1370610493-26468-2-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