public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] fix build failure with Python 3.7
@ 2018-05-31 18:20 Paul.Koning
  2018-05-31 20:45 ` Sergio Durigan Junior
  0 siblings, 1 reply; 18+ messages in thread
From: Paul.Koning @ 2018-05-31 18:20 UTC (permalink / raw)
  To: gdb-patches

This cures PR gdb/33470, build failure due to calling an internal 
API in Python that changed in V3.7.  The code now uses the
"inittab" mechanism in Python, which is the approved way to
make compiled-in modules known to Python.

Gdb starts properly and I can see the _gdb module.  On my test
system (a Mac) it's hard to get gdb to run at all, so the
test suite is a bit problematic.  What other tests are needed?

	paul

gdb/ChangeLog:

2018-05-31  Paul Koning  <paul_koning@dell.com>

	PR gdb/33470

	* python/python.c (do_start_initialization):
	Avoid call to internal Python API.
	(PyInit__gdb): New function.

diff --git a/gdb/python/python.c b/gdb/python/python.c
index c29e7d7a6b..89443aee25 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -1667,6 +1667,14 @@ finalize_python (void *ignore)
   restore_active_ext_lang (previous_active);
 }
 
+#ifdef IS_PY3K
+PyMODINIT_FUNC
+PyInit__gdb (void)
+{
+  return PyModule_Create (&python_GdbModuleDef);
+}
+#endif
+
 static bool
 do_start_initialization ()
 {
@@ -1707,6 +1715,9 @@ do_start_initialization ()
      remain alive for the duration of the program's execution, so
      it is not freed after this call.  */
   Py_SetProgramName (progname_copy);
+
+  /* Define _gdb as a built-in module.  */
+  PyImport_AppendInittab ("_gdb", PyInit__gdb);
 #else
   Py_SetProgramName (progname.release ());
 #endif
@@ -1716,9 +1727,7 @@ do_start_initialization ()
   PyEval_InitThreads ();
 
 #ifdef IS_PY3K
-  gdb_module = PyModule_Create (&python_GdbModuleDef);
-  /* Add _gdb module to the list of known built-in modules.  */
-  _PyImport_FixupBuiltin (gdb_module, "_gdb");
+  gdb_module = PyImport_ImportModule ("_gdb");
 #else
   gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
 #endif

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2018-06-09  0:26 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-31 18:20 [PATCH] fix build failure with Python 3.7 Paul.Koning
2018-05-31 20:45 ` Sergio Durigan Junior
2018-05-31 21:25   ` Paul.Koning
2018-06-01  1:27     ` Tom Tromey
2018-06-01 11:58       ` Phil Muldoon
     [not found]     ` <87d0xb34jw.fsf@redhat.com>
2018-06-01 11:56       ` Phil Muldoon
2018-06-01 12:16     ` Pedro Alves
2018-06-01 12:54       ` Paul.Koning
2018-06-01 13:10         ` Pedro Alves
2018-06-01 13:22           ` Paul.Koning
2018-06-01 13:36             ` Pedro Alves
2018-06-01 13:37               ` Pedro Alves
2018-06-01 13:47                 ` Paul.Koning
2018-06-08 14:35                   ` Pedro Alves
2018-06-08 14:37                     ` Paul.Koning
2018-06-08 14:55                       ` Pedro Alves
2018-06-08 17:36                         ` Paul.Koning
2018-06-09  0:26                           ` Sergio Durigan Junior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).