31 #define BTPY_PYSLICE(x) (x) 35 #define BTPY_PYSLICE(x) ((PySliceObject *) x) 166 const char *err_string;
181 PyTypeObject *element_type)
195 return (PyObject *) obj;
205 PyObject *result = NULL;
248 return PyInt_FromLong (insn->
size);
293 object = PyBytes_FromStringAndSize ((
const char*)
buffer, insn->
size);
300 return PyMemoryView_FromObject (
object);
302 return PyBuffer_FromObject (
object, 0, Py_END_OF_BUFFER);
331 return PyBytes_FromString (strfile.
string ().c_str ());
347 return PyInt_FromLong (tinfo->
btrace.level +
func->level);
361 if (
func->sym == NULL)
379 len =
func->insn.size ();
386 func->insn_offset,
func->insn_offset + len, 1,
450 const Py_ssize_t distance = obj->
last - obj->
first;
451 const Py_ssize_t result = distance / obj->
step;
453 if ((distance % obj->
step) == 0)
470 return PyErr_Format (PyExc_IndexError,
_(
"Index out of range: %zd."),
473 number = obj->
first + (obj->
step * index);
488 Py_ssize_t start, stop, step, slicelength;
490 if (PyInt_Check (
value))
492 Py_ssize_t index = PyInt_AsSsize_t (
value);
501 if (!PySlice_Check (
value))
502 return PyErr_Format (PyExc_TypeError,
_(
"Index must be int or slice."));
505 &step, &slicelength))
521 Py_ssize_t index = obj->
number;
529 if (index < list_obj->first || index > list_obj->
last)
532 index -= list_obj->
first;
534 if (index % list_obj->
step != 0)
537 return index / list_obj->
step;
559 return PyErr_Format (PyExc_ValueError,
_(
"Not in list."));
585 Py_INCREF (Py_NotImplemented);
586 return Py_NotImplemented;
615 Py_INCREF (Py_NotImplemented);
616 return Py_NotImplemented;
625 return PyString_FromString (
"btrace");
661 if (tinfo->
btrace.replay == NULL)
721 unsigned long first = 0;
722 unsigned long last = 0;
750 unsigned long first = 0;
751 unsigned long last = 0;
782 if (!PyArg_ParseTuple (args,
"O", &obj))
786 return PyErr_Format (PyExc_TypeError,
_(
"Argument must be instruction."));
struct gdbarch * target_gdbarch(void)
struct thread_info * find_thread_ptid(ptid_t ptid)
PyObject * symtab_and_line_to_sal_object(struct symtab_and_line sal)
PyObject * recpy_bt_func_symbol(PyObject *self, void *closure)
static PySequenceMethods btpy_list_sequence_methods
PyObject * recpy_insn_new(ptid_t ptid, enum record_method method, Py_ssize_t number)
PyTypeObject * element_type
PyObject * recpy_bt_func_instructions(PyObject *self, void *closure)
def record(name, number, comment=None)
PyObject * recpy_bt_insn_size(PyObject *self, void *closure)
PyObject * recpy_bt_func_up(PyObject *self, void *closure)
unsigned int btrace_call_number(const struct btrace_call_iterator *it)
static Py_ssize_t btpy_list_length(PyObject *self)
#define gdb_py_long_from_ulongest
static PyObject * btpy_list_index(PyObject *self, PyObject *value)
PyObject * recpy_bt_insn_pc(PyObject *self, void *closure)
int btrace_insn_get_error(const struct btrace_insn_iterator *it)
PyObject * recpy_bt_instruction_history(PyObject *self, void *closure)
PyObject * recpy_bt_insn_is_speculative(PyObject *self, void *closure)
#define PyVarObject_HEAD_INIT(type, size)
void btrace_insn_begin(struct btrace_insn_iterator *it, const struct btrace_thread_info *btinfo)
static PyTypeObject btpy_list_type
static PyObject * btpy_list_item(PyObject *self, Py_ssize_t index)
PyObject * recpy_bt_format(PyObject *self, void *closure)
#define GDB_PY_HANDLE_EXCEPTION(Exception)
unsigned int btrace_insn_number(const struct btrace_insn_iterator *it)
int gdbpy_initialize_btrace(void)
PyTypeObject recpy_func_type
static PyObject * btpy_list_slice(PyObject *self, PyObject *value)
#define CATCH(EXCEPTION, MASK)
PyObject * recpy_bt_begin(PyObject *self, void *closure)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
PyObject * gdbpy_gdb_error
void btrace_insn_end(struct btrace_insn_iterator *it, const struct btrace_thread_info *btinfo)
int gdb_print_insn(struct gdbarch *gdbarch, CORE_ADDR memaddr, struct ui_file *stream, int *branch_delay_insns)
PyObject * recpy_func_new(ptid_t ptid, enum record_method method, Py_ssize_t number)
static PyObject * btpy_insn_or_gap_new(const thread_info *tinfo, Py_ssize_t number)
void btrace_call_end(struct btrace_call_iterator *it, const struct btrace_thread_info *btinfo)
const char * btrace_decode_error(enum btrace_format format, int errcode)
void target_goto_record_end(void)
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)
void target_goto_record(ULONGEST insn)
PyObject * recpy_bt_goto(PyObject *self, PyObject *args)
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static PyObject * btpy_list_richcompare(PyObject *self, PyObject *other, int op)
PyObject * recpy_bt_func_level(PyObject *self, void *closure)
int btrace_is_empty(struct thread_info *tp)
#define gdb_py_long_from_longest
static PyObject * btpy_list_count(PyObject *self, PyObject *value)
PyObject * recpy_bt_func_prev(PyObject *self, void *closure)
static int btpy_list_contains(PyObject *self, PyObject *value)
void btrace_fetch(struct thread_info *tp)
static const btrace_function * btrace_func_from_recpy_func(const PyObject *const pyobject)
PyObject * recpy_bt_replay_position(PyObject *self, void *closure)
static const btrace_insn * btrace_insn_from_recpy_insn(const PyObject *const pyobject)
void btrace_call_begin(struct btrace_call_iterator *it, const struct btrace_thread_info *btinfo)
void gdbpy_convert_exception(struct gdb_exception exception)
PyObject * recpy_bt_method(PyObject *self, void *closure)
PyObject_HEAD ptid_t ptid
const struct btrace_function * btrace_call_get(const struct btrace_call_iterator *it)
int ptid_equal(const ptid_t &ptid1, const ptid_t &ptid2)
PyObject * recpy_bt_insn_sal(PyObject *self, void *closure)
static LONGEST btpy_list_position(PyObject *self, PyObject *value)
PyObject * recpy_gap_new(int reason_code, const char *reason_string, Py_ssize_t number)
PyObject_HEAD ptid_t ptid
PyTypeObject recpy_insn_type
static PyMappingMethods btpy_list_mapping_methods
int btrace_find_insn_by_number(struct btrace_insn_iterator *it, const struct btrace_thread_info *btinfo, unsigned int number)
enum btrace_format format
PyObject * recpy_bt_insn_decoded(PyObject *self, void *closure)
PyObject * recpy_bt_insn_data(PyObject *self, void *closure)
PyObject * symbol_to_symbol_object(struct symbol *sym)
PyObject * recpy_bt_end(PyObject *self, void *closure)
struct PyMethodDef btpy_list_methods[]
PyObject * recpy_bt_func_next(PyObject *self, void *closure)
PyObject * recpy_bt_function_call_history(PyObject *self, void *closure)
int btrace_find_call_by_number(struct btrace_call_iterator *it, const struct btrace_thread_info *btinfo, unsigned int number)
const char * btrace_format_short_string(enum btrace_format format)
static PyObject * btpy_list_new(ptid_t ptid, Py_ssize_t first, Py_ssize_t last, Py_ssize_t step, PyTypeObject *element_type)