* configure.ac <"${have_libpython}" != no>: New workaround of
	python#4434.
	* configure: Regenerate.

gdb/testsuite/
	* gdb.python/python.exp (pythonX.Y/lib-dynload/*.so): New.
This commit is contained in:
Jan Kratochvil 2010-06-08 16:41:45 +00:00
parent 7da73d69b0
commit 3bebe2f205
5 changed files with 96 additions and 21 deletions

View File

@ -1,3 +1,9 @@
2010-06-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* configure.ac <"${have_libpython}" != no>: New workaround of
python#4434.
* configure: Regenerate.
2010-06-08 Hui Zhu <teawater@gmail.com>
* record.c (record_wait): Move signal out of replay code.

61
gdb/configure vendored
View File

@ -14199,7 +14199,9 @@ $as_echo_n "checking for the dynamic export flag... " >&6; }
# Older GNU ld supports --export-dynamic but --dynamic-list it does not.
RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
LDFLAGS="$LDFLAGS $RDYNAMIC"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
dynamic_list=false
if test "${have_libpython}" = no; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@ -14211,12 +14213,51 @@ main ()
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
found="-Wl,--dynamic-list"
RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
dynamic_list=true
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
else
# Workaround http://bugs.python.org/issue4434 where static
# libpythonX.Y.a would get its symbols required for
# pythonX.Y/lib-dynload/*.so modules hidden by -Wl,--dynamic-list.
# Problem does not happen for the recommended libpythonX.Y.so linkage.
old_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
if test "$cross_compiling" = yes; then :
true
else
RDYNAMIC="-rdynamic"
LDFLAGS="$old_LDFLAGS $RDYNAMIC"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include "${have_libpython}/Python.h"
int
main ()
{
int err;
Py_Initialize ();
err = PyRun_SimpleString ("import itertools\n");
Py_Finalize ();
return err == 0 ? 0 : 1;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
dynamic_list=true
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
CFLAGS="$old_CFLAGS"
fi
if $dynamic_list;then
found="-Wl,--dynamic-list"
RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
else
RDYNAMIC="-rdynamic"
LDFLAGS="$old_LDFLAGS $RDYNAMIC"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@ -14231,14 +14272,12 @@ if ac_fn_c_try_link "$LINENO"; then :
found="-rdynamic"
else
found="no"
# Error on its usage by .mh file.
RDYNAMIC="no-rdynamic-available"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
# Error on its usage by .mh file.
RDYNAMIC="no-rdynamic-available"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
LDFLAGS="$old_LDFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5

View File

@ -1470,16 +1470,39 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
# Older GNU ld supports --export-dynamic but --dynamic-list it does not.
RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
LDFLAGS="$LDFLAGS $RDYNAMIC"
AC_TRY_LINK([], [],
[found="-Wl,--dynamic-list"
RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
[RDYNAMIC="-rdynamic"
LDFLAGS="$old_LDFLAGS $RDYNAMIC"
AC_TRY_LINK([], [],
[found="-rdynamic"],
[found="no"
# Error on its usage by .mh file.
RDYNAMIC="no-rdynamic-available"])])
dynamic_list=false
if test "${have_libpython}" = no; then
AC_TRY_LINK([], [], [dynamic_list=true])
else
# Workaround http://bugs.python.org/issue4434 where static
# libpythonX.Y.a would get its symbols required for
# pythonX.Y/lib-dynload/*.so modules hidden by -Wl,--dynamic-list.
# Problem does not happen for the recommended libpythonX.Y.so linkage.
old_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
AC_RUN_IFELSE(
AC_LANG_PROGRAM(
[#include "]${have_libpython}[/Python.h"],
[int err;
Py_Initialize ();
err = PyRun_SimpleString ("import itertools\n");
Py_Finalize ();
return err == 0 ? 0 : 1;]),
[dynamic_list=true], [], [true])
CFLAGS="$old_CFLAGS"
fi
if $dynamic_list;then
found="-Wl,--dynamic-list"
RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
else
RDYNAMIC="-rdynamic"
LDFLAGS="$old_LDFLAGS $RDYNAMIC"
AC_TRY_LINK([], [],
[found="-rdynamic"],
[found="no"
# Error on its usage by .mh file.
RDYNAMIC="no-rdynamic-available"])
fi
AC_SUBST(RDYNAMIC)
LDFLAGS="$old_LDFLAGS"
AC_MSG_RESULT($found)

View File

@ -1,3 +1,7 @@
2010-06-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.python/python.exp (pythonX.Y/lib-dynload/*.so): New.
2010-06-07 Jan Kratochvil <jan.kratochvil@redhat.com>
Test PR 10640.

View File

@ -80,3 +80,6 @@ gdb_test "source $srcdir/$subdir/source2.py" "yes"
gdb_test "python print gdb.current_objfile()" "None"
gdb_test "python print gdb.objfiles()" "\\\[\\\]"
# Test http://bugs.python.org/issue4434 workaround in configure.ac
gdb_test "python import itertools; print 'IMPOR'+'TED'" "IMPORTED" "pythonX.Y/lib-dynload/*.so"