X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fconfigure.ac;h=138fc8558736b877732f6f45218a2e3b85da4d09;hb=270c9937446ca5273caf7fb102bcdba9ed7cff41;hp=d52bd15d33d32f2d667270d85fd54c7b29c1dd95;hpb=6fea9e186c3da74c8f0ba9d007522a7575d24a73;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/configure.ac b/gdb/configure.ac index d52bd15d33..138fc85587 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -1,8 +1,8 @@ dnl Autoconf configure script for GDB, the GNU debugger. -dnl Copyright (C) 1995-2012 Free Software Foundation, Inc. +dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl dnl This file is part of GDB. -dnl +dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 3 of the License, or @@ -23,15 +23,14 @@ 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=true +# Set the 'development' global. +. $srcdir/../bfd/development.sh AC_PROG_CC AC_USE_SYSTEM_EXTENSIONS ACX_LARGEFILE AM_PROG_CC_STDC +AM_PROG_INSTALL_STRIP AC_CONFIG_AUX_DIR(..) AC_CANONICAL_SYSTEM @@ -78,7 +77,7 @@ AC_SUBST(localedir) if test x"$USE_NLS" = xyes; then CONFIG_ALL="$CONFIG_ALL all-po" - CONFIG_CLEAN="$CONFIG_CLEAN clean-po" + CONFIG_CLEAN="$CONFIG_CLEAN clean-po" CONFIG_INSTALL="$CONFIG_INSTALL install-po" CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-po" fi @@ -203,6 +202,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 +236,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 +270,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 +485,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. # @@ -535,7 +549,7 @@ AS_HELP_STRING([--with-iconv-bin=PATH], [specify where to find the iconv program # On alpha-osf, it appears that libtermcap and libcurses are not compatible. # There is a very specific comment in /usr/include/curses.h explaining that # termcap routines built into libcurses must not be used. -# +# # The symptoms we observed so far is GDB unexpectedly changing # the terminal settings when tgetent is called - this is particularly # visible as the output is missing carriage returns, and so rapidly @@ -612,7 +626,7 @@ case $host_os in go32* | *djgpp*) ac_cv_search_tgetent="none required" ;; - *mingw32*) + *mingw32*) ac_cv_search_tgetent="none required" CONFIG_OBS="$CONFIG_OBS windows-termcap.o" ;; @@ -645,11 +659,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 +713,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,50 +1007,254 @@ 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 +#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. - CONFIG_OBS="$CONFIG_OBS python.o py-value.o py-prettyprint.o py-auto-load.o" - CONFIG_SRCS="$CONFIG_SRCS python/python.c python/py-value.c \ - python/py-prettyprint.c python/py-auto-load.c" + # Even if Python support is not compiled in, we need to have this file + # included so that the "python" command, et.al., still exists. + CONFIG_OBS="$CONFIG_OBS python.o" + CONFIG_SRCS="$CONFIG_SRCS python/python.c" fi AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_CPPFLAGS) AC_SUBST(PYTHON_LIBS) +# -------------------- # +# Check for libguile. # +# -------------------- # + +dnl Utility to simplify finding libguile. +dnl $1 = pkg-config-program +dnl $2 = space-separate list of guile versions to try +dnl $3 = yes|no, indicating whether to flag errors or ignore them +dnl $4 = the shell variable to assign the result to +dnl If libguile is found we store "yes" here. + +AC_DEFUN([AC_TRY_LIBGUILE], +[ + pkg_config=$1 + guile_version_list=$2 + flag_errors=$3 + define([have_libguile_var],$4) + found_usable_guile=checking + AC_MSG_CHECKING([for usable guile from ${pkg_config}]) + for guile_version in ${guile_version_list}; do + ${pkg_config} --exists ${guile_version} 2>/dev/null + if test $? != 0; then + continue + fi + dnl pkg-config says the package exists, so if we get an error now, + dnl that's bad. + new_CPPFLAGS=`${pkg_config} --cflags ${guile_version}` + if test $? != 0; then + AC_MSG_ERROR([failure running pkg-config --cflags ${guile_version}]) + fi + new_LIBS=`${pkg_config} --libs ${guile_version}` + if test $? != 0; then + AC_MSG_ERROR([failure running pkg-config --libs ${guile_version}]) + fi + dnl If we get this far, great. + found_usable_guile=${guile_version} + break + done + if test "${found_usable_guile}" = "checking"; then + if test "${flag_errors}" = "yes"; then + AC_MSG_ERROR([unable to find usable guile version from "${guile_version_list}"]) + else + found_usable_guile=no + fi + fi + dnl One final sanity check. + dnl The user could have said --with-guile=python-2.7. + if test "${found_usable_guile}" != no; then + save_CPPFLAGS=$CPPFLAGS + save_LIBS=$LIBS + CPPFLAGS="$CPPFLAGS $new_CPPFLAGS" + LIBS="$LIBS $new_LIBS" + AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "libguile.h"]], + [[scm_init_guile ();]]), + [have_libguile_var=yes + GUILE_CPPFLAGS=$new_CPPFLAGS + GUILE_LIBS=$new_LIBS], + [found_usable_guile=no]) + CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS + if test "${found_usable_guile}" = no; then + if test "${flag_errors}" = yes; then + AC_MSG_FAILURE([linking guile version ${guile_version} test program failed]) + fi + fi + fi + AC_MSG_RESULT([${found_usable_guile}]) +]) + +dnl There are several different values for --with-guile: +dnl +dnl no - Don't include guile support. +dnl yes - Include guile support, error if it's missing. +dnl The pkg-config program must be in $PATH. +dnl auto - Same as "yes", but if guile is missing from the system, +dnl fall back to "no". +dnl guile-version [guile-version-choice-2 ...] - +dnl A space-separated list of guile package versions to try. +dnl These are passed to pkg-config as-is. +dnl E.g., guile-2.0 or guile-2.2-uninstalled +dnl This requires making sure PKG_CONFIG_PATH is set appropriately. +dnl /path/to/pkg-config - +dnl Use this pkg-config program. +dnl NOTE: This needn't be the "real" pkg-config program. +dnl It could be a shell script. It is invoked as: +dnl pkg-config --exists $version +dnl pkg-config --cflags $version +dnl pkg-config --libs $version +dnl $version will be the default guile version (currently guile-2.0), +dnl but the program is free to ignore this. + +AC_ARG_WITH(guile, + AS_HELP_STRING([--with-guile@<:@=GUILE@:>@], [include guile support (auto/yes/no//)]), + [], [with_guile=auto]) +AC_MSG_CHECKING([whether to use guile]) +AC_MSG_RESULT([$with_guile]) + +dnl We check guile with pkg-config. +AC_PATH_PROG(pkg_config_prog_path, pkg-config, missing) + +try_guile_versions="guile-2.2 guile-2.0" +have_libguile=no +case "${with_guile}" in +no) + AC_MSG_WARN([guile support disabled; some features will be unavailable.]) + ;; +auto) + if test "${pkg_config_prog_path}" = "missing"; then + AC_MSG_WARN([pkg-config not found, guile support disabled]) + else + AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${try_guile_versions}, no, have_libguile) + fi + ;; +yes) + if test "${pkg_config_prog_path}" = "missing"; then + AC_MSG_ERROR([pkg-config not found]) + fi + AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${try_guile_versions}, yes, have_libguile) + ;; +[[\\/]]* | ?:[[\\/]]*) + if test -x "${with_guile}"; then + AC_TRY_LIBGUILE(${with_guile}, ${try_guile_versions}, yes, have_libguile) + else + AC_MSG_ERROR([Guile config program not executable: ${with_guile}]) + fi + ;; +"" | */*) + # Disallow --with=guile="" and --with-guile=foo/bar. + AC_MSG_ERROR([invalid value for --with-guile]) + ;; +*) + # A space separate list of guile versions to try, in order. + if test "${pkg_config_prog_path}" = "missing"; then + AC_MSG_ERROR([pkg-config not found]) + fi + AC_TRY_LIBGUILE(${pkg_config_prog_path}, ${with_guile}, yes, have_libguile) + ;; +esac + +if test "${have_libguile}" != no; then + AC_DEFINE(HAVE_GUILE, 1, [Define if Guile interpreter is being linked in.]) + CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_GUILE_OBS)" + CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_GUILE_DEPS)" + CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_GUILE_SRCS)" + CONFIG_INSTALL="$CONFIG_INSTALL install-guile" + ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_GUILE_CFLAGS)" + + dnl The 'scm_new_smob' function appeared in Guile 2.0.6. + save_LIBS="$LIBS" + save_CPPFLAGS="$CPPFLAGS" + LIBS="$GUILE_LIBS" + CPPFLAGS="$GUILE_CPPFLAGS" + AC_CHECK_FUNCS([scm_new_smob]) + LIBS="$save_LIBS" + CPPFLAGS="$save_CPPFLAGS" +else + # Even if Guile support is not compiled in, we need to have these files + # included. + CONFIG_OBS="$CONFIG_OBS guile.o" + CONFIG_SRCS="$CONFIG_SRCS guile/guile.c" +fi +AC_SUBST(GUILE_CPPFLAGS) +AC_SUBST(GUILE_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 gnu/libc-version.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 -#endif -#if HAVE_NLIST_H -# include -#endif -]) + termios.h termio.h \ + sgtty.h elf_hp.h \ + dlfcn.h]) AC_CHECK_HEADERS(sys/proc.h, [], [], [#if HAVE_SYS_PARAM_H # include @@ -1071,8 +1288,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 +1325,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 -#endif +#include #if HAVE_SYS_PTRACE_H # include #endif @@ -1152,7 +1368,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 +1395,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.]) @@ -1289,7 +1507,7 @@ AC_CACHE_VAL(gdb_cv_have_ptrace_getregs, [gdb_cv_have_ptrace_getregs=no])]) AC_MSG_RESULT($gdb_cv_have_ptrace_getregs) if test $gdb_cv_have_ptrace_getregs = yes; then - AC_DEFINE(HAVE_PTRACE_GETREGS, 1, + AC_DEFINE(HAVE_PTRACE_GETREGS, 1, [Define if sys/ptrace.h defines the PTRACE_GETREGS request.]) fi @@ -1334,19 +1552,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 needing _KMEMUSER problem on IRIX 5. @@ -1358,14 +1574,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 +1613,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 -#include -#include -], [ - 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 ], - [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 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 -#include ], - [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 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 -#ifdef HAVE_NLIST_H -#include -#endif -#include ], - [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 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 ], [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 has struct link_map32]) - AC_DEFINE(_SYSCALL32, 1, - [Define if has link_map32 (solaris sparc-64 target)]) - fi fi # Check if the compiler supports the `long long' type. @@ -1503,9 +1623,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. @@ -1581,7 +1701,7 @@ fi # Check if the compiler and runtime support scanning long doubles. -AC_CACHE_CHECK([for long double support in scanf], +AC_CACHE_CHECK([for long double support in scanf], gdb_cv_scanf_has_long_double, [AC_RUN_IFELSE([AC_LANG_PROGRAM( [[#include ]], @@ -1634,6 +1754,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 +1765,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 +1905,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 +1934,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 +1984,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 +2049,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])]) @@ -1945,54 +2078,66 @@ fi case ${host} in *mingw32*) AC_DEFINE(USE_WIN32API, 1, - [Define if we should use the Windows API, instead of the - POSIX API. On Windows, we use the Windows API when - building for MinGW, but the POSIX API when building + [Define if we should use the Windows API, instead of the + POSIX API. On Windows, we use the Windows API when + building for MinGW, but the POSIX API when building for Cygwin.]) WIN32LIBS="$WIN32LIBS -lws2_32" ;; -esac +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) . -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 -#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) . 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) @@ -2051,7 +2196,7 @@ if test "${enable_gdbtk}" = "yes"; then # If building tcl in the same src tree, private headers # are not needed, but we need to be sure to use the right # headers library - TCL_INCLUDE="-I${TCL_SRC_DIR}/generic" + TCL_INCLUDE="-I${TCL_SRC_DIR}/generic" TCL_LIBRARY="${TCL_BUILD_LIB_SPEC}" TCL_DEPS="../tcl/${configdir}${TCL_LIB_FILE}" fi @@ -2064,7 +2209,7 @@ if test "${enable_gdbtk}" = "yes"; then # Check for in-tree Tk intree="no" if test "${TK_SRC_DIR}" = "${topdir}/tk"; then - intree="yes" + intree="yes" fi # Find Tk private headers @@ -2121,8 +2266,8 @@ AC_SUBST(GDBTK_SRC_DIR) AC_PATH_X -# Unlike the sim directory, whether a simulator is linked is controlled by -# presence of a gdb_sim definition in the target configure.tgt entry. +# Unlike the sim directory, whether a simulator is linked is controlled by +# presence of a gdb_sim definition in the target configure.tgt entry. # This code just checks for a few cases where we'd like to ignore those # definitions, even when they're present in the '.mt' file. These cases # are when --disable-sim is specified, or if the simulator directory is @@ -2246,6 +2391,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 + #include + #include ], + [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 +2460,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