aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/Makefile.in13
-rwxr-xr-xgdb/configure73
-rw-r--r--gdb/configure.ac36
-rw-r--r--gdb/python/python-internal.h18
5 files changed, 78 insertions, 75 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 84d6f95..9d61108 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
2011-01-31 Joel Brobecker <brobecker@adacore.com>
+ * configure.ac: Remove fallback behavior for building
+ against Python. Remove tweaking of Python include path.
+ Add PYTHON_CPPFLAGS and PYTHON_LIBS substitution.
+ (AC_TRY_LIBPYTHON): Adjust program used in linking test.
+ If link is successful, set PYTHON_CPPFLAGS and PYTHON_LIBS.
+ Always restore CPPFLAGS and LIBS after linking test.
+ * configure: Regenerated.
+ * Makefile.in (INTERNAL_CPPFLAGS): Add @PYTHON_CPPFLAGS@.
+ (INSTALLED_LIBS, CLIBS): Add @PYTHON_LIBS@.
+ * python/python-internal.h: Adjust includes of Python .h files.
+
+2011-01-31 Joel Brobecker <brobecker@adacore.com>
+
* tracepoint.c (traceframe_walk_blocks): Add missing i18n markup
in error message.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 36cc734..4882bd4 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -408,8 +408,13 @@ PROFILE_CFLAGS = @PROFILE_CFLAGS@
# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
CFLAGS = @CFLAGS@
-# Set by configure, for e.g. expat.
-INTERNAL_CPPFLAGS = @CPPFLAGS@
+# Set by configure, for e.g. expat. Python installations are such that
+# C headers are included using their basename (for example, we #include
+# <Python.h> rather than, say, <python/Python.h>). Since the file names
+# are sometimes a little generic, we think that the risk of collision
+# with other header files is high. If that happens, we try to mitigate
+# a bit the consequences by putting the Python includes last in the list.
+INTERNAL_CPPFLAGS = @CPPFLAGS@ @PYTHON_CPPFLAGS@
# Need to pass this to testsuite for "make check". Probably should be
# consistent with top-level Makefile.in and gdb/testsuite/Makefile.in
@@ -444,10 +449,10 @@ INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_
# If you have the Cygnus libraries installed,
# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS='
INSTALLED_LIBS=-lbfd -lreadline -lopcodes -liberty -ldecnumber \
- $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
+ $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ @PYTHON_LIBS@ \
-lintl -liberty $(LIBGNU)
CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
- $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
+ $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ @PYTHON_LIBS@ \
$(LIBEXPAT) \
$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)
CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \
diff --git a/gdb/configure b/gdb/configure
index 5cee400..2540f8b 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -659,6 +659,8 @@ TARGET_SYSTEM_ROOT
CONFIG_LDFLAGS
RDYNAMIC
ALLOCA
+PYTHON_LIBS
+PYTHON_CPPFLAGS
PYTHON_CFLAGS
python_prog_path
LTLIBEXPAT
@@ -10633,26 +10635,16 @@ fi
fi
fi
else
- # Fall back to gdb 7.0/7.1 behaviour.
- if test -z ${python_prefix}; then
- python_includes=
- python_libs=
- else
- python_includes="-I${python_prefix}/include"
- python_libs="-L${python_prefix}/lib"
- fi
+ # We do not have a python executable we can use to determine where
+ # to find the Python headers and libs. We cannot guess the include
+ # path from the python_prefix either, because that include path
+ # depends on the Python version. So, there is nothing much we can
+ # do except assume that the compiler will be able to find those files.
+ python_includes=
+ python_libs=
have_python_config=no
fi
- # Having "/pythonX.Y" in the include path is awkward.
- # All those python headers get bubbled up to the top inviting lots
- # of random collisions. GDB originally didn't use python-config to
- # find the compilation parameters and includes "pythonX.Y/" in the
- # path of the, umm, include file. So strip away this part of the
- # output of python-config --includes.
- python_includes=`echo "${python_includes} " \
- | sed -e 's,/python[0-9]*[.][0-9]* , ,g'`
-
# If we have python-config, only try the configuration it provides.
# Otherwise fallback on the old way of trying different versions of
# python in turn.
@@ -10677,7 +10669,7 @@ $as_echo_n "checking for ${version}... " >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
@@ -10689,12 +10681,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
@@ -10719,7 +10712,7 @@ $as_echo_n "checking for ${version}... " >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
@@ -10731,12 +10724,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
@@ -10756,7 +10750,7 @@ $as_echo_n "checking for ${version}... " >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
@@ -10768,12 +10762,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
@@ -10793,7 +10788,7 @@ $as_echo_n "checking for ${version}... " >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
@@ -10805,12 +10800,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
@@ -10830,7 +10826,7 @@ $as_echo_n "checking for ${version}... " >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
@@ -10842,12 +10838,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
@@ -10988,6 +10985,8 @@ else
fi
+
+
# ------------------------- #
# Checks for header files. #
# ------------------------- #
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 4be35bc..afb7314 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -610,12 +610,14 @@ AC_DEFUN([AC_TRY_LIBPYTHON],
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
found_usable_python=no
- AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "${version}/Python.h"]],
+ AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "Python.h"]],
[[Py_Initialize ();]]),
[have_libpython_var=${version}
- found_usable_python=yes],
- [CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS])
+ found_usable_python=yes
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS])
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
AC_MSG_RESULT([${found_usable_python}])
])
@@ -744,26 +746,16 @@ else
fi
fi
else
- # Fall back to gdb 7.0/7.1 behaviour.
- if test -z ${python_prefix}; then
- python_includes=
- python_libs=
- else
- python_includes="-I${python_prefix}/include"
- python_libs="-L${python_prefix}/lib"
- fi
+ # We do not have a python executable we can use to determine where
+ # to find the Python headers and libs. We cannot guess the include
+ # path from the python_prefix either, because that include path
+ # depends on the Python version. So, there is nothing much we can
+ # do except assume that the compiler will be able to find those files.
+ python_includes=
+ python_libs=
have_python_config=no
fi
- # Having "/pythonX.Y" in the include path is awkward.
- # All those python headers get bubbled up to the top inviting lots
- # of random collisions. GDB originally didn't use python-config to
- # find the compilation parameters and includes "pythonX.Y/" in the
- # path of the, umm, include file. So strip away this part of the
- # output of python-config --includes.
- python_includes=`echo "${python_includes} " \
- | sed -e 's,/python[[0-9]]*[[.]][[0-9]]* , ,g'`
-
# If we have python-config, only try the configuration it provides.
# Otherwise fallback on the old way of trying different versions of
# python in turn.
@@ -881,6 +873,8 @@ else
python/py-prettyprint.c python/py-auto-load.c"
fi
AC_SUBST(PYTHON_CFLAGS)
+AC_SUBST(PYTHON_CPPFLAGS)
+AC_SUBST(PYTHON_LIBS)
# ------------------------- #
# Checks for header files. #
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 9dac04d..cf4f936 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -41,25 +41,17 @@
around technique as above. */
#undef _FILE_OFFSET_BITS
+/* Include the Python header files using angle brackets rather than
+ double quotes. On case-insensitive filesystems, this prevents us
+ from including our python/python.h header file. */
+#include <Python.h>
+#include <frameobject.h>
#if HAVE_LIBPYTHON2_4
-#include "python2.4/Python.h"
-#include "python2.4/frameobject.h"
/* Py_ssize_t is not defined until 2.5.
Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit
compilation due to several apparent mistakes in python2.4 API, so we
use 'int' instead. */
typedef int Py_ssize_t;
-#elif HAVE_LIBPYTHON2_5
-#include "python2.5/Python.h"
-#include "python2.5/frameobject.h"
-#elif HAVE_LIBPYTHON2_6
-#include "python2.6/Python.h"
-#include "python2.6/frameobject.h"
-#elif HAVE_LIBPYTHON2_7
-#include "python2.7/Python.h"
-#include "python2.7/frameobject.h"
-#else
-#error "Unable to find usable Python.h"
#endif
/* If Python.h does not define WITH_THREAD, then the various