This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] HACK externify static variables in python support for -Wc++-compat
- From: Ben Longbons <brlongbons at gmail dot com>
- To: gdb-patches at sourceware dot org
- Cc: Ben Longbons <b dot r dot longbons at gmail dot com>
- Date: Sat, 21 Dec 2013 21:19:08 -0800
- Subject: [PATCH] HACK externify static variables in python support for -Wc++-compat
- Authentication-results: sourceware.org; auth=none
This is an approach to one of the non-trivial cases for C++ conversion:
C++ (sensibly IMHO) does not allow a static variable to be defined more
than once (treating the first as a declaration) in a TU.
This would probably be better done by moving the definitiion up,
which we might be able to get away with in gdb's code, since it *is*
legal to forward-declare a static *function*.
In general, it might not work, if there are two statics trying to take
each other's addresses ...
That said, it's pretty suspicious to be defining a static variable more
than once in a TU even in C.
This exists in repo form at https://github.com/o11c/binutils-gdb/tree/c++
---
gdb/python/py-arch.c | 7 +++++--
gdb/python/py-block.c | 7 +++++--
gdb/python/py-bpevent.c | 7 +++++--
gdb/python/py-cmd.c | 7 +++++--
gdb/python/py-continueevent.c | 7 +++++--
gdb/python/py-evtregistry.c | 7 +++++--
gdb/python/py-exitedevent.c | 7 +++++--
gdb/python/py-finishbreakpoint.c | 7 +++++--
gdb/python/py-function.c | 7 +++++--
gdb/python/py-inferior.c | 11 +++++++----
gdb/python/py-infthread.c | 7 +++++--
gdb/python/py-lazy-string.c | 7 +++++--
gdb/python/py-linetable.c | 15 +++++++++------
gdb/python/py-newobjfileevent.c | 7 +++++--
gdb/python/py-objfile.c | 7 +++++--
gdb/python/py-param.c | 7 +++++--
gdb/python/py-progspace.c | 7 +++++--
gdb/python/py-signalevent.c | 7 +++++--
gdb/python/py-symtab.c | 11 +++++++----
gdb/python/py-type.c | 15 +++++++++------
20 files changed, 112 insertions(+), 52 deletions(-)
diff --git a/gdb/python/py-arch.c b/gdb/python/py-arch.c
index a351c12..7583186 100644
--- a/gdb/python/py-arch.c
+++ b/gdb/python/py-arch.c
@@ -23,6 +23,9 @@
#include "disasm.h"
#include "python-internal.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct arch_object_type_object {
PyObject_HEAD
struct gdbarch *gdbarch;
@@ -42,7 +45,7 @@ static struct gdbarch_data *arch_object_data = NULL;
} \
} while (0)
-static PyTypeObject arch_object_type
+static_decl PyTypeObject arch_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("arch_object");
/* Associates an arch_object with GDBARCH as gdbarch_data via the gdbarch
@@ -281,7 +284,7 @@ END_PC." },
{NULL} /* Sentinel */
};
-static PyTypeObject arch_object_type = {
+static_def PyTypeObject arch_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Architecture", /* tp_name */
sizeof (arch_object), /* tp_basicsize */
diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c
index 73b5565..d05470e 100644
--- a/gdb/python/py-block.c
+++ b/gdb/python/py-block.c
@@ -25,6 +25,9 @@
#include "objfiles.h"
#include "symtab.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct blpy_block_object {
PyObject_HEAD
/* The GDB block structure that represents a frame's code block. */
@@ -78,7 +81,7 @@ typedef struct {
} \
} while (0)
-static PyTypeObject block_syms_iterator_object_type
+static_decl PyTypeObject block_syms_iterator_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("block_syms_iterator_object");
static const struct objfile_data *blpy_objfile_data_key;
@@ -517,7 +520,7 @@ Return true if this block iterator is valid, false if not." },
{NULL} /* Sentinel */
};
-static PyTypeObject block_syms_iterator_object_type = {
+static_def PyTypeObject block_syms_iterator_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.BlockIterator", /*tp_name*/
sizeof (block_syms_iterator_object), /*tp_basicsize*/
diff --git a/gdb/python/py-bpevent.c b/gdb/python/py-bpevent.c
index 5238ad8..3dd29b7 100644
--- a/gdb/python/py-bpevent.c
+++ b/gdb/python/py-bpevent.c
@@ -20,7 +20,10 @@
#include "defs.h"
#include "py-stopevent.h"
-static PyTypeObject breakpoint_event_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject breakpoint_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
/* Create and initialize a BreakpointEvent object. This acquires new
@@ -56,4 +59,4 @@ GDBPY_NEW_EVENT_TYPE (breakpoint,
"BreakpointEvent",
"GDB breakpoint stop event object",
stop_event_object_type,
- static);
+ static_def);
diff --git a/gdb/python/py-cmd.c b/gdb/python/py-cmd.c
index 839de8f..51ab0c4 100644
--- a/gdb/python/py-cmd.c
+++ b/gdb/python/py-cmd.c
@@ -29,6 +29,9 @@
#include "completer.h"
#include "language.h"
+#define static_decl extern
+#define static_def /*static*/
+
/* Struct representing built-in completion types. */
struct cmdpy_completer
{
@@ -69,7 +72,7 @@ struct cmdpy_object
typedef struct cmdpy_object cmdpy_object;
-static PyTypeObject cmdpy_object_type
+static_decl PyTypeObject cmdpy_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("cmdpy_object");
/* Constants used by this module. */
@@ -625,7 +628,7 @@ static PyMethodDef cmdpy_object_methods[] =
{ 0 }
};
-static PyTypeObject cmdpy_object_type =
+static_def PyTypeObject cmdpy_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Command", /*tp_name*/
diff --git a/gdb/python/py-continueevent.c b/gdb/python/py-continueevent.c
index c1f8f65..0b4c8c9 100644
--- a/gdb/python/py-continueevent.c
+++ b/gdb/python/py-continueevent.c
@@ -20,7 +20,10 @@
#include "defs.h"
#include "py-event.h"
-static PyTypeObject continue_event_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject continue_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
static PyObject *
@@ -52,4 +55,4 @@ GDBPY_NEW_EVENT_TYPE (continue,
"ContinueEvent",
"GDB continue event object",
thread_event_object_type,
- static);
+ static_def);
diff --git a/gdb/python/py-evtregistry.c b/gdb/python/py-evtregistry.c
index 0eeb853..4a29af7 100644
--- a/gdb/python/py-evtregistry.c
+++ b/gdb/python/py-evtregistry.c
@@ -21,9 +21,12 @@
#include "command.h"
#include "py-events.h"
+#define static_decl extern
+#define static_def /*static*/
+
events_object gdb_py_events;
-static PyTypeObject eventregistry_object_type
+static_decl PyTypeObject eventregistry_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("eventregistry_object");
/* Implementation of EventRegistry.connect () -> NULL.
@@ -132,7 +135,7 @@ static PyMethodDef eventregistry_object_methods[] =
{ NULL } /* Sentinel. */
};
-static PyTypeObject eventregistry_object_type =
+static_def PyTypeObject eventregistry_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.EventRegistry", /* tp_name */
diff --git a/gdb/python/py-exitedevent.c b/gdb/python/py-exitedevent.c
index 49c3100..106d9d5 100644
--- a/gdb/python/py-exitedevent.c
+++ b/gdb/python/py-exitedevent.c
@@ -20,7 +20,10 @@
#include "defs.h"
#include "py-event.h"
-static PyTypeObject exited_event_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject exited_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
static PyObject *
@@ -89,4 +92,4 @@ GDBPY_NEW_EVENT_TYPE (exited,
"ExitedEvent",
"GDB exited event object",
event_object_type,
- static);
+ static_def);
diff --git a/gdb/python/py-finishbreakpoint.c b/gdb/python/py-finishbreakpoint.c
index 394ac1e..156837a 100644
--- a/gdb/python/py-finishbreakpoint.c
+++ b/gdb/python/py-finishbreakpoint.c
@@ -31,6 +31,9 @@
#include "inferior.h"
#include "block.h"
+#define static_decl extern
+#define static_def /*static*/
+
/* Function that is called when a Python finish bp is found out of scope. */
static char * const outofscope_func = "out_of_scope";
@@ -53,7 +56,7 @@ struct finish_breakpoint_object
PyObject *return_value;
};
-static PyTypeObject finish_breakpoint_object_type
+static_decl PyTypeObject finish_breakpoint_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("finish_breakpoint_object");
/* Python function to get the 'return_value' attribute of
@@ -430,7 +433,7 @@ None otherwise.", NULL },
{ NULL } /* Sentinel. */
};
-static PyTypeObject finish_breakpoint_object_type =
+static_def PyTypeObject finish_breakpoint_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.FinishBreakpoint", /*tp_name*/
diff --git a/gdb/python/py-function.c b/gdb/python/py-function.c
index 843ad30..3e22281 100644
--- a/gdb/python/py-function.c
+++ b/gdb/python/py-function.c
@@ -29,7 +29,10 @@
#include "expression.h"
#include "language.h"
-static PyTypeObject fnpy_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject fnpy_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("PyObject");
@@ -213,7 +216,7 @@ gdbpy_initialize_functions (void)
-static PyTypeObject fnpy_object_type =
+static_def PyTypeObject fnpy_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Function", /*tp_name*/
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index e03ef6c..f52c3fa 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -31,6 +31,9 @@
#include "py-event.h"
#include "py-stopevent.h"
+#define static_decl extern
+#define static_def /*static*/
+
struct threadlist_entry {
thread_object *thread_obj;
struct threadlist_entry *next;
@@ -51,7 +54,7 @@ typedef struct
int nthreads;
} inferior_object;
-static PyTypeObject inferior_object_type
+static_decl PyTypeObject inferior_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("inferior_object");
static const struct inferior_data *infpy_inf_data_key;
@@ -65,7 +68,7 @@ typedef struct {
CORE_ADDR length;
} membuf_object;
-static PyTypeObject membuf_object_type
+static_decl PyTypeObject membuf_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("membuf_object");
/* Require that INFERIOR be a valid inferior ID. */
@@ -837,7 +840,7 @@ Return a long with the address of a match, or None." },
{ NULL }
};
-static PyTypeObject inferior_object_type =
+static_def PyTypeObject inferior_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Inferior", /* tp_name */
@@ -904,7 +907,7 @@ static PyBufferProcs buffer_procs = {
};
#endif /* IS_PY3K */
-static PyTypeObject membuf_object_type = {
+static_def PyTypeObject membuf_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Membuf", /*tp_name*/
sizeof (membuf_object), /*tp_basicsize*/
diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c
index 2b1da22..9dd5035 100644
--- a/gdb/python/py-infthread.c
+++ b/gdb/python/py-infthread.c
@@ -23,7 +23,10 @@
#include "inferior.h"
#include "python-internal.h"
-static PyTypeObject thread_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject thread_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("thread_object");
/* Require that INFERIOR be a valid inferior ID. */
@@ -299,7 +302,7 @@ Return whether the thread is exited." },
{ NULL }
};
-static PyTypeObject thread_object_type =
+static_def PyTypeObject thread_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.InferiorThread", /*tp_name*/
diff --git a/gdb/python/py-lazy-string.c b/gdb/python/py-lazy-string.c
index ea193a9..4777426 100644
--- a/gdb/python/py-lazy-string.c
+++ b/gdb/python/py-lazy-string.c
@@ -26,6 +26,9 @@
#include "language.h"
#include "gdb_assert.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct {
PyObject_HEAD
/* Holds the address of the lazy string. */
@@ -47,7 +50,7 @@ typedef struct {
struct type *type;
} lazy_string_object;
-static PyTypeObject lazy_string_object_type
+static_decl PyTypeObject lazy_string_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("lazy_string_object");
static PyObject *
@@ -217,7 +220,7 @@ static PyGetSetDef lazy_string_object_getset[] = {
{ NULL } /* Sentinel */
};
-static PyTypeObject lazy_string_object_type = {
+static_def PyTypeObject lazy_string_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.LazyString", /*tp_name*/
sizeof (lazy_string_object), /*tp_basicsize*/
diff --git a/gdb/python/py-linetable.c b/gdb/python/py-linetable.c
index e0449a6..ee5c218 100644
--- a/gdb/python/py-linetable.c
+++ b/gdb/python/py-linetable.c
@@ -21,6 +21,9 @@
#include "python-internal.h"
#include "exceptions.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct {
PyObject_HEAD
/* The line table source line. */
@@ -29,7 +32,7 @@ typedef struct {
CORE_ADDR pc;
} linetable_entry_object;
-static PyTypeObject linetable_entry_object_type
+static_decl PyTypeObject linetable_entry_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_entry_object");
typedef struct {
@@ -40,7 +43,7 @@ typedef struct {
PyObject *symtab;
} linetable_object;
-static PyTypeObject linetable_object_type
+static_decl PyTypeObject linetable_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_object");
typedef struct {
@@ -53,7 +56,7 @@ typedef struct {
PyObject *source;
} ltpy_iterator_object;
-static PyTypeObject ltpy_iterator_object_type
+static_decl PyTypeObject ltpy_iterator_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("ltpy_iterator_object");
/* Internal helper function to extract gdb.Symtab from a gdb.Linetable
@@ -494,7 +497,7 @@ Return True if this Linetable is valid, False if not." },
{NULL} /* Sentinel */
};
-static PyTypeObject linetable_object_type = {
+static_def PyTypeObject linetable_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.LineTable", /*tp_name*/
sizeof (linetable_object), /*tp_basicsize*/
@@ -541,7 +544,7 @@ Return True if this Linetable iterator is valid, False if not." },
{NULL} /* Sentinel */
};
-static PyTypeObject ltpy_iterator_object_type = {
+static_def PyTypeObject ltpy_iterator_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.LineTableIterator", /*tp_name*/
sizeof (ltpy_iterator_object), /*tp_basicsize*/
@@ -581,7 +584,7 @@ static PyGetSetDef linetable_entry_object_getset[] = {
{ NULL } /* Sentinel */
};
-static PyTypeObject linetable_entry_object_type = {
+static_def PyTypeObject linetable_entry_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.LineTableEntry", /*tp_name*/
sizeof (linetable_entry_object), /*tp_basicsize*/
diff --git a/gdb/python/py-newobjfileevent.c b/gdb/python/py-newobjfileevent.c
index d781e92..772a291 100644
--- a/gdb/python/py-newobjfileevent.c
+++ b/gdb/python/py-newobjfileevent.c
@@ -20,7 +20,10 @@
#include "defs.h"
#include "py-event.h"
-static PyTypeObject new_objfile_event_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject new_objfile_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
static PyObject *
@@ -71,4 +74,4 @@ GDBPY_NEW_EVENT_TYPE (new_objfile,
"NewObjFileEvent",
"GDB new object file event object",
event_object_type,
- static);
+ static_def);
diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index 100a784..ba4afda 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -23,6 +23,9 @@
#include "objfiles.h"
#include "language.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct
{
PyObject_HEAD
@@ -39,7 +42,7 @@ typedef struct
PyObject *type_printers;
} objfile_object;
-static PyTypeObject objfile_object_type
+static_decl PyTypeObject objfile_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("objfile_object");
static const struct objfile_data *objfpy_objfile_data_key;
@@ -336,7 +339,7 @@ static PyGetSetDef objfile_getset[] =
{ NULL }
};
-static PyTypeObject objfile_object_type =
+static_def PyTypeObject objfile_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Objfile", /*tp_name*/
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index 5021f58..ce6b766 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -29,6 +29,9 @@
#include "language.h"
#include "arch-utils.h"
+#define static_decl extern
+#define static_def /*static*/
+
/* Parameter constants and their values. */
struct parm_constant
{
@@ -89,7 +92,7 @@ struct parmpy_object
typedef struct parmpy_object parmpy_object;
-static PyTypeObject parmpy_object_type
+static_decl PyTypeObject parmpy_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("parmpy_object");
/* Some handy string constants. */
@@ -780,7 +783,7 @@ gdbpy_initialize_parameters (void)
-static PyTypeObject parmpy_object_type =
+static_def PyTypeObject parmpy_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Parameter", /*tp_name*/
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index e76d066..49f5612 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -25,6 +25,9 @@
#include "language.h"
#include "arch-utils.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct
{
PyObject_HEAD
@@ -41,7 +44,7 @@ typedef struct
PyObject *type_printers;
} pspace_object;
-static PyTypeObject pspace_object_type
+static_decl PyTypeObject pspace_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("pspace_object");
static const struct program_space_data *pspy_pspace_data_key;
@@ -323,7 +326,7 @@ static PyGetSetDef pspace_getset[] =
{ NULL }
};
-static PyTypeObject pspace_object_type =
+static_def PyTypeObject pspace_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Progspace", /*tp_name*/
diff --git a/gdb/python/py-signalevent.c b/gdb/python/py-signalevent.c
index 1d723f0..348d6e0 100644
--- a/gdb/python/py-signalevent.c
+++ b/gdb/python/py-signalevent.c
@@ -20,7 +20,10 @@
#include "defs.h"
#include "py-stopevent.h"
-static PyTypeObject signal_event_object_type
+#define static_decl extern
+#define static_def /*static*/
+
+static_decl PyTypeObject signal_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
PyObject *
@@ -58,4 +61,4 @@ GDBPY_NEW_EVENT_TYPE (signal,
"SignalEvent",
"GDB signal event object",
stop_event_object_type,
- static);
+ static_def);
diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c
index ab92c8f..7d47e23 100644
--- a/gdb/python/py-symtab.c
+++ b/gdb/python/py-symtab.c
@@ -25,6 +25,9 @@
#include "objfiles.h"
#include "block.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct stpy_symtab_object {
PyObject_HEAD
/* The GDB Symbol table structure. */
@@ -37,7 +40,7 @@ typedef struct stpy_symtab_object {
struct stpy_symtab_object *next;
} symtab_object;
-static PyTypeObject symtab_object_type
+static_decl PyTypeObject symtab_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object");
static const struct objfile_data *stpy_objfile_data_key;
@@ -68,7 +71,7 @@ typedef struct salpy_sal_object {
struct salpy_sal_object *next;
} sal_object;
-static PyTypeObject sal_object_type
+static_decl PyTypeObject sal_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object");
static const struct objfile_data *salpy_objfile_data_key;
@@ -552,7 +555,7 @@ Return the Linetable associated with this symbol table" },
{NULL} /* Sentinel */
};
-static PyTypeObject symtab_object_type = {
+static_def PyTypeObject symtab_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Symtab", /*tp_name*/
sizeof (symtab_object), /*tp_basicsize*/
@@ -602,7 +605,7 @@ Return true if this symbol table and line is valid, false if not." },
{NULL} /* Sentinel */
};
-static PyTypeObject sal_object_type = {
+static_def PyTypeObject sal_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Symtab_and_line", /*tp_name*/
sizeof (sal_object), /*tp_basicsize*/
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 9509aa3..c79af6d 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -30,6 +30,9 @@
#include "vec.h"
#include "typeprint.h"
+#define static_decl extern
+#define static_def /*static*/
+
typedef struct pyty_type_object
{
PyObject_HEAD
@@ -42,7 +45,7 @@ typedef struct pyty_type_object
struct pyty_type_object *next;
} type_object;
-static PyTypeObject type_object_type
+static_decl PyTypeObject type_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("type_object");
/* A Field object. */
@@ -54,7 +57,7 @@ typedef struct pyty_field_object
PyObject *dict;
} field_object;
-static PyTypeObject field_object_type
+static_decl PyTypeObject field_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("field_object");
/* A type iterator object. */
@@ -68,7 +71,7 @@ typedef struct {
struct pyty_type_object *source;
} typy_iterator_object;
-static PyTypeObject type_iterator_object_type
+static_decl PyTypeObject type_iterator_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("typy_iterator_object");
/* This is used to initialize various gdb.TYPE_ constants. */
@@ -1518,7 +1521,7 @@ static PyMappingMethods typy_mapping = {
NULL /* no "set" method */
};
-static PyTypeObject type_object_type =
+static_def PyTypeObject type_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Type", /*tp_name*/
@@ -1567,7 +1570,7 @@ static PyGetSetDef field_object_getset[] =
{ NULL }
};
-static PyTypeObject field_object_type =
+static_def PyTypeObject field_object_type =
{
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Field", /*tp_name*/
@@ -1609,7 +1612,7 @@ static PyTypeObject field_object_type =
0, /* tp_new */
};
-static PyTypeObject type_iterator_object_type = {
+static_def PyTypeObject type_iterator_object_type = {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.TypeIterator", /*tp_name*/
sizeof (typy_iterator_object), /*tp_basicsize*/
--
1.8.5.1