mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
gdb: make Python conftest compatible with Python limited C API
The current test to check the support of '--dynamic-list' linker flag uses PyRun_SimpleString (), which is part of the unstable API. As it is now, the test will systematically fail due to the undefined symbol rather than testing the import of ctypes. This patch replaces PyRun_SimpleString () by an equivalent code relying on the limited C API, and compatible with Python 3.4. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23830 Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
13
gdb/configure
vendored
13
gdb/configure
vendored
@@ -31034,11 +31034,18 @@ else
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int err;
|
||||
|
||||
const char *code = "import ctypes\n";
|
||||
Py_Initialize ();
|
||||
err = PyRun_SimpleString ("import ctypes\n");
|
||||
PyObject *main_module = PyImport_AddModule ("__main__");
|
||||
PyObject *global_dict = PyModule_GetDict (main_module);
|
||||
PyObject *local_dict = PyDict_New ();
|
||||
PyObject *py_code = Py_CompileString (code, "test", Py_single_input);
|
||||
if (py_code == NULL)
|
||||
return 1;
|
||||
PyObject *res = PyEval_EvalCode (py_code, global_dict, local_dict);
|
||||
Py_Finalize ();
|
||||
return err == 0 ? 0 : 1;
|
||||
return res ? 0 : 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1761,11 +1761,18 @@ if test "${gdb_native}" = yes; then
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[#include "Python.h"],
|
||||
[int err;
|
||||
[
|
||||
const char *code = "import ctypes\n";
|
||||
Py_Initialize ();
|
||||
err = PyRun_SimpleString ("import ctypes\n");
|
||||
PyObject *main_module = PyImport_AddModule ("__main__");
|
||||
PyObject *global_dict = PyModule_GetDict (main_module);
|
||||
PyObject *local_dict = PyDict_New ();
|
||||
PyObject *py_code = Py_CompileString (code, "test", Py_single_input);
|
||||
if (py_code == NULL)
|
||||
return 1;
|
||||
PyObject *res = PyEval_EvalCode (py_code, global_dict, local_dict);
|
||||
Py_Finalize ();
|
||||
return err == 0 ? 0 : 1;])],
|
||||
return res ? 0 : 1;])],
|
||||
[dynamic_list=true], [], [true])
|
||||
LIBS="$old_LIBS"
|
||||
CFLAGS="$old_CFLAGS"
|
||||
|
||||
Reference in New Issue
Block a user