55 PyVarObject_HEAD_INIT (NULL, 0)
114 PyErr_Format (
gdbpy_gdb_error, _(
"Must be gdb.RecordFunctionSegment"));
157 const btrace_config *config;
158 const char *err_string;
173 Py_ssize_t step, PyTypeObject *element_type)
206 catch (
const gdb_exception &except)
266 gdb::byte_vector buffer;
274 buffer.resize (insn->
size);
277 catch (
const gdb_exception &except)
282 object = PyBytes_FromStringAndSize ((
const char *) buffer.data (),
288 return PyMemoryView_FromObject (
object);
307 catch (
const gdb_exception &except)
313 return PyBytes_FromString (strfile.
string ().c_str ());
330 +
func->level).release ();
344 if (
func->sym == NULL)
362 len =
func->insn.size ();
369 func->insn_offset,
func->insn_offset + len, 1,
433 const Py_ssize_t distance = obj->
last - obj->
first;
434 const Py_ssize_t result = distance / obj->
step;
436 if ((distance % obj->
step) == 0)
453 return PyErr_Format (PyExc_IndexError, _(
"Index out of range: %zd."),
456 number = obj->
first + (obj->
step * index);
471 Py_ssize_t start, stop, step, slicelength;
473 if (PyLong_Check (
value))
475 Py_ssize_t index = PyLong_AsSsize_t (
value);
484 if (!PySlice_Check (
value))
485 return PyErr_Format (PyExc_TypeError, _(
"Index must be int or slice."));
487 if (0 != PySlice_GetIndicesEx (
value, length, &start, &stop,
488 &step, &slicelength))
504 Py_ssize_t index = obj->
number;
512 if (index < list_obj->first || index > list_obj->
last)
515 index -= list_obj->
first;
517 if (index % list_obj->
step != 0)
520 return index / list_obj->
step;
542 return PyErr_Format (PyExc_ValueError, _(
"Not in list."));
567 if (Py_TYPE (self) != Py_TYPE (other))
569 Py_INCREF (Py_NotImplemented);
570 return Py_NotImplemented;
599 Py_INCREF (Py_NotImplemented);
600 return Py_NotImplemented;
609 return PyUnicode_FromString (
"btrace");
619 const struct thread_info *
const tinfo = record->thread;
620 const struct btrace_config * config;
630 return PyUnicode_FromString (btrace_format_short_string (config->format));
645 if (tinfo->
btrace.replay == NULL)
705 unsigned long first = 0;
706 unsigned long last = 0;
734 unsigned long first = 0;
735 unsigned long last = 0;
767 if (!PyArg_ParseTuple (args,
"O", &parse_obj))
771 return PyErr_Format (PyExc_TypeError, _(
"Argument must be instruction."));
785 catch (
const gdb_exception &except)
struct gdbarch * target_gdbarch(void)
const struct btrace_function * btrace_call_get(const struct btrace_call_iterator *it)
unsigned int btrace_call_number(const struct btrace_call_iterator *it)
void btrace_insn_end(struct btrace_insn_iterator *it, const struct btrace_thread_info *btinfo)
int btrace_find_insn_by_number(struct btrace_insn_iterator *it, const struct btrace_thread_info *btinfo, unsigned int number)
void btrace_call_begin(struct btrace_call_iterator *it, const struct btrace_thread_info *btinfo)
const char * btrace_decode_error(enum btrace_format format, int errcode)
int btrace_find_call_by_number(struct btrace_call_iterator *it, const struct btrace_thread_info *btinfo, unsigned int number)
void btrace_fetch(struct thread_info *tp, const struct btrace_cpu *cpu)
const struct btrace_config * btrace_conf(const struct btrace_thread_info *btinfo)
const struct btrace_insn * btrace_insn_get(const struct btrace_insn_iterator *it)
unsigned int btrace_insn_number(const struct btrace_insn_iterator *it)
int btrace_insn_get_error(const struct btrace_insn_iterator *it)
int btrace_is_empty(struct thread_info *tp)
void btrace_insn_begin(struct btrace_insn_iterator *it, const struct btrace_thread_info *btinfo)
void btrace_call_end(struct btrace_call_iterator *it, const struct btrace_thread_info *btinfo)
@ BTRACE_INSN_FLAG_SPECULATIVE
const std::string & string()
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
int gdb_print_insn(struct gdbarch *gdbarch, CORE_ADDR memaddr, struct ui_file *stream, int *branch_delay_insns)
PyObject * recpy_bt_func_prev(PyObject *self, void *closure)
PyObject * recpy_bt_func_instructions(PyObject *self, void *closure)
PyObject * recpy_bt_func_up(PyObject *self, void *closure)
static int btpy_list_contains(PyObject *self, PyObject *value)
PyObject * recpy_bt_format(PyObject *self, void *closure)
static PySequenceMethods btpy_list_sequence_methods
static PyObject * btpy_list_index(PyObject *self, PyObject *value)
static PyObject * btpy_list_richcompare(PyObject *self, PyObject *other, int op)
static const btrace_insn * btrace_insn_from_recpy_insn(const PyObject *const pyobject)
static const btrace_function * btrace_func_from_recpy_func(const PyObject *const pyobject)
PyObject * recpy_bt_insn_pc(PyObject *self, void *closure)
static PyTypeObject btpy_list_type
PyObject * recpy_bt_func_symbol(PyObject *self, void *closure)
PyObject * recpy_bt_begin(PyObject *self, void *closure)
static Py_ssize_t btpy_list_length(PyObject *self)
PyObject * recpy_bt_insn_sal(PyObject *self, void *closure)
PyObject * recpy_bt_goto(PyObject *self, PyObject *args)
static PyObject * btpy_insn_or_gap_new(thread_info *tinfo, Py_ssize_t number)
static LONGEST btpy_list_position(PyObject *self, PyObject *value)
PyObject * recpy_bt_end(PyObject *self, void *closure)
PyObject * recpy_bt_method(PyObject *self, void *closure)
static PyObject * btpy_list_slice(PyObject *self, PyObject *value)
PyObject * recpy_bt_func_level(PyObject *self, void *closure)
static PyObject * btpy_list_count(PyObject *self, PyObject *value)
static PyObject * btpy_list_item(PyObject *self, Py_ssize_t index)
PyObject * recpy_bt_insn_decoded(PyObject *self, void *closure)
PyObject * recpy_bt_replay_position(PyObject *self, void *closure)
PyObject * recpy_bt_insn_data(PyObject *self, void *closure)
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION gdbpy_initialize_btrace(void)
PyObject * recpy_bt_func_next(PyObject *self, void *closure)
static PyMappingMethods btpy_list_mapping_methods
PyObject * recpy_bt_instruction_history(PyObject *self, void *closure)
static PyObject * btpy_list_new(thread_info *thread, Py_ssize_t first, Py_ssize_t last, Py_ssize_t step, PyTypeObject *element_type)
PyObject * recpy_bt_insn_is_speculative(PyObject *self, void *closure)
PyObject * recpy_bt_insn_size(PyObject *self, void *closure)
static PyMethodDef btpy_list_methods[]
PyObject * recpy_bt_function_call_history(PyObject *self, void *closure)
PyTypeObject recpy_func_type
PyObject * recpy_gap_new(int reason_code, const char *reason_string, Py_ssize_t number)
PyObject * recpy_func_new(thread_info *thread, enum record_method method, Py_ssize_t number)
PyObject * recpy_insn_new(thread_info *thread, enum record_method method, Py_ssize_t number)
PyTypeObject recpy_insn_type
PyObject * symbol_to_symbol_object(struct symbol *sym)
PyObject * symtab_and_line_to_sal_object(struct symtab_and_line sal)
gdbpy_ref gdb_py_object_from_longest(LONGEST l)
void gdbpy_convert_exception(const struct gdb_exception &exception)
gdbpy_ref gdb_py_object_from_ulongest(ULONGEST l)
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
#define GDBPY_INITIALIZE_FILE(INIT,...)
PyObject * gdbpy_gdb_error
#define GDB_PY_HANDLE_EXCEPTION(Exception)
const struct btrace_cpu * record_btrace_get_cpu(void)
void(* func)(remote_target *remote, char *)
PyTypeObject * element_type
PyObject_HEAD thread_info * thread
PyObject_HEAD thread_info * thread
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
void target_goto_record(ULONGEST insn)
void target_goto_record_end(void)