diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2017-10-14 08:47:44 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2017-10-14 08:47:44 -0400 |
commit | 2098b39391a5ade9ed308d76f2dfc7ceedd2d9a3 (patch) | |
tree | a6be020ecea33167c825e9898e81d2f32b8066c6 /gdb/tracepoint.c | |
parent | 4cdd21a8d3fd943d6993e9d053edf09583802744 (diff) | |
download | binutils-2098b39391a5ade9ed308d76f2dfc7ceedd2d9a3.zip binutils-2098b39391a5ade9ed308d76f2dfc7ceedd2d9a3.tar.gz binutils-2098b39391a5ade9ed308d76f2dfc7ceedd2d9a3.tar.bz2 |
Make to_traceframe_info return a unique_ptr
Since this target method returns an allocated object, return a
unique_ptr. It allows getting rid a some cleanups here and there.
I had to shuffle the includes around. First, target.h now needs to
include tracepoint.h, to get the definition of traceframe_info_up.
However, the definition of enum trace_find_type was later in target, so
I had to move it to tracepoint.h, so that the declaration of tfind_1
could know about it. I then had to remove the include of target.h from
tracepoint.h, which caused a circular dependency (it was probably
included to get enum trace_find_type in the first place anyway).
Regression tested on the buildbot.
gdb/ChangeLog:
* target.h: Include tracepoint.h.
(enum trace_find_type): Move to tracepoint.h.
(struct target_ops) <to_traceframe_info>: Return a unique ptr.
* tracepoint.h: Don't include target.h
(enum trace_find_type): Move from target.h.
(parse_traceframe_info): Return a unique ptr.
* tracepoint.c (current_traceframe_info): Change type to unique
ptr.
(free_traceframe_info): Remove.
(clear_traceframe_info): Don't manually free
current_traceframe_info.
(free_result): Remove.
(parse_traceframe_info): Return a unique ptr.
(get_traceframe_info): Adjust to unique ptr.
* ctf.c (ctf_traceframe_info): Return a unique ptr.
* remote.c (remote_traceframe_info): Return a unique ptr.
* tracefile-tfile.c (tfile_traceframe_info): Return a unique
ptr.
* target-debug.h (target_debug_print_traceframe_info_up): New
macro.
* target-delegates.c: Regenerate.
Diffstat (limited to 'gdb/tracepoint.c')
-rw-r--r-- | gdb/tracepoint.c | 40 |
1 files changed, 6 insertions, 34 deletions
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index a4a6584..9dd8d87 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -133,7 +133,7 @@ static int tracepoint_number; yet attempted to fetch it, or if the target does not support fetching this object, or if we're not inspecting a traceframe presently. */ -static struct traceframe_info *current_traceframe_info; +static traceframe_info_up current_traceframe_info; /* Tracing command lists. */ static struct cmd_list_element *tfindlist; @@ -191,21 +191,12 @@ current_trace_status (void) return &trace_status; } -/* Destroy INFO. */ - -static void -free_traceframe_info (struct traceframe_info *info) -{ - delete info; -} - /* Free and clear the traceframe info cache of the current traceframe. */ static void clear_traceframe_info (void) { - free_traceframe_info (current_traceframe_info); current_traceframe_info = NULL; } @@ -4020,16 +4011,6 @@ traceframe_info_start_tvar (struct gdb_xml_parser *parser, info->tvars.push_back (id); } -/* Discard the constructed trace frame info (if an error occurs). */ - -static void -free_result (void *p) -{ - struct traceframe_info *result = (struct traceframe_info *) p; - - free_traceframe_info (result); -} - /* The allowed elements and attributes for an XML memory map. */ static const struct gdb_xml_attribute memory_attributes[] = { @@ -4061,25 +4042,16 @@ static const struct gdb_xml_element traceframe_info_elements[] = { /* Parse a traceframe-info XML document. */ -struct traceframe_info * +traceframe_info_up parse_traceframe_info (const char *tframe_info) { - traceframe_info *result = new traceframe_info; - struct cleanup *back_to; - - back_to = make_cleanup (free_result, result); + traceframe_info_up result (new traceframe_info); if (gdb_xml_parse_quick (_("trace frame info"), "traceframe-info.dtd", traceframe_info_elements, - tframe_info, result) == 0) - { - /* Parsed successfully, keep the result. */ - discard_cleanups (back_to); - - return result; - } + tframe_info, result.get ()) == 0) + return result; - do_cleanups (back_to); return NULL; } @@ -4095,7 +4067,7 @@ get_traceframe_info (void) if (current_traceframe_info == NULL) current_traceframe_info = target_traceframe_info (); - return current_traceframe_info; + return current_traceframe_info.get (); } /* If the target supports the query, return in RESULT the set of |