Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Phil Muldoon <pmuldoon@redhat.com>
To: Paul.Koning@dell.com
Cc: gdb@sourceware.org
Subject: Re: GDB fails to build with Python 3.7
Date: Tue, 29 May 2018 12:55:00 -0000	[thread overview]
Message-ID: <d6ed8d76-a231-e5f8-6a25-ca088adfe399@redhat.com> (raw)
In-Reply-To: <236499F6-8C72-4BF4-804D-5D4D2CE87BA9@dell.com>

On 29/05/18 13:11, Paul.Koning@dell.com wrote:
> 
> 
>> On May 29, 2018, at 7:37 AM, Phil Muldoon <pmuldoon@redhat.com> wrote:
>>
>> Currently GDB fails to build with Python 3.7
>>
>> https://bugs.python.org/issue33470
>>
>> This is because we use an internal Python API:
>>
>> #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");
>> #else
>>  gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
>> #endif
>>
>> (the _PyImport_FixupBuiltin in python.c).
>>
>> This internal API has been changed. According to the advice of the Python
>> maintainers we should never have used it in the first place. I didn't
>> add this (at least I don't think I did!), so I'm asking whomever
>> authored that code to please change it to be 3.7 compatible. I'm not
>> sure what the code achieves so I'm reluctant to touch it in case of
>> breakages on platforms I don't have easily access to.
> 
> That may be part of my original Python 3 support work.  I'd have to
> dig back in somewhat dusty memories to find the reason.  Part of the
> problem is that Python initialization is different in Python 3 and
> the differences are (or were?) undocumented and not particularly obvious.
> 
> I'll take a look.  Right now I can't get configure to find Python at
> all on my Mac -- "--with-python=/Library/Frameworks...." isn't doing it.
> 
> 	paul
> 
> BUILDSTDERR: ../../gdb/python/python.c:1853:45: error: too few arguments to function 'int _PyImport_FixupBuiltin(PyObject*, const char*, PyObject*)'

Paul,

Thanks! And gah, I forgot to add the developers comments:

"This is a private API, gdb should not use it. I don't know why gdb
chose to call a private function.

To fix gdb, an #ifdef using PY_VERSION_HEX should be use to pass one
more additional parameter to Python 3.7: "modules". This parameter can
be found in interp->modules, where interp is the current
interpreter. For example, use PyThreadState_Get()->interp to get the
current interpreter."

Cheers

Phil


  reply	other threads:[~2018-05-29 12:55 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-29 11:37 Phil Muldoon
2018-05-29 12:11 ` Paul.Koning
2018-05-29 12:55   ` Phil Muldoon [this message]
     [not found] <5e55cd3c-7ccd-4cce-5297-ddddadf91975@redhat.com>
     [not found] ` <20180530222629.642gog77pan2uzm5@adacore.com>
2018-05-31 17:28   ` Paul.Koning

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d6ed8d76-a231-e5f8-6a25-ca088adfe399@redhat.com \
    --to=pmuldoon@redhat.com \
    --cc=Paul.Koning@dell.com \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox