Index: gdb/configure.ac |
diff --git a/gdb/configure.ac b/gdb/configure.ac |
index 15c4f163cbf7e2e46c46dd3b500e361f4e1d5dab..7c37f25edbb2b3959a004be490e1f23cb24d6361 100644 |
--- a/gdb/configure.ac |
+++ b/gdb/configure.ac |
@@ -1,5 +1,5 @@ |
dnl Autoconf configure script for GDB, the GNU debugger. |
-dnl Copyright (C) 1995-2012 Free Software Foundation, Inc. |
+dnl Copyright (C) 1995-2013 Free Software Foundation, Inc. |
dnl |
dnl This file is part of GDB. |
dnl |
@@ -23,10 +23,8 @@ AC_INIT(main.c) |
AC_CONFIG_HEADER(config.h:config.in) |
AM_MAINTAINER_MODE |
-# Provide more thorough testing by -lmcheck. |
-# Set it to 'true' for development snapshots, 'false' for releases or |
-# pre-releases. |
-development=false |
+# Set the 'development' global. |
+. $srcdir/development.sh |
AC_PROG_CC |
AC_USE_SYSTEM_EXTENSIONS |
@@ -203,6 +201,7 @@ fi |
TARGET_OBS= |
all_targets= |
+HAVE_NATIVE_GCORE_TARGET= |
for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'` |
do |
@@ -236,6 +235,12 @@ do |
if test x${want64} = xfalse; then |
. ${srcdir}/../bfd/config.bfd |
fi |
+ |
+ # Check whether this target is native and supports gcore. |
+ if test $gdb_native = yes -a "$targ_alias" = "$target_alias" \ |
+ && $gdb_have_gcore; then |
+ HAVE_NATIVE_GCORE_TARGET=1 |
+ fi |
fi |
done |
@@ -264,6 +269,7 @@ if test x${all_targets} = xtrue; then |
fi |
AC_SUBST(TARGET_OBS) |
+AC_SUBST(HAVE_NATIVE_GCORE_TARGET) |
# For other settings, only the main target counts. |
gdb_sim= |
@@ -478,8 +484,15 @@ AC_CHECK_TOOL(AR, ar) |
AC_CHECK_TOOL(DLLTOOL, dlltool) |
AC_CHECK_TOOL(WINDRES, windres) |
-# Needed for GNU/Hurd. |
-AC_CHECK_TOOL(MIG, mig) |
+case $host_os in |
+ gnu*) |
+ # Needed for GNU Hurd hosts. |
+ AC_CHECK_TOOL(MIG, mig) |
+ if test x"$MIG" = x; then |
+ AC_MSG_ERROR([MIG not found but required for $host hosts]) |
+ fi |
+ ;; |
+esac |
# ---------------------- # |
# Checks for libraries. # |
@@ -645,11 +658,6 @@ AC_SUBST(READLINE_DEPS) |
AC_SUBST(READLINE_CFLAGS) |
AC_SUBST(READLINE_TEXI_INCFLAG) |
-dnl -lmcheck provides cheap enough memory mangling for debugging purposes. |
-if $development; then |
- AC_CHECK_LIB(mcheck, main) |
-fi |
- |
# Generate jit-reader.h |
# This is typedeffed to GDB_CORE_ADDR in jit-reader.h |
@@ -704,6 +712,10 @@ else |
fi |
fi |
+# --------------------- # |
+# Check for libpython. # |
+# --------------------- # |
+ |
dnl Utility to simplify finding libpython. |
dnl $1 = pythonX.Y |
dnl $2 = the shell variable to assign the result to |
@@ -994,12 +1006,43 @@ if test "${have_libpython}" != no; then |
# unilaterally defined, and that in turn causes _SGIAPI to evaluate |
# to false. So, we work around this issue by defining siginfo ourself |
# though the command-line. |
+ # |
+ # On x64 Windows, Python's include headers, and pyconfig.h in |
+ # particular, rely on MS_WIN64 macro to detect that it's a 64bit |
+ # version of Windows. Unfortunately, MS_WIN64 is only defined if |
+ # _MSC_VER, a Microsoft-specific macro, is defined. So, when |
+ # building on x64 Windows with GCC, we define MS_WIN64 ourselves. |
+ # The issue was reported to the Python community, but still isn't |
+ # solved as of 2012-10-02 (http://bugs.python.org/issue4709). |
+ |
case "$gdb_host" in |
irix*) if test "${GCC}" = yes; then |
CPPFLAGS="$CPPFLAGS -Dsiginfo=__siginfo" |
fi |
;; |
+ mingw64) |
+ if test "${GCC}" = yes; then |
+ CPPFLAGS="$CPPFLAGS -DMS_WIN64" |
+ fi |
+ ;; |
esac |
+ |
+ # Note that "python -m threading" cannot be used to check for |
+ # threading support due to a bug in Python 2.7.3 |
+ # (http://bugs.python.org/issue15567). |
+ AC_MSG_CHECKING(whether python supports threads) |
+ saved_CPPFLAGS="${CPPFLAGS}" |
+ CPPFLAGS="${PYTHON_CPPFLAGS}" |
+ # Note that the test is reversed so that python_has_threads=yes on |
+ # unexpected failures. |
+ AC_PREPROC_IFELSE(AC_LANG_SOURCE([[ |
+#include <Python.h> |
+#ifdef WITH_THREAD |
+# error |
+#endif |
+ ]]), [python_has_threads=no], [python_has_threads=yes]) |
+ AC_MSG_RESULT(${python_has_threads}) |
+ CPPFLAGS="${saved_CPPFLAGS}" |
else |
# Even if Python support is not compiled in, we need to have these files |
# included. |
@@ -1011,33 +1054,43 @@ AC_SUBST(PYTHON_CFLAGS) |
AC_SUBST(PYTHON_CPPFLAGS) |
AC_SUBST(PYTHON_LIBS) |
+# --------------------- # |
+# Check for libmcheck. # |
+# --------------------- # |
+ |
+# Enable -lmcheck by default (it provides cheap-enough memory mangling), |
+# but turn it off if Python is enabled with threads, since -lmcheck is |
+# not thread safe (http://sourceware.org/bugzilla/show_bug.cgi?id=9939), |
+# and for releases. |
+if test \( "${have_libpython}" = "no" -o "${python_has_threads}" = "no" \) \ |
+ && $development; then |
+ libmcheck_default=yes |
+else |
+ libmcheck_default=no |
+fi |
+GDB_AC_LIBMCHECK(${libmcheck_default}) |
+ |
+if test "$ENABLE_LIBMCHECK" = "yes" \ |
+ -a "${have_libpython}" != "no" \ |
+ -a "${python_has_threads}" = "yes" ; then |
+ AC_MSG_WARN(--enable-libmcheck may lead to spurious crashes if threads are used in python) |
+fi |
+ |
# ------------------------- # |
# Checks for header files. # |
# ------------------------- # |
-AC_HEADER_DIRENT |
-AC_HEADER_STAT |
AC_HEADER_STDC |
# elf_hp.h is for HP/UX 64-bit shared library support. |
-# FIXME: kettenis/20030102: In most cases we include these (ctype.h, time.h) |
-# unconditionally, so what's the point in checking these? |
AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \ |
- thread_db.h signal.h stddef.h \ |
- stdlib.h string.h memory.h strings.h sys/fault.h \ |
+ thread_db.h \ |
+ sys/fault.h \ |
sys/file.h sys/filio.h sys/ioctl.h sys/param.h \ |
sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \ |
sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \ |
- sys/types.h sys/wait.h wait.h termios.h termio.h \ |
- sgtty.h unistd.h elf_hp.h ctype.h time.h locale.h \ |
- dlfcn.h sys/socket.h sys/un.h]) |
-AC_CHECK_HEADERS(link.h, [], [], |
-[#if HAVE_SYS_TYPES_H |
-# include <sys/types.h> |
-#endif |
-#if HAVE_NLIST_H |
-# include <nlist.h> |
-#endif |
-]) |
+ termios.h termio.h \ |
+ sgtty.h elf_hp.h \ |
+ dlfcn.h]) |
AC_CHECK_HEADERS(sys/proc.h, [], [], |
[#if HAVE_SYS_PARAM_H |
# include <sys/param.h> |
@@ -1071,8 +1124,7 @@ AC_CHECK_HEADERS(term.h, [], [], |
# Checks for declarations. # |
# ------------------------- # |
-AC_CHECK_DECLS([free, malloc, realloc, strerror, strstr, getopt, |
- snprintf, vsnprintf]) |
+AC_CHECK_DECLS([free, malloc, realloc, snprintf]) |
AM_LC_MESSAGES |
# ----------------------- # |
@@ -1109,17 +1161,17 @@ AC_FUNC_VFORK |
AC_CHECK_FUNCS([canonicalize_file_name realpath getrusage getuid getgid \ |
pipe poll pread pread64 pwrite readlink resize_term \ |
sbrk setpgid setpgrp setsid \ |
- sigaction sigprocmask sigsetmask socketpair syscall \ |
+ sigaction sigprocmask sigsetmask socketpair \ |
ttrace wborder wresize setlocale iconvlist libiconvlist btowc \ |
- setrlimit getrlimit posix_madvise waitpid lstat]) |
+ setrlimit getrlimit posix_madvise waitpid lstat \ |
+ ptrace64]) |
AM_LANGINFO_CODESET |
+GDB_AC_COMMON |
# Check the return and argument types of ptrace. No canned test for |
# this, so roll our own. |
gdb_ptrace_headers=' |
-#if HAVE_SYS_TYPES_H |
-# include <sys/types.h> |
-#endif |
+#include <sys/types.h> |
#if HAVE_SYS_PTRACE_H |
# include <sys/ptrace.h> |
#endif |
@@ -1152,7 +1204,7 @@ AC_CACHE_CHECK([types of arguments for ptrace], gdb_cv_func_ptrace_args, [ |
for gdb_arg1 in 'int' 'long'; do |
for gdb_arg2 in 'pid_t' 'int' 'long'; do |
for gdb_arg3 in 'int *' 'caddr_t' 'int' 'long' 'void *'; do |
- for gdb_arg4 in 'int' 'long'; do |
+ for gdb_arg4 in 'int' 'long' 'void *'; do |
AC_TRY_COMPILE($gdb_ptrace_headers, [ |
extern $gdb_cv_func_ptrace_ret |
ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4); |
@@ -1179,6 +1231,8 @@ IFS=$ac_save_IFS |
shift |
AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG3, $[3], |
[Define to the type of arg 3 for ptrace.]) |
+AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG4, $[4], |
+ [Define to the type of arg 4 for ptrace.]) |
if test -n "$[5]"; then |
AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG5, $[5], |
[Define to the type of arg 5 for ptrace.]) |
@@ -1334,19 +1388,17 @@ if test $gdb_cv_have_pt_getxmmregs = yes; then |
[Define if sys/ptrace.h defines the PT_GETXMMREGS request.]) |
fi |
-# Detect which type of /proc is in use, such as for Unixware or Solaris. |
+# Detect which type of /proc is in use, such as for Solaris. |
if test "${target}" = "${host}"; then |
case "${host}" in |
- *-*-unixware* | *-*-sysv4.2* | *-*-sysv5* | *-*-interix* ) |
+ *-*-sysv4.2* | *-*-sysv5* ) |
AC_DEFINE(NEW_PROC_API, 1, |
- [Define if you want to use new multi-fd /proc interface |
- (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros).]) |
+ [Define if you want to use new multi-fd /proc interface.]) |
;; |
*-*-solaris2.[[6789]] | *-*-solaris2.1[[0-9]]*) |
AC_DEFINE(NEW_PROC_API, 1, |
- [Define if you want to use new multi-fd /proc interface |
- (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros).]) |
+ [Define if you want to use new multi-fd /proc interface.]) |
;; |
mips-sgi-irix5*) |
# Work around <sys/proc.h> needing _KMEMUSER problem on IRIX 5. |
@@ -1358,14 +1410,11 @@ if test "${target}" = "${host}"; then |
fi |
if test "$ac_cv_header_sys_procfs_h" = yes; then |
- BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t) |
- BFD_HAVE_SYS_PROCFS_TYPE(prrun_t) |
BFD_HAVE_SYS_PROCFS_TYPE(gregset_t) |
BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t) |
BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t) |
BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t) |
BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t) |
- BFD_HAVE_SYS_PROCFS_TYPE(prfpregset32_t) |
BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t) |
BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t) |
BFD_HAVE_SYS_PROCFS_TYPE(prsysent_t) |
@@ -1400,99 +1449,6 @@ if test "$ac_cv_header_sys_procfs_h" = yes; then |
[Define if the prfpregset_t type is broken.]) |
fi |
fi |
- |
- dnl Check for PIOCSET ioctl entry |
- |
- AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h) |
- AC_CACHE_VAL(gdb_cv_have_procfs_piocset, |
- [AC_TRY_COMPILE([#include <unistd.h> |
-#include <sys/types.h> |
-#include <sys/procfs.h> |
-], [ |
- int dummy;; |
- dummy = ioctl(0, PIOCSET, &dummy); |
- ], |
- gdb_cv_have_procfs_piocset=yes, gdb_cv_have_procfs_piocset=no)]) |
- AC_MSG_RESULT($gdb_cv_have_procfs_piocset) |
- if test $gdb_cv_have_procfs_piocset = yes; then |
- AC_DEFINE(HAVE_PROCFS_PIOCSET, 1, |
- [Define if ioctl argument PIOCSET is available.]) |
- fi |
-fi |
- |
-dnl For native ports (host == target), check to see what kind of |
-dnl legacy link.h support is needed. (See solib-legacy.c.) |
-if test ${host} = ${target} ; then |
- dnl Check for struct link_map with l_ members which are indicative |
- dnl of SVR4-like shared libraries |
- |
- AC_MSG_CHECKING(for member l_addr in struct link_map) |
- AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_l_members, |
- [AC_TRY_COMPILE([#include <link.h>], |
- [struct link_map lm; (void) lm.l_addr;], |
- gdb_cv_have_struct_link_map_with_l_members=yes, |
- gdb_cv_have_struct_link_map_with_l_members=no)]) |
- AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_l_members) |
- if test $gdb_cv_have_struct_link_map_with_l_members = yes; then |
- AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS,1, |
- [Define if <link.h> exists and defines struct link_map which has |
- members with an ``l_'' prefix. (For Solaris, SVR4, and |
- SVR4-like systems.)]) |
- fi |
- |
- dnl Check for struct link_map with lm_ members which are indicative |
- dnl of SunOS-like shared libraries |
- |
- AC_MSG_CHECKING(for member lm_addr in struct link_map) |
- AC_CACHE_VAL(gdb_cv_have_struct_link_map_with_lm_members, |
- [AC_TRY_COMPILE([#include <sys/types.h> |
-#include <link.h>], |
- [struct link_map lm; (void) lm.lm_addr;], |
- gdb_cv_have_struct_link_map_with_lm_members=yes, |
- gdb_cv_have_struct_link_map_with_lm_members=no)]) |
- AC_MSG_RESULT($gdb_cv_have_struct_link_map_with_lm_members) |
- if test $gdb_cv_have_struct_link_map_with_lm_members = yes; then |
- AC_DEFINE(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS, 1, |
- [Define if <link.h> exists and defines struct link_map which has |
- members with an ``lm_'' prefix. (For SunOS.)]) |
- fi |
- |
- dnl Check for struct so_map with som_ members which are found on |
- dnl some *BSD systems. |
- |
- AC_MSG_CHECKING(for member som_addr in struct so_map) |
- AC_CACHE_VAL(gdb_cv_have_struct_so_map_with_som_members, |
- [AC_TRY_COMPILE([#include <sys/types.h> |
-#ifdef HAVE_NLIST_H |
-#include <nlist.h> |
-#endif |
-#include <link.h>], |
- [struct so_map lm; (void) lm.som_addr;], |
- gdb_cv_have_struct_so_map_with_som_members=yes, |
- gdb_cv_have_struct_so_map_with_som_members=no)]) |
- AC_MSG_RESULT($gdb_cv_have_struct_so_map_with_som_members) |
- if test $gdb_cv_have_struct_so_map_with_som_members = yes; then |
- AC_DEFINE(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS, 1, |
- [Define if <link.h> exists and defines a struct so_map which has |
- members with an ``som_'' prefix. (Found on older *BSD systems.)]) |
- fi |
- |
- dnl Check for struct link_map32 type, which allows a 64-bit Solaris |
- dnl debugger to debug a 32-bit Solaris app with 32-bit shared libraries. |
- |
- AC_MSG_CHECKING(for struct link_map32 in sys/link.h) |
- AC_CACHE_VAL(gdb_cv_have_struct_link_map32, |
- [AC_TRY_COMPILE([#define _SYSCALL32 |
-#include <sys/link.h>], [struct link_map32 l;], |
- gdb_cv_have_struct_link_map32=yes, |
- gdb_cv_have_struct_link_map32=no)]) |
- AC_MSG_RESULT($gdb_cv_have_struct_link_map32) |
- if test $gdb_cv_have_struct_link_map32 = yes; then |
- AC_DEFINE(HAVE_STRUCT_LINK_MAP32, 1, |
- [Define if <sys/link.h> has struct link_map32]) |
- AC_DEFINE(_SYSCALL32, 1, |
- [Define if <sys/link.h> has link_map32 (solaris sparc-64 target)]) |
- fi |
fi |
# Check if the compiler supports the `long long' type. |
@@ -1503,9 +1459,9 @@ AC_CACHE_CHECK([for long long support in compiler], gdb_cv_c_long_long, |
[[switch (foo & 2) { case 0: return 1; }]])], |
gdb_cv_c_long_long=yes, |
gdb_cv_c_long_long=no)]) |
-if test $gdb_cv_c_long_long = yes; then |
- AC_DEFINE(CC_HAS_LONG_LONG, 1, |
- [Define to 1 if the compiler supports long long.]) |
+if test $gdb_cv_c_long_long != yes; then |
+ # libdecnumber requires long long. |
+ AC_MSG_ERROR([Compiler must support long long for GDB.]) |
fi |
# Check if the compiler and runtime support printing long longs. |
@@ -1634,6 +1590,8 @@ if test "${gdb_native}" = yes; then |
# Problem does not happen for the recommended libpythonX.Y.so linkage. |
old_CFLAGS="$CFLAGS" |
CFLAGS="$CFLAGS $PYTHON_CFLAGS" |
+ old_LIBS="$LIBS" |
+ LIBS="$LIBS $PYTHON_LIBS" |
AC_RUN_IFELSE( |
AC_LANG_PROGRAM( |
[#include "]${have_libpython}[/Python.h"], |
@@ -1643,6 +1601,7 @@ if test "${gdb_native}" = yes; then |
Py_Finalize (); |
return err == 0 ? 0 : 1;]), |
[dynamic_list=true], [], [true]) |
+ LIBS="$old_LIBS" |
CFLAGS="$old_CFLAGS" |
fi |
LDFLAGS="$old_LDFLAGS" |
@@ -1782,8 +1741,10 @@ if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then |
) |
fi |
dnl See if we can issue tkill syscall. |
-if test "x$gdb_cv_sys_syscall_h_has_tkill" = "xyes" && test "x$ac_cv_func_syscall" = "xyes"; then |
- AC_DEFINE(HAVE_TKILL_SYSCALL, 1, [Define if you support the tkill syscall.]) |
+if test "x$gdb_cv_sys_syscall_h_has_tkill" = "xyes"; then |
+ AC_CHECK_FUNC(syscall, |
+ AC_DEFINE(HAVE_TKILL_SYSCALL, 1, [Define if you support the tkill syscall.]) |
+ ) |
fi |
dnl Check if we can disable the virtual address space randomization. |
@@ -1809,6 +1770,17 @@ then |
[Define if you support the personality syscall.]) |
fi |
+dnl Set the host's .gdbinit filename. |
+case $host_os in |
+ go32* | *djgpp*) |
+ gdbinit=gdb.ini |
+ ;; |
+ *) |
+ gdbinit=.gdbinit |
+ ;; |
+esac |
+AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.]) |
+ |
dnl Handle optional features that can be enabled. |
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR, |
@@ -1848,21 +1820,18 @@ if test "${ERROR_ON_WARNING}" = yes ; then |
WERROR_CFLAGS="-Werror" |
fi |
-# The entries after -Wno-pointer-sign are disabled warnings which may |
-# be enabled in the future, which can not currently be used to build |
-# GDB. |
-# NOTE: If you change this list, remember to update |
-# gdb/doc/gdbint.texinfo. |
build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \ |
--Wformat-nonliteral -Wno-pointer-sign \ |
+-Wpointer-sign \ |
-Wno-unused -Wunused-value -Wunused-function \ |
-Wno-switch -Wno-char-subscripts -Wmissing-prototypes \ |
--Wdeclaration-after-statement" |
+-Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \ |
+-Wold-style-declaration -Wold-style-definition" |
# Enable -Wno-format by default when using gcc on mingw since many |
# GCC versions complain about %I64. |
case "${host}" in |
*-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;; |
+ *) build_warnings="$build_warnings -Wformat-nonliteral" ;; |
esac |
AC_ARG_ENABLE(build-warnings, |
@@ -1916,7 +1885,7 @@ AC_SUBST(WERROR_CFLAGS) |
# In the Cygwin environment, we need some additional flags. |
AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin, |
-[AC_EGREP_CPP(lose, [ |
+[AC_EGREP_CPP(^lose$, [ |
#if defined (__CYGWIN__) || defined (__CYGWIN32__) |
lose |
#endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])]) |
@@ -1955,44 +1924,56 @@ esac |
AC_SUBST(WIN32LIBS) |
# Add ELF support to GDB, but only if BFD includes ELF support. |
-OLD_CFLAGS=$CFLAGS |
-OLD_LDFLAGS=$LDFLAGS |
-OLD_LIBS=$LIBS |
-# Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS |
-# points somewhere with bfd, with -I/foo/lib and -L/foo/lib. We |
-# always want our bfd. |
-CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS" |
-LDFLAGS="-L../bfd -L../libiberty $LDFLAGS" |
-intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'` |
-# -ldl is provided by bfd/Makfile.am (LIBDL) <PLUGINS>. |
-if test "$plugins" = "yes"; then |
- LIBS="-ldl $LIBS" |
-fi |
-LIBS="-lbfd -liberty $intl $LIBS" |
-AC_CACHE_CHECK([for ELF support in BFD], gdb_cv_var_elf, |
-[AC_TRY_LINK( |
-[#include <stdlib.h> |
-#include "bfd.h" |
-#include "elf-bfd.h" |
-], |
-[bfd *abfd = NULL; bfd_get_elf_phdr_upper_bound (abfd); ], |
-gdb_cv_var_elf=yes, gdb_cv_var_elf=no)]) |
+GDB_AC_CHECK_BFD([for ELF support in BFD], gdb_cv_var_elf, |
+ [bfd_get_elf_phdr_upper_bound (NULL)], elf-bfd.h) |
if test $gdb_cv_var_elf = yes; then |
CONFIG_OBS="$CONFIG_OBS elfread.o stap-probe.o" |
AC_DEFINE(HAVE_ELF, 1, |
[Define if ELF support should be included.]) |
# -ldl is provided by bfd/Makfile.am (LIBDL) <PLUGINS>. |
if test "$plugins" = "yes"; then |
- OLD_LIBS="-ldl $OLD_LIBS" |
+ AC_SEARCH_LIBS(dlopen, dl) |
fi |
fi |
-CFLAGS=$OLD_CFLAGS |
-LDFLAGS=$OLD_LDFLAGS |
-LIBS=$OLD_LIBS |
+ |
+# Add macho support to GDB, but only if BFD includes it. |
+GDB_AC_CHECK_BFD([for Mach-O support in BFD], gdb_cv_var_macho, |
+ [bfd_mach_o_lookup_command (NULL, 0, NULL)], mach-o.h) |
+if test $gdb_cv_var_macho = yes; then |
+ CONFIG_OBS="$CONFIG_OBS machoread.o" |
+fi |
+ |
+# Add SOM support to GDB, but only if BFD includes it. |
+GDB_AC_CHECK_BFD([for SOM support in BFD], gdb_cv_var_som, |
+ [bfd_som_attach_aux_hdr (NULL, 0, NULL)], som.h) |
+if test $gdb_cv_var_som = yes; then |
+ CONFIG_OBS="$CONFIG_OBS somread.o" |
+fi |
# Add any host-specific objects to GDB. |
CONFIG_OBS="${CONFIG_OBS} ${gdb_host_obs}" |
+# If building on ELF, look for lzma support for embedded compressed debug info. |
+if test $gdb_cv_var_elf = yes; then |
+ AC_ARG_WITH(lzma, |
+ AS_HELP_STRING([--with-lzma], [support lzma compression (auto/yes/no)]), |
+ [], [with_lzma=auto]) |
+ AC_MSG_CHECKING([whether to use lzma]) |
+ AC_MSG_RESULT([$with_lzma]) |
+ |
+ if test "${with_lzma}" != no; then |
+ AC_LIB_HAVE_LINKFLAGS([lzma], [], [#include "lzma.h"], |
+ [lzma_index_iter iter; |
+ lzma_index_iter_init (&iter, 0); |
+ lzma_mf_is_supported (LZMA_MF_HC3);]) |
+ if test "$HAVE_LIBLZMA" != yes; then |
+ if test "$with_lzma" = yes; then |
+ AC_MSG_ERROR([missing liblzma for --with-lzma]) |
+ fi |
+ fi |
+ fi |
+fi |
+ |
LIBGUI="../libgui/src/libgui.a" |
GUI_CFLAGS_X="-I${srcdir}/../libgui/src" |
AC_SUBST(LIBGUI) |
@@ -2246,6 +2227,47 @@ if test "$enable_gdbserver" = "yes" -a "$gdbserver_build_enabled" != "yes"; then |
AC_MSG_ERROR(Automatic gdbserver build is not supported for this configuration) |
fi |
+# Check for babeltrace and babeltrace-ctf |
+AC_ARG_WITH(babeltrace, |
+ AC_HELP_STRING([--with-babeltrace], [include babeltrace support (auto/yes/no)]), |
+ [], [with_babeltrace=auto]) |
+AC_MSG_CHECKING([whether to use babeltrace]) |
+AC_MSG_RESULT([$with_babeltrace]) |
+ |
+if test "x$with_babeltrace" = "xno"; then |
+ AC_MSG_WARN([babletrace support disabled; GDB is unable to read CTF data.]) |
+else |
+ # Append -Werror to CFLAGS so that configure can catch the warning |
+ # "assignment from incompatible pointer type", which is related to |
+ # the babeltrace change from 1.0.3 to 1.1.0. Babeltrace 1.1.0 works |
+ # in GDB, while babeltrace 1.0.3 is broken. |
+ # AC_LIB_HAVE_LINKFLAGS may modify CPPFLAGS in it, so it should be |
+ # safe to save and restore CFLAGS here. |
+ saved_CFLAGS=$CFLAGS |
+ CFLAGS="$CFLAGS -Werror" |
+ AC_LIB_HAVE_LINKFLAGS([babeltrace], [babeltrace-ctf], |
+ [#include <babeltrace/babeltrace.h> |
+ #include <babeltrace/ctf/events.h> |
+ #include <babeltrace/ctf/iterator.h>], |
+ [struct bt_iter_pos *pos = bt_iter_get_pos (bt_ctf_get_iter (NULL)); |
+ struct bt_ctf_event *event = NULL; |
+ const struct bt_definition *scope; |
+ |
+ scope = bt_ctf_get_top_level_scope (event, |
+ BT_STREAM_EVENT_HEADER); |
+ bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, "id")); |
+ ]) |
+ CFLAGS=$saved_CFLAGS |
+ |
+ if test "$HAVE_LIBBABELTRACE" != yes; then |
+ if test "$with_babeltrace" = yes; then |
+ AC_MSG_ERROR([babeltrace is missing or unusable]) |
+ else |
+ AC_MSG_WARN([babeltrace is missing or unusable; GDB is unable to read CTF data.]) |
+ fi |
+ fi |
+fi |
+ |
# If nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link |
# to an empty version. |
@@ -2274,6 +2296,20 @@ dnl At the moment, we just assume it's UTF-8. |
AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF-8", |
[Define to be a string naming the default host character set.]) |
+# Undo the $ec_script escaping suitable for Makefile. |
+transform=`echo "$program_transform_name" | sed -e 's/[\\$][\\$]/\\$/g'` |
+GDB_TRANSFORM_NAME=`echo gdb | sed -e "$transform"` |
+if test "x$GDB_TRANSFORM_NAME" = x; then |
+ GDB_TRANSFORM_NAME=gdb |
+fi |
+AC_SUBST(GDB_TRANSFORM_NAME) |
+GCORE_TRANSFORM_NAME=`echo gcore | sed -e "$transform"` |
+if test "x$GCORE_TRANSFORM_NAME" = x; then |
+ GCORE_TRANSFORM_NAME=gcore |
+fi |
+AC_SUBST(GCORE_TRANSFORM_NAME) |
+AC_CONFIG_FILES([gcore], [chmod +x gcore]) |
+ |
AC_OUTPUT(Makefile gdb-gdb.gdb doc/Makefile data-directory/Makefile, |
[ |
case x$CONFIG_HEADERS in |