aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2010-06-08 16:41:45 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2010-06-08 16:41:45 +0000
commit3bebe2f205d1c30429898da05047b656e6796f6a (patch)
tree52f7a41bc1daebece577a1496a111359cb90f102
parent7da73d69b0c630cf527454e23431747010746393 (diff)
downloadgdb-3bebe2f205d1c30429898da05047b656e6796f6a.zip
gdb-3bebe2f205d1c30429898da05047b656e6796f6a.tar.gz
gdb-3bebe2f205d1c30429898da05047b656e6796f6a.tar.bz2
gdb/
* configure.ac <"${have_libpython}" != no>: New workaround of python#4434. * configure: Regenerate. gdb/testsuite/ * gdb.python/python.exp (pythonX.Y/lib-dynload/*.so): New.
-rw-r--r--gdb/ChangeLog6
-rwxr-xr-xgdb/configure61
-rw-r--r--gdb/configure.ac43
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.python/python.exp3
5 files changed, 96 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 83d00ab..e593274 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/configure b/gdb/configure
index bae0b5b..f3cb23a 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -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
diff --git a/gdb/configure.ac b/gdb/configure.ac
index d65fd49..6d140cb 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -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)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 5ec9006..815c3bc 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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.
diff --git a/gdb/testsuite/gdb.python/python.exp b/gdb/testsuite/gdb.python/python.exp
index b345ad2..185f45d 100644
--- a/gdb/testsuite/gdb.python/python.exp
+++ b/gdb/testsuite/gdb.python/python.exp
@@ -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"