[PATCH 07/36] Make array object extern

Simon Marchi simon.marchi@ericsson.com
Fri Feb 27 22:47:00 GMT 2015


On 02/09/2015 06:20 PM, Pedro Alves wrote:
> Compiling python.c in C++ mode, we get:
> 
>   ...src/gdb/python/python.c: At global scope:
>   ...src/gdb/python/python.c:106:31: error: storage size of ‘GdbMethods’ isn’t known
>    static PyMethodDef GdbMethods[];
> 				 ^
> 
> Fix it by making the affected array objects extern.
> 
> gdb/ChangeLog:
> 2015-02-09  Pedro Alves  <palves@redhat.com>
> 
> 	* python/python.c (GdbMethods): Rename to ...
> 	(python_GdbMethods): ... this and make extern.
> 	(GdbModuleDef): Rename to ...
> 	(python_GdbModuleDef): ... this and make extern.
> ---
>  gdb/python/python.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/gdb/python/python.c b/gdb/python/python.c
> index 9854c79..a13638f 100644
> --- a/gdb/python/python.c
> +++ b/gdb/python/python.c
> @@ -103,10 +103,10 @@ const struct extension_language_defn extension_language_python =
>  
>  int gdb_python_initialized;
>  
> -static PyMethodDef GdbMethods[];
> +extern PyMethodDef python_GdbMethods[];
>  
>  #ifdef IS_PY3K
> -static struct PyModuleDef GdbModuleDef;
> +extern struct PyModuleDef python_GdbModuleDef;
>  #endif
>  
>  PyObject *gdb_module;
> @@ -1712,11 +1712,11 @@ message == an error message without a stack will be printed."),
>    PyEval_InitThreads ();
>  
>  #ifdef IS_PY3K
> -  gdb_module = PyModule_Create (&GdbModuleDef);
> +  gdb_module = PyModule_Create (&python_GdbModuleDef);
>    /* Add _gdb module to the list of known built-in modules.  */
>    _PyImport_FixupBuiltin (gdb_module, "_gdb");
>  #else
> -  gdb_module = Py_InitModule ("_gdb", GdbMethods);
> +  gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
>  #endif
>    if (gdb_module == NULL)
>      goto fail;
> @@ -1932,7 +1932,7 @@ gdbpy_initialized (const struct extension_language_defn *extlang)
>  
>  #ifdef HAVE_PYTHON
>  
> -static PyMethodDef GdbMethods[] =
> +PyMethodDef python_GdbMethods[] =
>  {
>    { "history", gdbpy_history, METH_VARARGS,
>      "Get a value from history" },
> @@ -2044,7 +2044,7 @@ Return a tuple containing all inferiors." },
>  };
>  
>  #ifdef IS_PY3K
> -static struct PyModuleDef GdbModuleDef =
> +struct PyModuleDef python_GdbModuleDef =
>  {
>    PyModuleDef_HEAD_INIT,
>    "_gdb",

Hi Pedro,

I think you forgot one instance of GdbMethods, used when building with
Python 3. This should fix it:

From 33c839c7bb4bb201fa20f22e0935831b7e1de27f Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@ericsson.com>
Date: Fri, 27 Feb 2015 17:40:36 -0500
Subject: [PATCH] Fix Python 3 build

Rename forgotten GdbMethods to python_GdbMethods.

gdb/ChangeLog:

	* python/python.c (python_GdbModuleDef): Rename GdbMethods to
	python_GdbMethods.
---
 gdb/python/python.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/python/python.c b/gdb/python/python.c
index a13638f..c3ffbae 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -2050,7 +2050,7 @@ struct PyModuleDef python_GdbModuleDef =
   "_gdb",
   NULL,
   -1,
-  GdbMethods,
+  python_GdbMethods,
   NULL,
   NULL,
   NULL,
-- 
2.1.4





More information about the Gdb-patches mailing list