mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
Remove Python API checker defines
The GCC plugin that implements the Python API checker does not appear to really be maintained. And, as far as I know, it never really worked for C++ code anyway. Considering those factors, and that no one has tried to run it in years, I think it's time to remove the macros from the gdb source. Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
@@ -42,8 +42,7 @@ static const registry<gdbarch>::key<PyObject, gdb::noop_deleter<PyObject>>
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
extern PyTypeObject arch_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("arch_object");
|
||||
extern PyTypeObject arch_object_type;
|
||||
|
||||
/* Associates an arch_object with GDBARCH as gdbarch_data via the gdbarch
|
||||
post init registration mechanism (gdbarch_data_register_post_init). */
|
||||
@@ -368,8 +367,8 @@ gdbpy_all_architecture_names (PyObject *self, PyObject *args)
|
||||
|
||||
/* Initializes the Architecture class in the gdb module. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_arch (void)
|
||||
static int
|
||||
gdbpy_initialize_arch ()
|
||||
{
|
||||
arch_object_type.tp_new = PyType_GenericNew;
|
||||
return gdbpy_type_ready (&arch_object_type);
|
||||
|
||||
@@ -56,8 +56,8 @@ info_auto_load_python_scripts (const char *pattern, int from_tty)
|
||||
&extension_language_python);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_auto_load (void)
|
||||
static int
|
||||
gdbpy_initialize_auto_load ()
|
||||
{
|
||||
add_setshow_boolean_cmd ("python-scripts", class_support,
|
||||
&auto_load_python_scripts, _("\
|
||||
|
||||
@@ -72,8 +72,7 @@ struct block_syms_iterator_object {
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
extern PyTypeObject block_syms_iterator_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("block_syms_iterator_object");
|
||||
extern PyTypeObject block_syms_iterator_object_type;
|
||||
static const registry<objfile>::key<htab, htab_deleter>
|
||||
blpy_objfile_data_key;
|
||||
|
||||
@@ -523,8 +522,8 @@ blpy_richcompare (PyObject *self, PyObject *other, int op)
|
||||
return PyBool_FromLong (equal == expected);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_blocks (void)
|
||||
static int
|
||||
gdbpy_initialize_blocks ()
|
||||
{
|
||||
block_object_type.tp_new = PyType_GenericNew;
|
||||
if (gdbpy_type_ready (&block_object_type) < 0)
|
||||
|
||||
@@ -35,8 +35,7 @@
|
||||
#include "linespec.h"
|
||||
#include "gdbsupport/common-utils.h"
|
||||
|
||||
extern PyTypeObject breakpoint_location_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("breakpoint_location_object");
|
||||
extern PyTypeObject breakpoint_location_object_type;
|
||||
|
||||
struct gdbpy_breakpoint_location_object
|
||||
{
|
||||
@@ -1353,8 +1352,8 @@ gdbpy_breakpoint_modified (struct breakpoint *b)
|
||||
|
||||
|
||||
/* Initialize the Python breakpoint code. */
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_breakpoints (void)
|
||||
static int
|
||||
gdbpy_initialize_breakpoints ()
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -1389,7 +1388,7 @@ gdbpy_initialize_breakpoints (void)
|
||||
|
||||
/* Initialize the Python BreakpointLocation code. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
static int
|
||||
gdbpy_initialize_breakpoint_locations ()
|
||||
{
|
||||
return gdbpy_type_ready (&breakpoint_location_object_type);
|
||||
|
||||
@@ -65,8 +65,7 @@ struct cmdpy_object
|
||||
struct cmd_list_element *sub_list;
|
||||
};
|
||||
|
||||
extern PyTypeObject cmdpy_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("cmdpy_object");
|
||||
extern PyTypeObject cmdpy_object_type;
|
||||
|
||||
/* Constants used by this module. */
|
||||
static PyObject *invoke_cst;
|
||||
@@ -595,8 +594,8 @@ cmdpy_init (PyObject *self, PyObject *args, PyObject *kw)
|
||||
|
||||
/* Initialize the 'commands' code. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_commands (void)
|
||||
static int
|
||||
gdbpy_initialize_commands ()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
@@ -44,11 +44,9 @@ struct connection_object
|
||||
struct process_stratum_target *target;
|
||||
};
|
||||
|
||||
extern PyTypeObject connection_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("connection_object");
|
||||
extern PyTypeObject connection_object_type;
|
||||
|
||||
extern PyTypeObject remote_connection_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("remote_connection_object");
|
||||
extern PyTypeObject remote_connection_object_type;
|
||||
|
||||
/* Require that CONNECTION be valid. */
|
||||
#define CONNPY_REQUIRE_VALID(connection) \
|
||||
@@ -283,8 +281,8 @@ connpy_get_connection_details (PyObject *self, void *closure)
|
||||
|
||||
/* Python specific initialization for this file. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_connection (void)
|
||||
static int
|
||||
gdbpy_initialize_connection ()
|
||||
{
|
||||
if (gdbpy_type_ready (&connection_object_type) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -47,8 +47,7 @@ struct corefile_object
|
||||
PyObject *mapped_files;
|
||||
};
|
||||
|
||||
extern PyTypeObject corefile_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("corefile_object");
|
||||
extern PyTypeObject corefile_object_type;
|
||||
|
||||
/* A gdb.CorefileMapped object. */
|
||||
|
||||
@@ -73,8 +72,7 @@ struct corefile_mapped_file_object
|
||||
bool is_main_exec_p;
|
||||
};
|
||||
|
||||
extern PyTypeObject corefile_mapped_file_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("corefile_mapped_file_object");
|
||||
extern PyTypeObject corefile_mapped_file_object_type;
|
||||
|
||||
/* A gdb.CorefileMappedFileRegion object. */
|
||||
|
||||
@@ -91,8 +89,7 @@ struct corefile_mapped_file_region_object
|
||||
ULONGEST file_offset;
|
||||
};
|
||||
|
||||
extern PyTypeObject corefile_mapped_file_region_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("corefile_mapped_file_region_object");
|
||||
extern PyTypeObject corefile_mapped_file_region_object_type;
|
||||
|
||||
/* Clear the inferior pointer in a Corefile object OBJ when an inferior is
|
||||
deleted. */
|
||||
|
||||
@@ -52,8 +52,7 @@ struct disasm_info_object
|
||||
struct disasm_info_object *next;
|
||||
};
|
||||
|
||||
extern PyTypeObject disasm_info_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("disasm_info_object");
|
||||
extern PyTypeObject disasm_info_object_type;
|
||||
|
||||
/* Implement gdb.disassembler.DisassembleAddressPart type. An object of
|
||||
this type represents a small part of a disassembled instruction; a part
|
||||
@@ -74,8 +73,7 @@ struct disasm_addr_part_object
|
||||
struct gdbarch *gdbarch;
|
||||
};
|
||||
|
||||
extern PyTypeObject disasm_addr_part_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("disasm_addr_part_object");
|
||||
extern PyTypeObject disasm_addr_part_object_type;
|
||||
|
||||
/* Implement gdb.disassembler.DisassembleTextPart type. An object of
|
||||
this type represents a small part of a disassembled instruction; a part
|
||||
@@ -92,11 +90,9 @@ struct disasm_text_part_object
|
||||
enum disassembler_style style;
|
||||
};
|
||||
|
||||
extern PyTypeObject disasm_text_part_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("disasm_text_part_object");
|
||||
extern PyTypeObject disasm_text_part_object_type;
|
||||
|
||||
extern PyTypeObject disasm_part_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("PyObject");
|
||||
extern PyTypeObject disasm_part_object_type;
|
||||
|
||||
/* Implement gdb.disassembler.DisassemblerResult type, an object that holds
|
||||
the result of calling the disassembler. This is mostly the length of
|
||||
@@ -115,8 +111,7 @@ struct disasm_result_object
|
||||
std::vector<gdbpy_ref<>> *parts;
|
||||
};
|
||||
|
||||
extern PyTypeObject disasm_result_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("disasm_result_object");
|
||||
extern PyTypeObject disasm_result_object_type;
|
||||
|
||||
/* When this is false we fast path out of gdbpy_print_insn, which should
|
||||
keep the performance impact of the Python disassembler down. This is
|
||||
@@ -1627,7 +1622,7 @@ static struct PyModuleDef python_disassembler_module_def =
|
||||
|
||||
/* Called to initialize the Python structures in this file. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
static int
|
||||
gdbpy_initialize_disasm ()
|
||||
{
|
||||
/* Create the _gdb.disassembler module, and add it to the _gdb module. */
|
||||
|
||||
@@ -53,8 +53,8 @@ evpy_add_attribute (PyObject *event, const char *name, PyObject *attr)
|
||||
|
||||
/* Initialize the Python event code. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_event (void)
|
||||
static int
|
||||
gdbpy_initialize_event ()
|
||||
{
|
||||
return gdbpy_type_ready (&event_object_type);
|
||||
}
|
||||
|
||||
@@ -27,8 +27,7 @@
|
||||
|
||||
/* Declare all event types. */
|
||||
#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
|
||||
extern PyTypeObject name##_event_object_type \
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
|
||||
extern PyTypeObject name##_event_object_type;
|
||||
#include "py-event-types.def"
|
||||
#undef GDB_PY_DEFINE_EVENT_TYPE
|
||||
|
||||
@@ -82,7 +81,6 @@ extern int emit_clear_objfiles_event (program_space *pspace);
|
||||
|
||||
extern void evpy_dealloc (PyObject *self);
|
||||
extern int evpy_add_attribute (PyObject *event,
|
||||
const char *name, PyObject *attr)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
const char *name, PyObject *attr);
|
||||
|
||||
#endif /* GDB_PYTHON_PY_EVENT_H */
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
|
||||
events_object gdb_py_events;
|
||||
|
||||
extern PyTypeObject eventregistry_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("eventregistry_object");
|
||||
extern PyTypeObject eventregistry_object_type;
|
||||
|
||||
/* Implementation of EventRegistry.connect () -> NULL.
|
||||
Add FUNCTION to the list of listeners. */
|
||||
@@ -101,8 +100,8 @@ evregpy_dealloc (PyObject *self)
|
||||
|
||||
/* Initialize the Python event registry code. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_eventregistry (void)
|
||||
static int
|
||||
gdbpy_initialize_eventregistry ()
|
||||
{
|
||||
return gdbpy_type_ready (&eventregistry_object_type);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ static struct PyModuleDef EventModuleDef =
|
||||
/* Helper function to add a single event registry to the events
|
||||
module. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
static int
|
||||
add_new_registry (eventregistry_object **registryp, const char *name)
|
||||
{
|
||||
*registryp = create_eventregistry_object ();
|
||||
|
||||
@@ -61,8 +61,7 @@ struct finish_breakpoint_object
|
||||
struct frame_id initiating_frame;
|
||||
};
|
||||
|
||||
extern PyTypeObject finish_breakpoint_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("finish_breakpoint_object");
|
||||
extern PyTypeObject finish_breakpoint_object_type;
|
||||
|
||||
/* Python function to get the 'return_value' attribute of
|
||||
FinishBreakpoint. */
|
||||
@@ -433,8 +432,8 @@ bpfinishpy_handle_exit (struct inferior *inf)
|
||||
|
||||
/* Initialize the Python finish breakpoint code. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_finishbreakpoints (void)
|
||||
static int
|
||||
gdbpy_initialize_finishbreakpoints ()
|
||||
{
|
||||
if (!gdbpy_breakpoint_init_breakpoint_type ())
|
||||
return -1;
|
||||
|
||||
@@ -757,8 +757,8 @@ frapy_richcompare (PyObject *self, PyObject *other, int op)
|
||||
|
||||
/* Sets up the Frame API in the gdb module. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_frames (void)
|
||||
static int
|
||||
gdbpy_initialize_frames ()
|
||||
{
|
||||
frame_object_type.tp_new = PyType_GenericNew;
|
||||
if (gdbpy_type_ready (&frame_object_type) < 0)
|
||||
|
||||
@@ -27,8 +27,7 @@
|
||||
#include "expression.h"
|
||||
#include "language.h"
|
||||
|
||||
extern PyTypeObject fnpy_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("PyObject");
|
||||
extern PyTypeObject fnpy_object_type;
|
||||
|
||||
|
||||
|
||||
@@ -135,8 +134,8 @@ fnpy_init (PyObject *self, PyObject *args, PyObject *kwds)
|
||||
|
||||
/* Initialize internal function support. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_functions (void)
|
||||
static int
|
||||
gdbpy_initialize_functions ()
|
||||
{
|
||||
fnpy_object_type.tp_new = PyType_GenericNew;
|
||||
return gdbpy_type_ready (&fnpy_object_type);
|
||||
|
||||
@@ -82,8 +82,8 @@ gdbpy_readline_wrapper (FILE *sys_stdin, FILE *sys_stdout,
|
||||
|
||||
/* Initialize Python readline support. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_gdb_readline (void)
|
||||
static int
|
||||
gdbpy_initialize_gdb_readline ()
|
||||
{
|
||||
/* Python's readline module conflicts with GDB's use of readline
|
||||
since readline is not reentrant. Ideally, a reentrant wrapper to
|
||||
|
||||
@@ -51,8 +51,7 @@ struct inferior_object
|
||||
PyObject *dict;
|
||||
};
|
||||
|
||||
extern PyTypeObject inferior_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("inferior_object");
|
||||
extern PyTypeObject inferior_object_type;
|
||||
|
||||
/* Deleter to clean up when an inferior is removed. */
|
||||
struct infpy_deleter
|
||||
@@ -1022,8 +1021,8 @@ gdbpy_selected_inferior (PyObject *self, PyObject *args)
|
||||
inferior_to_inferior_object (current_inferior ()).release ());
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_inferior (void)
|
||||
static int
|
||||
gdbpy_initialize_inferior ()
|
||||
{
|
||||
if (gdbpy_type_ready (&inferior_object_type) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -21,8 +21,7 @@
|
||||
#include "inferior.h"
|
||||
#include "python-internal.h"
|
||||
|
||||
extern PyTypeObject thread_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("thread_object");
|
||||
extern PyTypeObject thread_object_type;
|
||||
|
||||
/* Require that INFERIOR be a valid inferior ID. */
|
||||
#define THPY_REQUIRE_VALID(Thread) \
|
||||
@@ -404,8 +403,8 @@ gdbpy_selected_thread (PyObject *self, PyObject *args)
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_thread (void)
|
||||
static int
|
||||
gdbpy_initialize_thread ()
|
||||
{
|
||||
return gdbpy_type_ready (&thread_object_type);
|
||||
}
|
||||
|
||||
@@ -80,8 +80,8 @@ py_insn_get_insn_type ()
|
||||
|
||||
/* Sets up the gdb.Instruction type. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_instruction (void)
|
||||
static int
|
||||
gdbpy_initialize_instruction ()
|
||||
{
|
||||
if (py_insn_get_insn_type () == nullptr)
|
||||
return -1;
|
||||
|
||||
@@ -52,8 +52,7 @@ struct lazy_string_object {
|
||||
PyObject *type;
|
||||
};
|
||||
|
||||
extern PyTypeObject lazy_string_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("lazy_string_object");
|
||||
extern PyTypeObject lazy_string_object_type;
|
||||
|
||||
static PyObject *
|
||||
stpy_get_address (PyObject *self, void *closure)
|
||||
@@ -242,8 +241,8 @@ gdbpy_create_lazy_string_object (CORE_ADDR address, long length,
|
||||
return (PyObject *) str_obj;
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_lazy_string (void)
|
||||
static int
|
||||
gdbpy_initialize_lazy_string ()
|
||||
{
|
||||
return gdbpy_type_ready (&lazy_string_object_type);
|
||||
}
|
||||
|
||||
@@ -27,8 +27,7 @@ struct linetable_entry_object {
|
||||
CORE_ADDR pc;
|
||||
};
|
||||
|
||||
extern PyTypeObject linetable_entry_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_entry_object");
|
||||
extern PyTypeObject linetable_entry_object_type;
|
||||
|
||||
struct linetable_object {
|
||||
PyObject_HEAD
|
||||
@@ -38,8 +37,7 @@ struct linetable_object {
|
||||
PyObject *symtab;
|
||||
};
|
||||
|
||||
extern PyTypeObject linetable_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_object");
|
||||
extern PyTypeObject linetable_object_type;
|
||||
|
||||
struct ltpy_iterator_object {
|
||||
PyObject_HEAD
|
||||
@@ -51,8 +49,7 @@ struct ltpy_iterator_object {
|
||||
PyObject *source;
|
||||
};
|
||||
|
||||
extern PyTypeObject ltpy_iterator_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("ltpy_iterator_object");
|
||||
extern PyTypeObject ltpy_iterator_object_type;
|
||||
|
||||
/* Internal helper function to extract gdb.Symtab from a gdb.LineTable
|
||||
object. */
|
||||
@@ -284,8 +281,8 @@ ltpy_dealloc (PyObject *self)
|
||||
/* Initialize LineTable, LineTableEntry and LineTableIterator
|
||||
objects. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_linetable (void)
|
||||
static int
|
||||
gdbpy_initialize_linetable ()
|
||||
{
|
||||
if (gdbpy_type_ready (&linetable_object_type) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -32,8 +32,7 @@ struct membuf_object {
|
||||
CORE_ADDR length;
|
||||
};
|
||||
|
||||
extern PyTypeObject membuf_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("membuf_object");
|
||||
extern PyTypeObject membuf_object_type;
|
||||
|
||||
/* Wrap BUFFER, ADDRESS, and LENGTH into a gdb.Membuf object. ADDRESS is
|
||||
the address within the inferior that the contents of BUFFER were read,
|
||||
@@ -98,8 +97,8 @@ get_buffer (PyObject *self, Py_buffer *buf, int flags)
|
||||
|
||||
/* General Python initialization callback. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_membuf (void)
|
||||
static int
|
||||
gdbpy_initialize_membuf ()
|
||||
{
|
||||
membuf_object_type.tp_new = PyType_GenericNew;
|
||||
return gdbpy_type_ready (&membuf_object_type);
|
||||
|
||||
@@ -165,8 +165,7 @@ private:
|
||||
|
||||
using mi_command_py_up = std::unique_ptr<mi_command_py>;
|
||||
|
||||
extern PyTypeObject micmdpy_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("micmdpy_object");
|
||||
extern PyTypeObject micmdpy_object_type;
|
||||
|
||||
/* Holds a Python object containing the string 'invoke'. */
|
||||
|
||||
@@ -443,7 +442,7 @@ micmdpy_dealloc (PyObject *obj)
|
||||
|
||||
/* Python initialization for the MI commands components. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
static int
|
||||
gdbpy_initialize_micommands ()
|
||||
{
|
||||
micmdpy_object_type.tp_new = PyType_GenericNew;
|
||||
|
||||
@@ -53,8 +53,7 @@ struct objfile_object
|
||||
PyObject *xmethods;
|
||||
};
|
||||
|
||||
extern PyTypeObject objfile_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("objfile_object");
|
||||
extern PyTypeObject objfile_object_type;
|
||||
|
||||
/* Clear the OBJFILE pointer in an Objfile object and remove the
|
||||
reference. */
|
||||
@@ -704,8 +703,8 @@ objfile_to_objfile_object (struct objfile *objfile)
|
||||
return gdbpy_ref<>::new_reference (result);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_objfile (void)
|
||||
static int
|
||||
gdbpy_initialize_objfile ()
|
||||
{
|
||||
return gdbpy_type_ready (&objfile_object_type);
|
||||
}
|
||||
|
||||
@@ -170,8 +170,7 @@ make_setting (parmpy_object *s)
|
||||
gdb_assert_not_reached ("unhandled var type");
|
||||
}
|
||||
|
||||
extern PyTypeObject parmpy_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("parmpy_object");
|
||||
extern PyTypeObject parmpy_object_type;
|
||||
|
||||
/* Some handy string constants. */
|
||||
static PyObject *set_doc_cst;
|
||||
@@ -953,8 +952,8 @@ parmpy_dealloc (PyObject *obj)
|
||||
}
|
||||
|
||||
/* Initialize the 'parameters' module. */
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_parameters (void)
|
||||
static int
|
||||
gdbpy_initialize_parameters ()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
@@ -59,8 +59,7 @@ struct pspace_object
|
||||
PyObject *missing_file_handlers;
|
||||
};
|
||||
|
||||
extern PyTypeObject pspace_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("pspace_object");
|
||||
extern PyTypeObject pspace_object_type;
|
||||
|
||||
/* Clear the PSPACE pointer in a Pspace object and remove the reference. */
|
||||
struct pspace_deleter
|
||||
@@ -737,8 +736,8 @@ gdbpy_free_program_space_event (program_space *pspace)
|
||||
gdbpy_program_space_event (pspace, false);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_pspace (void)
|
||||
static int
|
||||
gdbpy_initialize_pspace ()
|
||||
{
|
||||
gdb::observers::executable_changed.attach (gdbpy_executable_changed,
|
||||
"py-progspace");
|
||||
|
||||
@@ -987,8 +987,8 @@ static PyMappingMethods btpy_list_mapping_methods =
|
||||
|
||||
/* Sets up the btrace record API. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_btrace (void)
|
||||
static int
|
||||
gdbpy_initialize_btrace ()
|
||||
{
|
||||
btpy_list_type.tp_new = PyType_GenericNew;
|
||||
btpy_list_type.tp_flags = Py_TPFLAGS_DEFAULT;
|
||||
|
||||
@@ -607,8 +607,8 @@ static gdb_PyGetSetDef recpy_aux_getset[] = {
|
||||
|
||||
/* Sets up the record API in the gdb module. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_record (void)
|
||||
static int
|
||||
gdbpy_initialize_record ()
|
||||
{
|
||||
recpy_record_type.tp_new = PyType_GenericNew;
|
||||
recpy_record_type.tp_flags = Py_TPFLAGS_DEFAULT;
|
||||
|
||||
@@ -46,8 +46,7 @@ struct register_descriptor_iterator_object {
|
||||
struct gdbarch *gdbarch;
|
||||
};
|
||||
|
||||
extern PyTypeObject register_descriptor_iterator_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("register_descriptor_iterator_object");
|
||||
extern PyTypeObject register_descriptor_iterator_object_type;
|
||||
|
||||
/* A register descriptor. */
|
||||
struct register_descriptor_object {
|
||||
@@ -60,8 +59,7 @@ struct register_descriptor_object {
|
||||
struct gdbarch *gdbarch;
|
||||
};
|
||||
|
||||
extern PyTypeObject register_descriptor_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("register_descriptor_object");
|
||||
extern PyTypeObject register_descriptor_object_type;
|
||||
|
||||
/* Structure for iterator over register groups. */
|
||||
struct reggroup_iterator_object {
|
||||
@@ -74,8 +72,7 @@ struct reggroup_iterator_object {
|
||||
struct gdbarch *gdbarch;
|
||||
};
|
||||
|
||||
extern PyTypeObject reggroup_iterator_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("reggroup_iterator_object");
|
||||
extern PyTypeObject reggroup_iterator_object_type;
|
||||
|
||||
/* A register group object. */
|
||||
struct reggroup_object {
|
||||
@@ -85,8 +82,7 @@ struct reggroup_object {
|
||||
const struct reggroup *reggroup;
|
||||
};
|
||||
|
||||
extern PyTypeObject reggroup_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("reggroup_object");
|
||||
extern PyTypeObject reggroup_object_type;
|
||||
|
||||
/* Return a gdb.RegisterGroup object wrapping REGGROUP. The register
|
||||
group objects are cached, and the same Python object will always be
|
||||
@@ -425,7 +421,7 @@ gdbpy_parse_register_id (struct gdbarch *gdbarch, PyObject *pyo_reg_id,
|
||||
|
||||
/* Initializes the new Python classes from this file in the gdb module. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
static int
|
||||
gdbpy_initialize_registers ()
|
||||
{
|
||||
register_descriptor_object_type.tp_new = PyType_GenericNew;
|
||||
|
||||
@@ -645,8 +645,8 @@ gdbpy_lookup_static_symbols (PyObject *self, PyObject *args, PyObject *kw)
|
||||
return return_list.release ();
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_symbols (void)
|
||||
static int
|
||||
gdbpy_initialize_symbols ()
|
||||
{
|
||||
if (gdbpy_type_ready (&symbol_object_type) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -30,8 +30,7 @@ struct symtab_object {
|
||||
struct symtab *symtab;
|
||||
};
|
||||
|
||||
extern PyTypeObject symtab_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object");
|
||||
extern PyTypeObject symtab_object_type;
|
||||
static const gdbpy_registry<gdbpy_memoizing_registry_storage<symtab_object,
|
||||
symtab, &symtab_object::symtab>> stpy_registry;
|
||||
|
||||
@@ -74,8 +73,7 @@ struct salpy_invalidator
|
||||
}
|
||||
};
|
||||
|
||||
extern PyTypeObject sal_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object");
|
||||
extern PyTypeObject sal_object_type;
|
||||
static const gdbpy_registry<gdbpy_tracking_registry_storage<sal_object,
|
||||
symtab_and_line, &sal_object::sal, salpy_invalidator>> salpy_registry;
|
||||
|
||||
@@ -423,8 +421,8 @@ symtab_object_to_symtab (PyObject *obj)
|
||||
return ((symtab_object *) obj)->symtab;
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_symtabs (void)
|
||||
static int
|
||||
gdbpy_initialize_symtabs ()
|
||||
{
|
||||
symtab_object_type.tp_new = PyType_GenericNew;
|
||||
if (gdbpy_type_ready (&symtab_object_type) < 0)
|
||||
|
||||
@@ -55,8 +55,7 @@ struct gdbpy_tui_window
|
||||
bool is_valid () const;
|
||||
};
|
||||
|
||||
extern PyTypeObject gdbpy_tui_window_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("gdbpy_tui_window");
|
||||
extern PyTypeObject gdbpy_tui_window_object_type;
|
||||
|
||||
/* A TUI window written in Python. */
|
||||
|
||||
@@ -646,7 +645,7 @@ gdbpy_tui_enabled (bool state)
|
||||
|
||||
/* Initialize this module. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
static int
|
||||
gdbpy_initialize_tui ()
|
||||
{
|
||||
#ifdef TUI
|
||||
|
||||
@@ -34,8 +34,7 @@ struct type_object
|
||||
struct type *type;
|
||||
};
|
||||
|
||||
extern PyTypeObject type_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("type_object");
|
||||
extern PyTypeObject type_object_type;
|
||||
|
||||
/* A Field object. */
|
||||
struct field_object
|
||||
@@ -46,8 +45,7 @@ struct field_object
|
||||
PyObject *dict;
|
||||
};
|
||||
|
||||
extern PyTypeObject field_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("field_object");
|
||||
extern PyTypeObject field_object_type;
|
||||
|
||||
/* A type iterator object. */
|
||||
struct typy_iterator_object {
|
||||
@@ -60,8 +58,7 @@ struct typy_iterator_object {
|
||||
type_object *source;
|
||||
};
|
||||
|
||||
extern PyTypeObject type_iterator_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("typy_iterator_object");
|
||||
extern PyTypeObject type_iterator_object_type;
|
||||
|
||||
/* This is used to initialize various gdb.TYPE_ constants. */
|
||||
struct pyty_code
|
||||
@@ -1511,8 +1508,8 @@ gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw)
|
||||
return type_to_type_object (type);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_types (void)
|
||||
static int
|
||||
gdbpy_initialize_types ()
|
||||
{
|
||||
if (gdbpy_type_ready (&type_object_type) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -133,11 +133,9 @@ struct cached_frame_info
|
||||
cached_reg_t reg[0];
|
||||
};
|
||||
|
||||
extern PyTypeObject pending_frame_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("pending_frame_object");
|
||||
extern PyTypeObject pending_frame_object_type;
|
||||
|
||||
extern PyTypeObject unwind_info_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("unwind_info_object");
|
||||
extern PyTypeObject unwind_info_object_type;
|
||||
|
||||
/* An enum returned by pyuw_object_attribute_to_pointer, a function which
|
||||
is used to extract an attribute from a Python object. */
|
||||
@@ -1017,8 +1015,8 @@ pyuw_on_new_gdbarch (gdbarch *newarch)
|
||||
|
||||
/* Initialize unwind machinery. */
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_unwind (void)
|
||||
static int
|
||||
gdbpy_initialize_unwind ()
|
||||
{
|
||||
gdb::observers::new_architecture.attach (pyuw_on_new_gdbarch, "py-unwind");
|
||||
|
||||
|
||||
@@ -2244,8 +2244,8 @@ gdbpy_is_value_object (PyObject *obj)
|
||||
return PyObject_TypeCheck (obj, &value_object_type);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_values (void)
|
||||
static int
|
||||
gdbpy_initialize_values ()
|
||||
{
|
||||
return gdbpy_type_ready (&value_object_type);
|
||||
}
|
||||
|
||||
@@ -598,8 +598,8 @@ python_xmethod_worker::python_xmethod_worker (PyObject *py_worker,
|
||||
Py_INCREF (this_type);
|
||||
}
|
||||
|
||||
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
gdbpy_initialize_xmethods (void)
|
||||
static int
|
||||
gdbpy_initialize_xmethods ()
|
||||
{
|
||||
py_match_method_name = PyUnicode_FromString (match_method_name);
|
||||
if (py_match_method_name == NULL)
|
||||
|
||||
@@ -24,34 +24,6 @@
|
||||
#include "extension-priv.h"
|
||||
#include "registry.h"
|
||||
|
||||
/* These WITH_* macros are defined by the CPython API checker that
|
||||
comes with the Python plugin for GCC. See:
|
||||
https://gcc-python-plugin.readthedocs.org/en/latest/cpychecker.html
|
||||
The checker defines a WITH_ macro for each attribute it
|
||||
exposes. Note that we intentionally do not use
|
||||
'cpychecker_returns_borrowed_ref' -- that idiom is forbidden in
|
||||
gdb. */
|
||||
|
||||
#ifdef WITH_CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF_ATTRIBUTE
|
||||
#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) \
|
||||
__attribute__ ((cpychecker_type_object_for_typedef (ARG)))
|
||||
#else
|
||||
#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG)
|
||||
#endif
|
||||
|
||||
#ifdef WITH_CPYCHECKER_SETS_EXCEPTION_ATTRIBUTE
|
||||
#define CPYCHECKER_SETS_EXCEPTION __attribute__ ((cpychecker_sets_exception))
|
||||
#else
|
||||
#define CPYCHECKER_SETS_EXCEPTION
|
||||
#endif
|
||||
|
||||
#ifdef WITH_CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION_ATTRIBUTE
|
||||
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION \
|
||||
__attribute__ ((cpychecker_negative_result_sets_exception))
|
||||
#else
|
||||
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
||||
#endif
|
||||
|
||||
/* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE
|
||||
if it sees _GNU_SOURCE (which config.h will define).
|
||||
pyconfig.h defines _POSIX_C_SOURCE to a different value than
|
||||
@@ -349,20 +321,13 @@ extern int gdb_python_initialized;
|
||||
|
||||
extern PyObject *gdb_module;
|
||||
extern PyObject *gdb_python_module;
|
||||
extern PyTypeObject value_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("value_object");
|
||||
extern PyTypeObject block_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF("block_object");
|
||||
extern PyTypeObject symbol_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symbol_object");
|
||||
extern PyTypeObject event_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
|
||||
extern PyTypeObject breakpoint_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("breakpoint_object");
|
||||
extern PyTypeObject frame_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("frame_object");
|
||||
extern PyTypeObject thread_object_type
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("thread_object");
|
||||
extern PyTypeObject value_object_type;
|
||||
extern PyTypeObject block_object_type;
|
||||
extern PyTypeObject symbol_object_type;
|
||||
extern PyTypeObject event_object_type;
|
||||
extern PyTypeObject breakpoint_object_type;
|
||||
extern PyTypeObject frame_object_type;
|
||||
extern PyTypeObject thread_object_type;
|
||||
|
||||
/* Ensure that breakpoint_object_type is initialized and return true. If
|
||||
breakpoint_object_type can't be initialized then set a suitable Python
|
||||
@@ -1004,8 +969,7 @@ extern PyObject *gdbpy_gdb_error;
|
||||
extern PyObject *gdbpy_gdb_memory_error;
|
||||
extern PyObject *gdbpy_gdberror_exc;
|
||||
|
||||
extern void gdbpy_convert_exception (const struct gdb_exception &)
|
||||
CPYCHECKER_SETS_EXCEPTION;
|
||||
extern void gdbpy_convert_exception (const struct gdb_exception &);
|
||||
|
||||
/* Use this in a 'catch' block to convert the exception E to a Python
|
||||
exception and return value VAL to signal that an exception occurred.
|
||||
@@ -1019,8 +983,7 @@ gdbpy_handle_gdb_exception (T val, const gdb_exception &e)
|
||||
return val;
|
||||
}
|
||||
|
||||
int get_addr_from_python (PyObject *obj, CORE_ADDR *addr)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
int get_addr_from_python (PyObject *obj, CORE_ADDR *addr);
|
||||
|
||||
gdbpy_ref<> gdb_py_object_from_longest (LONGEST l);
|
||||
gdbpy_ref<> gdb_py_object_from_ulongest (ULONGEST l);
|
||||
@@ -1029,8 +992,7 @@ int gdb_py_int_as_long (PyObject *, long *);
|
||||
PyObject *gdb_py_generic_dict (PyObject *self, void *closure);
|
||||
|
||||
int gdb_pymodule_addobject (PyObject *module, const char *name,
|
||||
PyObject *object)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
PyObject *object);
|
||||
|
||||
|
||||
/* Return a Python string (str) object that represents SELF. SELF can be
|
||||
|
||||
@@ -3203,8 +3203,7 @@ Print a warning." },
|
||||
|
||||
/* Define all the event objects. */
|
||||
#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
|
||||
PyTypeObject name##_event_object_type \
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
|
||||
PyTypeObject name##_event_object_type \
|
||||
= { \
|
||||
PyVarObject_HEAD_INIT (NULL, 0) \
|
||||
"gdb." py_name, /* tp_name */ \
|
||||
|
||||
Reference in New Issue
Block a user