Home | History | Annotate | Line # | Download | only in python
py-record.h revision 1.1.1.3.2.1
      1 /* Python interface to record targets.
      2 
      3    Copyright 2017-2023 Free Software Foundation, Inc.
      4 
      5    This file is part of GDB.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #ifndef PYTHON_PY_RECORD_H
     21 #define PYTHON_PY_RECORD_H
     22 
     23 #include "inferior.h"
     24 #include "python-internal.h"
     25 #include "record.h"
     26 
     27 /* Python Record object.  */
     28 struct recpy_record_object
     29 {
     30   PyObject_HEAD
     31 
     32   /* The thread this object refers to.  */
     33   thread_info *thread;
     34 
     35   /* The current recording method.  */
     36   enum record_method method;
     37 };
     38 
     39 /* Python recorded element object.  This is generic enough to represent
     40    recorded instructions as well as recorded function call segments, hence the
     41    generic name.  */
     42 struct recpy_element_object
     43 {
     44   PyObject_HEAD
     45 
     46   /* The thread this object refers to.  */
     47   thread_info *thread;
     48 
     49   /* The current recording method.  */
     50   enum record_method method;
     51 
     52   /* Element number.  */
     53   Py_ssize_t number;
     54 };
     55 
     56 /* Python RecordInstruction type.  */
     57 extern PyTypeObject recpy_insn_type;
     58 
     59 /* Python RecordFunctionSegment type.  */
     60 extern PyTypeObject recpy_func_type;
     61 
     62 /* Create a new gdb.RecordInstruction object.  */
     63 extern PyObject *recpy_insn_new (thread_info *thread, enum record_method method,
     64 				 Py_ssize_t number);
     65 
     66 /* Create a new gdb.RecordFunctionSegment object.  */
     67 extern PyObject *recpy_func_new (thread_info *thread, enum record_method method,
     68 				 Py_ssize_t number);
     69 
     70 /* Create a new gdb.RecordGap object.  */
     71 extern PyObject *recpy_gap_new (int reason_code, const char *reason_string,
     72 				Py_ssize_t number);
     73 
     74 #endif /* PYTHON_PY_RECORD_H */
     75