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.
This commit is contained in:
Simon Marchi 2017-10-14 08:47:44 -04:00 committed by Simon Marchi
parent 4cdd21a8d3
commit 2098b39391
9 changed files with 63 additions and 63 deletions

View file

@ -20,7 +20,6 @@
#define TRACEPOINT_H 1
#include "breakpoint.h"
#include "target.h"
#include "memrange.h"
#include "gdb_vecs.h"
@ -38,6 +37,8 @@ struct traceframe_info
std::vector<int> tvars;
};
typedef std::unique_ptr<traceframe_info> traceframe_info_up;
/* A trace state variable is a value managed by a target being
traced. A trace state variable (or tsv for short) can be accessed
and assigned to by tracepoint actions and conditionals, but is not
@ -376,6 +377,18 @@ extern void trace_status_mi (int on_stop);
extern void tvariables_info_1 (void);
extern void save_trace_state_variables (struct ui_file *fp);
/* Enumeration of the kinds of traceframe searches that a target may
be able to perform. */
enum trace_find_type
{
tfind_number,
tfind_pc,
tfind_tp,
tfind_range,
tfind_outside,
};
extern void tfind_1 (enum trace_find_type type, int num,
CORE_ADDR addr1, CORE_ADDR addr2,
int from_tty);
@ -385,7 +398,7 @@ extern void trace_save_tfile (const char *filename,
extern void trace_save_ctf (const char *dirname,
int target_does_save);
extern struct traceframe_info *parse_traceframe_info (const char *tframe_info);
extern traceframe_info_up parse_traceframe_info (const char *tframe_info);
extern int traceframe_available_memory (VEC(mem_range_s) **result,
CORE_ADDR memaddr, ULONGEST len);