configure uses incorrect link order when testing libpython

References:

https://stackoverflow.com/a/49868387
https://sourceware.org/bugzilla/show_bug.cgi?id=11420

Configure uses "gcc -o conftest -g ... conftest.c -ldl -lncurses -lm -ldl
... -lpthread ... -lpython2.7" when deciding whether give libpython is
usable.

That of course is the wrong link order, and only works for shared libraries
(mostly by accident), and only on some systems.

gdb/ChangeLog:

	PR gdb/11420
	* configure.ac: Prepend libpython.
	* python/python-config.py: Likewise.
	* configure: Regenerate.
This commit is contained in:
Paul Pluzhnikov 2018-05-04 10:07:58 -04:00 committed by Simon Marchi
parent 089a949083
commit bf27f0e2c7
4 changed files with 22 additions and 16 deletions

View File

@ -1,3 +1,10 @@
2018-05-04 Paul Pluzhnikov <ppluzhnikov@google.com>
PR gdb/11420
* configure.ac: Prepend libpython.
* python/python-config.py: Likewise.
* configure: Regenerate.
2018-05-03 Simon Marchi <simon.marchi@ericsson.com>
* Makefile.in (%.c: %.l): Use -t instead of --stdout.

18
gdb/configure vendored
View File

@ -10441,7 +10441,7 @@ $as_echo_n "checking for ${version}... " >&6; }
save_CPPFLAGS=$CPPFLAGS
save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
LIBS="$new_LIBS $LIBS"
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@ -10478,13 +10478,13 @@ $as_echo "${found_usable_python}" >&6; }
version=python2.7
new_CPPFLAGS=${python_includes}
new_LIBS="${python_libs} -lpython2.7"
new_LIBS="-lpython2.7 ${python_libs}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${version}" >&5
$as_echo_n "checking for ${version}... " >&6; }
save_CPPFLAGS=$CPPFLAGS
save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
LIBS="$new_LIBS $LIBS"
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@ -10516,13 +10516,13 @@ $as_echo "${found_usable_python}" >&6; }
version=python2.6
new_CPPFLAGS=${python_includes}
new_LIBS="${python_libs} -lpython2.6"
new_LIBS="-lpython2.6 ${python_libs}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${version}" >&5
$as_echo_n "checking for ${version}... " >&6; }
save_CPPFLAGS=$CPPFLAGS
save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
LIBS="$new_LIBS $LIBS"
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@ -10554,13 +10554,13 @@ $as_echo "${found_usable_python}" >&6; }
version=python2.5
new_CPPFLAGS=${python_includes}
new_LIBS="${python_libs} -lpython2.5"
new_LIBS="-lpython2.5 ${python_libs}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${version}" >&5
$as_echo_n "checking for ${version}... " >&6; }
save_CPPFLAGS=$CPPFLAGS
save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
LIBS="$new_LIBS $LIBS"
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@ -10592,13 +10592,13 @@ $as_echo "${found_usable_python}" >&6; }
version=python2.4
new_CPPFLAGS=${python_includes}
new_LIBS="${python_libs} -lpython2.4"
new_LIBS="-lpython2.4 ${python_libs}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${version}" >&5
$as_echo_n "checking for ${version}... " >&6; }
save_CPPFLAGS=$CPPFLAGS
save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
LIBS="$new_LIBS $LIBS"
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

View File

@ -732,7 +732,7 @@ AC_DEFUN([AC_TRY_LIBPYTHON],
save_CPPFLAGS=$CPPFLAGS
save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
LIBS="$new_LIBS $LIBS"
found_usable_python=no
AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "Python.h"]],
[[Py_Initialize ();]]),
@ -922,19 +922,19 @@ else
elif test "${have_python_config}" != failed; then
if test "${have_libpython}" = no; then
AC_TRY_LIBPYTHON(python2.7, have_libpython,
${python_includes}, "${python_libs} -lpython2.7")
${python_includes}, "-lpython2.7 ${python_libs}")
fi
if test "${have_libpython}" = no; then
AC_TRY_LIBPYTHON(python2.6, have_libpython,
${python_includes}, "${python_libs} -lpython2.6")
${python_includes}, "-lpython2.6 ${python_libs}")
fi
if test ${have_libpython} = no; then
AC_TRY_LIBPYTHON(python2.5, have_libpython,
${python_includes}, "${python_libs} -lpython2.5")
${python_includes}, "-lpython2.5 ${python_libs}")
fi
if test ${have_libpython} = no; then
AC_TRY_LIBPYTHON(python2.4, have_libpython,
${python_includes}, "${python_libs} -lpython2.4")
${python_includes}, "-lpython2.4 ${python_libs}")
fi
fi
if test "${have_libpython}" = python2.7 -o "${have_libpython}" = python27; then

View File

@ -58,12 +58,11 @@ for opt in opt_flags:
print (to_unix_path(' '.join(flags)))
elif opt in ('--libs', '--ldflags'):
libs = []
libs = ['-lpython' + pyver + abiflags]
if getvar('LIBS') is not None:
libs.extend(getvar('LIBS').split())
if getvar('SYSLIBS') is not None:
libs.extend(getvar('SYSLIBS').split())
libs.append('-lpython'+pyver + abiflags)
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
# shared library in prefix/lib/.
if opt == '--ldflags':