fix build failure with Python 3.7

Message ID 44D6B060-1CF8-4285-9723-4EB503618855@dell.com
State New, archived
Headers

Commit Message

Koning, Paul June 1, 2018, 1:22 p.m. UTC
  Ok, here is the patch in its current state.  Ok to commit?

	paul

gdb/ChangeLog:

2018-06-01  Paul Koning  <paul_koning@dell.com>

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

Comments

Pedro Alves June 1, 2018, 1:36 p.m. UTC | #1
On 06/01/2018 02:22 PM, Paul.Koning@dell.com wrote:
> Ok, here is the patch in its current state.  Ok to commit?

Yes, but recall to include the rationale in the git commit log, and
to include the link to the original Python issue in there.

Thanks,
Pedro Alves
  
Pedro Alves June 1, 2018, 1:37 p.m. UTC | #2
On 06/01/2018 02:36 PM, Pedro Alves wrote:
> On 06/01/2018 02:22 PM, Paul.Koning@dell.com wrote:
>> Ok, here is the patch in its current state.  Ok to commit?
> 
> Yes, but recall to include the rationale in the git commit log, and
> to include the link to the original Python issue in there.

Actually, should this go to the 8.1 branch too?  If so, then per
standard procedure we will indeed need a GDB bugzilla bug filed
(and then a reference added to the ChangeLog).

Thanks,
Pedro Alves
  
Koning, Paul June 1, 2018, 1:47 p.m. UTC | #3
> On Jun 1, 2018, at 9:37 AM, Pedro Alves <palves@redhat.com> wrote:
> 
> On 06/01/2018 02:36 PM, Pedro Alves wrote:
>> On 06/01/2018 02:22 PM, Paul.Koning@dell.com wrote:
>>> Ok, here is the patch in its current state.  Ok to commit?
>> 
>> Yes, but recall to include the rationale in the git commit log, and
>> to include the link to the original Python issue in there.
> 
> Actually, should this go to the 8.1 branch too?  If so, then per
> standard procedure we will indeed need a GDB bugzilla bug filed
> (and then a reference added to the ChangeLog).

I opened the bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23252

	paul
  
Pedro Alves June 8, 2018, 2:35 p.m. UTC | #4
Hi Paul,
On 06/01/2018 02:47 PM, Paul.Koning@dell.com wrote:
> 
> 
>> On Jun 1, 2018, at 9:37 AM, Pedro Alves <palves@redhat.com> wrote:
>>
>> On 06/01/2018 02:36 PM, Pedro Alves wrote:
>>> On 06/01/2018 02:22 PM, Paul.Koning@dell.com wrote:
>>>> Ok, here is the patch in its current state.  Ok to commit?
>>>
>>> Yes, but recall to include the rationale in the git commit log, and
>>> to include the link to the original Python issue in there.
>>
>> Actually, should this go to the 8.1 branch too?  If so, then per
>> standard procedure we will indeed need a GDB bugzilla bug filed
>> (and then a reference added to the ChangeLog).
> 
> I opened the bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23252
Thanks.  AFAICT, everything's sorted out.  Anything holding this back?

Thanks,
Pedro Alves
  
Koning, Paul June 8, 2018, 2:37 p.m. UTC | #5
> On Jun 8, 2018, at 10:35 AM, Pedro Alves <palves@redhat.com> wrote:
> 
> Hi Paul,
> On 06/01/2018 02:47 PM, Paul.Koning@dell.com wrote:
>> 
>> 
>>> On Jun 1, 2018, at 9:37 AM, Pedro Alves <palves@redhat.com> wrote:
>>> 
>>> On 06/01/2018 02:36 PM, Pedro Alves wrote:
>>>> On 06/01/2018 02:22 PM, Paul.Koning@dell.com wrote:
>>>>> Ok, here is the patch in its current state.  Ok to commit?
>>>> 
>>>> Yes, but recall to include the rationale in the git commit log, and
>>>> to include the link to the original Python issue in there.
>>> 
>>> Actually, should this go to the 8.1 branch too?  If so, then per
>>> standard procedure we will indeed need a GDB bugzilla bug filed
>>> (and then a reference added to the ChangeLog).
>> 
>> I opened the bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23252
> Thanks.  AFAICT, everything's sorted out.  Anything holding this back?

Just waiting for approval to commit.

	paul
  
Pedro Alves June 8, 2018, 2:55 p.m. UTC | #6
On 06/08/2018 03:37 PM, Paul.Koning@dell.com wrote:

>> Thanks.  AFAICT, everything's sorted out.  Anything holding this back?
> 
> Just waiting for approval to commit.
> 

Ah, but you already have it:

 https://sourceware.org/ml/gdb-patches/2018-06/msg00015.html

Sorry if that wasn't clear.

Thanks,
Pedro Alves
  
Koning, Paul June 8, 2018, 5:36 p.m. UTC | #7
> On Jun 8, 2018, at 10:55 AM, Pedro Alves <palves@redhat.com> wrote:
> 
> On 06/08/2018 03:37 PM, Paul.Koning@dell.com wrote:
> 
>>> Thanks.  AFAICT, everything's sorted out.  Anything holding this back?
>> 
>> Just waiting for approval to commit.
>> 
> 
> Ah, but you already have it:
> 
> https://sourceware.org/ml/gdb-patches/2018-06/msg00015.html
> 
> Sorry if that wasn't clear.
> 
> Thanks,
> Pedro Alves

It was clear, but I managed to overlook the original message.

I committed the patch with a commit message that references the original (Red Hat) bug.

	paul
  
Sergio Durigan Junior June 9, 2018, 12:26 a.m. UTC | #8
On Friday, June 08 2018, Paul Koning wrote:

>> On Jun 8, 2018, at 10:55 AM, Pedro Alves <palves@redhat.com> wrote:
>> 
>> On 06/08/2018 03:37 PM, Paul.Koning@dell.com wrote:
>> 
>>>> Thanks.  AFAICT, everything's sorted out.  Anything holding this back?
>>> 
>>> Just waiting for approval to commit.
>>> 
>> 
>> Ah, but you already have it:
>> 
>> https://sourceware.org/ml/gdb-patches/2018-06/msg00015.html
>> 
>> Sorry if that wasn't clear.
>> 
>> Thanks,
>> Pedro Alves
>
> It was clear, but I managed to overlook the original message.
>
> I committed the patch with a commit message that references the original (Red Hat) bug.

Thanks, Paul.  I've made a Fedora GDB release containing the patch now.
  

Patch

diff --git a/gdb/python/python.c b/gdb/python/python.c
index c29e7d7a6b..dbd2f1ab2d 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -1667,6 +1667,17 @@  finalize_python (void *ignore)
   restore_active_ext_lang (previous_active);
 }
 
+#ifdef IS_PY3K
+/* This is called via the PyImport_AppendInittab mechanism called
+   during initialization, to make the built-in _gdb module known to
+   Python.  */
+PyMODINIT_FUNC
+init__gdb_module (void)
+{
+  return PyModule_Create (&python_GdbModuleDef);
+}
+#endif
+
 static bool
 do_start_initialization ()
 {
@@ -1707,6 +1718,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", init__gdb_module);
 #else
   Py_SetProgramName (progname.release ());
 #endif
@@ -1716,9 +1730,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