aboutsummaryrefslogtreecommitdiff
path: root/gdb/common/btrace-common.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/common/btrace-common.h')
-rw-r--r--gdb/common/btrace-common.h257
1 files changed, 0 insertions, 257 deletions
diff --git a/gdb/common/btrace-common.h b/gdb/common/btrace-common.h
deleted file mode 100644
index 0b18924..0000000
--- a/gdb/common/btrace-common.h
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Branch trace support for GDB, the GNU debugger.
-
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
-
- Contributed by Intel Corp. <markus.t.metzger@intel.com>.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef COMMON_BTRACE_COMMON_H
-#define COMMON_BTRACE_COMMON_H
-
-/* Branch tracing (btrace) is a per-thread control-flow execution trace of the
- inferior. For presentation purposes, the branch trace is represented as a
- list of sequential control-flow blocks, one such list per thread. */
-
-#include "vec.h"
-
-/* A branch trace block.
-
- This represents a block of sequential control-flow. Adjacent blocks will be
- connected via calls, returns, or jumps. The latter can be direct or
- indirect, conditional or unconditional. Branches can further be
- asynchronous, e.g. interrupts. */
-struct btrace_block
-{
- /* The address of the first byte of the first instruction in the block.
- The address may be zero if we do not know the beginning of this block,
- such as for the first block in a delta trace. */
- CORE_ADDR begin;
-
- /* The address of the first byte of the last instruction in the block. */
- CORE_ADDR end;
-};
-
-/* Define functions operating on a vector of branch trace blocks. */
-typedef struct btrace_block btrace_block_s;
-DEF_VEC_O (btrace_block_s);
-
-/* Enumeration of btrace formats. */
-
-enum btrace_format
-{
- /* No branch trace format. */
- BTRACE_FORMAT_NONE,
-
- /* Branch trace is in Branch Trace Store (BTS) format.
- Actually, the format is a sequence of blocks derived from BTS. */
- BTRACE_FORMAT_BTS,
-
- /* Branch trace is in Intel Processor Trace format. */
- BTRACE_FORMAT_PT
-};
-
-/* An enumeration of cpu vendors. */
-
-enum btrace_cpu_vendor
-{
- /* We do not know this vendor. */
- CV_UNKNOWN,
-
- /* Intel. */
- CV_INTEL
-};
-
-/* A cpu identifier. */
-
-struct btrace_cpu
-{
- /* The processor vendor. */
- enum btrace_cpu_vendor vendor;
-
- /* The cpu family. */
- unsigned short family;
-
- /* The cpu model. */
- unsigned char model;
-
- /* The cpu stepping. */
- unsigned char stepping;
-};
-
-/* A BTS configuration. */
-
-struct btrace_config_bts
-{
- /* The size of the branch trace buffer in bytes.
-
- This is unsigned int and not size_t since it is registered as
- control variable for "set record btrace bts buffer-size". */
- unsigned int size;
-};
-
-/* An Intel Processor Trace configuration. */
-
-struct btrace_config_pt
-{
- /* The size of the branch trace buffer in bytes.
-
- This is unsigned int and not size_t since it is registered as
- control variable for "set record btrace pt buffer-size". */
- unsigned int size;
-};
-
-/* A branch tracing configuration.
-
- This describes the requested configuration as well as the actually
- obtained configuration.
- We describe the configuration for all different formats so we can
- easily switch between formats. */
-
-struct btrace_config
-{
- /* The branch tracing format. */
- enum btrace_format format;
-
- /* The BTS format configuration. */
- struct btrace_config_bts bts;
-
- /* The Intel Processor Trace format configuration. */
- struct btrace_config_pt pt;
-};
-
-/* Branch trace in BTS format. */
-struct btrace_data_bts
-{
- /* Branch trace is represented as a vector of branch trace blocks starting
- with the most recent block. */
- VEC (btrace_block_s) *blocks;
-};
-
-/* Configuration information to go with the trace data. */
-struct btrace_data_pt_config
-{
- /* The processor on which the trace has been collected. */
- struct btrace_cpu cpu;
-};
-
-/* Branch trace in Intel Processor Trace format. */
-struct btrace_data_pt
-{
- /* Some configuration information to go with the data. */
- struct btrace_data_pt_config config;
-
- /* The trace data. */
- gdb_byte *data;
-
- /* The size of DATA in bytes. */
- size_t size;
-};
-
-/* The branch trace data. */
-struct btrace_data
-{
- btrace_data () = default;
-
- ~btrace_data ()
- {
- fini ();
- }
-
- btrace_data &operator= (btrace_data &&other)
- {
- if (this != &other)
- {
- fini ();
- format = other.format;
- variant = other.variant;
- other.format = BTRACE_FORMAT_NONE;
- }
- return *this;
- }
-
- /* Return true if this is empty; false otherwise. */
- bool empty () const;
-
- /* Clear this object. */
- void clear ();
-
- enum btrace_format format = BTRACE_FORMAT_NONE;
-
- union
- {
- /* Format == BTRACE_FORMAT_BTS. */
- struct btrace_data_bts bts;
-
- /* Format == BTRACE_FORMAT_PT. */
- struct btrace_data_pt pt;
- } variant;
-
-private:
-
- DISABLE_COPY_AND_ASSIGN (btrace_data);
-
- void fini ();
-};
-
-/* Target specific branch trace information. */
-struct btrace_target_info;
-
-/* Enumeration of btrace read types. */
-
-enum btrace_read_type
-{
- /* Send all available trace. */
- BTRACE_READ_ALL,
-
- /* Send all available trace, if it changed. */
- BTRACE_READ_NEW,
-
- /* Send the trace since the last request. This will fail if the trace
- buffer overflowed. */
- BTRACE_READ_DELTA
-};
-
-/* Enumeration of btrace errors. */
-
-enum btrace_error
-{
- /* No error. Everything is OK. */
- BTRACE_ERR_NONE,
-
- /* An unknown error. */
- BTRACE_ERR_UNKNOWN,
-
- /* Branch tracing is not supported on this system. */
- BTRACE_ERR_NOT_SUPPORTED,
-
- /* The branch trace buffer overflowed; no delta read possible. */
- BTRACE_ERR_OVERFLOW
-};
-
-/* Return a string representation of FORMAT. */
-extern const char *btrace_format_string (enum btrace_format format);
-
-/* Return an abbreviation string representation of FORMAT. */
-extern const char *btrace_format_short_string (enum btrace_format format);
-
-/* Append the branch trace data from SRC to the end of DST.
- Both SRC and DST must use the same format.
- Returns zero on success; a negative number otherwise. */
-extern int btrace_data_append (struct btrace_data *dst,
- const struct btrace_data *src);
-
-#endif /* COMMON_BTRACE_COMMON_H */