X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fconfigure.ac;h=62750804fa26f6ed15200685f986d5575bf3c654;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=385f55c2ca3fab4cd1e33b40246341b8721f3155;hpb=28e7fd62340426746f9c896cbc40c5d374ec47aa;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/configure.ac b/gdb/configure.ac index 385f55c2ca..62750804fa 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-2013 Free Software Foundation, Inc. +dnl Copyright (C) 1995-2020 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 @@ -18,46 +18,32 @@ dnl along with this program. If not, see . dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.59)dnl +m4_include(../config/debuginfod.m4) + AC_INIT(main.c) -AC_CONFIG_HEADER(config.h:config.in) +AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h]) AM_MAINTAINER_MODE -# Provide more thorough testing by -lmcheck. -# Set it to 'true' for development snapshots, 'false' for releases or -# pre-releases. -development=true - AC_PROG_CC +AC_PROG_CXX + AC_USE_SYSTEM_EXTENSIONS ACX_LARGEFILE AM_PROG_CC_STDC +AM_PROG_INSTALL_STRIP AC_CONFIG_AUX_DIR(..) AC_CANONICAL_SYSTEM AC_ARG_PROGRAM +# We require a C++11 compiler. Check if one is available, and if +# necessary, set CXX_DIALECT to some -std=xxx switch. +AX_CXX_COMPILE_STDCXX(11, , mandatory) + # Dependency checking. ZW_CREATE_DEPDIR ZW_PROG_COMPILER_DEPENDENCIES([CC]) -# Check for the 'make' the user wants to use. -AC_CHECK_PROGS(MAKE, make) -MAKE_IS_GNU= -case "`$MAKE --version 2>&1 | sed 1q`" in - *GNU*) - MAKE_IS_GNU=yes - ;; -esac -AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes) -AC_PROG_MAKE_SET - -# Configure gnulib. We need to build gnulib under some other -# directory not "gnulib", to avoid the problem of both GDB and -# GDBserver wanting to build it in the same directory, when building -# in the source dir. -ACX_CONFIGURE_DIR(["gnulib"], ["build-gnulib"]) - dnl List of object files and targets accumulated by configure. CONFIG_OBS= @@ -78,20 +64,11 @@ 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 -GNULIB=build-gnulib/import - -# For Makefile dependencies. -GNULIB_STDINT_H= -if test x"$STDINT_H" != x; then - GNULIB_STDINT_H=$GNULIB/$STDINT_H -fi -AC_SUBST(GNULIB_STDINT_H) - PACKAGE=gdb AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ]) AC_SUBST(PACKAGE) @@ -146,7 +123,7 @@ AC_ARG_WITH(auto-load-dir, AS_HELP_STRING([--with-auto-load-dir=PATH], [directories from which to load auto-loaded scripts @<:@$debugdir:$datadir/auto-load@:>@]),, [with_auto_load_dir='$debugdir:$datadir/auto-load']) -escape_dir=`echo $with_auto_load_dir | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'` +escape_dir=`echo $with_auto_load_dir | sed -e 's/[[$]]datadir\>/\\\\\\\\\\\\&/g' -e 's/[[$]]debugdir\>/\\\\\\\\\\\\&/g'` AC_DEFINE_DIR(AUTO_LOAD_DIR, escape_dir, [Directories from which to load auto-loaded scripts.]) AC_MSG_RESULT([$with_auto_load_dir]) @@ -161,7 +138,7 @@ AS_HELP_STRING([--without-auto-load-safe-path], with_auto_load_safe_path="/" fi], [with_auto_load_safe_path="$with_auto_load_dir"]) -escape_dir=`echo $with_auto_load_safe_path | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'` +escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[[$]]datadir\>/\\\\\\\\\\\\&/g' -e 's/[[$]]debugdir\>/\\\\\\\\\\\\&/g'` AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir, [Directories safe to hold auto-loaded files.]) AC_MSG_RESULT([$with_auto_load_safe_path]) @@ -203,6 +180,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 +214,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,11 +248,11 @@ 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= gdb_osabi= -build_gdbserver= targ=$target; . ${srcdir}/configure.tgt # Fetch the default architecture and default target vector from BFD. @@ -287,29 +271,6 @@ if test "x$targ_defvec" != x; then [Define to BFD's default target vector. ]) fi -# The CLI cannot be disabled yet, but may be in the future. - -# Enable CLI. -AC_ARG_ENABLE(gdbcli, -AS_HELP_STRING([--disable-gdbcli], [disable command-line interface (CLI)]), - [case $enableval in - yes) - ;; - no) - AC_MSG_ERROR([the command-line interface cannot be disabled yet]) ;; - *) - AC_MSG_ERROR([bad value $enableval for --enable-gdbcli]) ;; - esac], - [enable_gdbcli=yes]) -if test x"$enable_gdbcli" = xyes; then - if test -d $srcdir/cli; then - CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_CLI_OBS)" - CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_CLI_DEPS)" - CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_CLI_SRCS)" - ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_CLI_CFLAGS)" - fi -fi - # Enable MI. AC_ARG_ENABLE(gdbmi, AS_HELP_STRING([--disable-gdbmi], [disable machine-interface (MI)]), @@ -321,7 +282,7 @@ AS_HELP_STRING([--disable-gdbmi], [disable machine-interface (MI)]), esac], [enable_gdbmi=yes]) if test x"$enable_gdbmi" = xyes; then - if test -d $srcdir/mi; then + if test -d "$srcdir/mi"; then CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_MI_OBS)" CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_MI_DEPS)" CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_MI_SRCS)" @@ -348,7 +309,7 @@ AS_HELP_STRING([--enable-gdbtk], [enable gdbtk graphical user interface (GUI)]), *) AC_MSG_ERROR([bad value $enableval for --enable-gdbtk]) ;; esac], - [if test -d $srcdir/gdbtk; then + [if test -d "$srcdir/gdbtk"; then enable_gdbtk=yes else enable_gdbtk=no @@ -360,8 +321,10 @@ case $host_os in enable_gdbtk=no ;; esac -# Libunwind support for ia64. +# Handle optional debuginfod support +AC_DEBUGINFOD +# Libunwind support for ia64. AC_ARG_WITH(libunwind-ia64, AS_HELP_STRING([--with-libunwind-ia64], [use libunwind frame unwinding for ia64 targets]),, @@ -426,7 +389,7 @@ AC_CACHE_CHECK([for _etext], ac_cv_var__etext, extern char _etext; ], [free (&_etext);], ac_cv_var__etext=yes, ac_cv_var__etext=no)]) -if test $ac_cv_var__etext = yes; then +if test "$ac_cv_var__etext" = yes; then AC_DEFINE(HAVE__ETEXT, 1, [Define to 1 if your system has the _etext variable. ]) fi @@ -436,12 +399,12 @@ AC_CACHE_CHECK([for etext], ac_cv_var_etext, extern char etext; ], [free (&etext);], ac_cv_var_etext=yes, ac_cv_var_etext=no)]) -if test $ac_cv_var_etext = yes; then +if test "$ac_cv_var_etext" = yes; then AC_DEFINE(HAVE_ETEXT, 1, [Define to 1 if your system has the etext variable. ]) fi if test "$enable_profiling" = yes ; then - if test $ac_cv_func_monstartup = no || test $ac_cv_func__mcleanup = no; then + if test "$ac_cv_func_monstartup" = no || test "$ac_cv_func__mcleanup" = no; then AC_MSG_ERROR(--enable-profiling requires monstartup and _mcleanup) fi PROFILE_CFLAGS=-pg @@ -452,15 +415,22 @@ if test "$enable_profiling" = yes ; then [AC_TRY_COMPILE([], [int x;], ac_cv_cc_supports_pg=yes, ac_cv_cc_supports_pg=no)]) - if test $ac_cv_cc_supports_pg = no; then + if test "$ac_cv_cc_supports_pg" = no; then AC_MSG_ERROR(--enable-profiling requires a compiler which supports -pg) fi CFLAGS="$OLD_CFLAGS" fi +CODESIGN_CERT= +AC_ARG_ENABLE([codesign], + AS_HELP_STRING([--enable-codesign=CERT], + [sign gdb with 'codesign -s CERT']), + [CODESIGN_CERT=$enableval]) +AC_SUBST([CODESIGN_CERT]) + ACX_PKGVERSION([GDB]) -ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/]) +ACX_BUGURL([https://www.gnu.org/software/gdb/bugs/]) AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description]) AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address]) @@ -478,8 +448,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. # @@ -488,13 +465,6 @@ AC_CHECK_TOOL(MIG, mig) # We might need to link with -lm; most simulators need it. AC_CHECK_LIB(m, main) -# We need to link with -lw to get `wctype' on Solaris before Solaris -# 2.6. Solaris 2.6 and beyond have this function in libc, and have a -# libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1 -# is known to have this problem). Therefore we avoid libw if we can. -AC_CHECK_FUNC(wctype, [], - [AC_CHECK_LIB(w, wctype)]) - # Some systems (e.g. Solaris) have `gethostbyname' in libnsl. AC_SEARCH_LIBS(gethostbyname, nsl) @@ -504,8 +474,11 @@ AC_SEARCH_LIBS(socketpair, socket) # Link in zlib if we can. This allows us to read compressed debug sections. AM_ZLIB -# On HP/UX we may need libxpdl for dlgetmodinfo (used by solib-pa64.c). -AC_SEARCH_LIBS(dlgetmodinfo, [dl xpdl]) +# On FreeBSD we may need libutil for kinfo_getvmmap (used by fbsd-nat.c). +# On GNU/kFreeBSD systems, FreeBSD libutil is renamed to libutil-freebsd. +AC_SEARCH_LIBS(kinfo_getvmmap, util util-freebsd, + [AC_DEFINE(HAVE_KINFO_GETVMMAP, 1, + [Define to 1 if your system has the kinfo_getvmmap function. ])]) AM_ICONV @@ -532,33 +505,6 @@ AS_HELP_STRING([--with-iconv-bin=PATH], [specify where to find the iconv program GDB_AC_DEFINE_RELOCATABLE(ICONV_BIN, iconv, ${iconv_bin}) ]) -# 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 -# becomes very hard to read. -# -# The readline configure script has already decided that libtermcap -# was enough for its purposes, and so decided to build readline using -# libtermcap. Since the TUI mode requires curses, building GDB with -# TUI enabled results in both libraries to be used at the same time, -# which is not allowed. This basically means that GDB with TUI is -# broken on alpha-osf. - -case $host_os in - osf* ) - if test x"$enable_tui" = xyes; then - AC_MSG_ERROR([Building GDB with TUI mode is not supported on this host]) - fi - if test x"$enable_tui" = xauto; then - enable_tui=no - fi - ;; -esac - # For the TUI, we need enhanced curses functionality. if test x"$enable_tui" != xno; then prefer_curses=yes @@ -573,7 +519,7 @@ if test x"$prefer_curses" = xyes; then # search /usr/local/include, if ncurses is installed in /usr/local. A # default installation of ncurses on alpha*-dec-osf* will lead to such # a situation. - AC_SEARCH_LIBS(waddstr, [ncurses cursesX curses]) + AC_SEARCH_LIBS(waddstr, [ncursesw ncurses cursesX curses]) if test "$ac_cv_search_waddstr" != no; then curses_found=yes @@ -583,7 +529,7 @@ fi # Check whether we should enable the TUI, but only do so if we really # can. if test x"$enable_tui" != xno; then - if test -d $srcdir/tui; then + if test -d "$srcdir/tui"; then if test "$curses_found" != no; then CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)" CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)" @@ -601,28 +547,24 @@ fi # Since GDB uses Readline, we need termcap functionality. In many # cases this will be provided by the curses library, but some systems -# have a seperate termcap library, or no curses library at all. +# have a separate termcap library, or no curses library at all. case $host_os in cygwin*) - if test -d $srcdir/libtermcap; then + if test -d "$srcdir/libtermcap"; then LIBS="../libtermcap/libtermcap.a $LIBS" ac_cv_search_tgetent="../libtermcap/libtermcap.a" fi ;; go32* | *djgpp*) ac_cv_search_tgetent="none required" ;; - *mingw32*) - ac_cv_search_tgetent="none required" - CONFIG_OBS="$CONFIG_OBS windows-termcap.o" - ;; esac # These are the libraries checked by Readline. -AC_SEARCH_LIBS(tgetent, [termcap tinfo curses ncurses]) +AC_SEARCH_LIBS(tgetent, [termcap tinfow tinfo curses ncursesw ncurses]) if test "$ac_cv_search_tgetent" = no; then - AC_MSG_ERROR([no termcap library found]) + CONFIG_OBS="$CONFIG_OBS stub-termcap.o" fi AC_ARG_WITH([system-readline], @@ -630,6 +572,20 @@ AC_ARG_WITH([system-readline], [use installed readline library])]) if test "$with_system_readline" = yes; then + AC_CACHE_CHECK([whether system readline is new enough], + [gdb_cv_readline_ok], + [AC_TRY_COMPILE( + [#include +#include ], + [#if RL_VERSION_MAJOR < 7 +# error "readline version 7 required" +#endif], + gdb_cv_readline_ok=yes, + gdb_cv_readline_ok=no)]) + if test "$gdb_cv_readline_ok" != yes; then + AC_MSG_ERROR([system readline is not new enough]) + fi + READLINE=-lreadline READLINE_DEPS= READLINE_CFLAGS= @@ -699,28 +655,52 @@ else fi fi +AC_ARG_WITH(mpfr, + AS_HELP_STRING([--with-mpfr], [include MPFR support (auto/yes/no)]), + [], [with_mpfr=auto]) +AC_MSG_CHECKING([whether to use MPFR]) +AC_MSG_RESULT([$with_mpfr]) + +if test "${with_mpfr}" = no; then + AC_MSG_WARN([MPFR support disabled; some features may be unavailable.]) + HAVE_LIBMPFR=no +else + AC_LIB_HAVE_LINKFLAGS([mpfr], [gmp], [#include ], + [mpfr_exp_t exp; mpfr_t x; + mpfr_frexp (&exp, x, x, MPFR_RNDN);]) + if test "$HAVE_LIBMPFR" != yes; then + if test "$with_mpfr" = yes; then + AC_MSG_ERROR([MPFR is missing or unusable]) + else + AC_MSG_WARN([MPFR is missing or unusable; some features may be unavailable.]) + fi + 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 +dnl $1 = the shell variable to assign the result to dnl If libpython is found we store $version here. -dnl $3 = additional flags to add to CPPFLAGS -dnl $4 = additional flags to add to LIBS +dnl $2 = additional flags to add to CPPFLAGS +dnl $3 = additional flags to add to LIBS AC_DEFUN([AC_TRY_LIBPYTHON], [ - version=$1 - define([have_libpython_var],$2) - new_CPPFLAGS=$3 - new_LIBS=$4 - AC_MSG_CHECKING([for ${version}]) + define([have_libpython_var],$1) + new_CPPFLAGS=$2 + new_LIBS=$3 + AC_MSG_CHECKING([for python]) save_CPPFLAGS=$CPPFLAGS save_LIBS=$LIBS CPPFLAGS="$CPPFLAGS $new_CPPFLAGS" - LIBS="$LIBS $new_LIBS" + LIBS="$new_LIBS $LIBS" found_usable_python=no - AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "Python.h"]], - [[Py_Initialize ();]]), - [have_libpython_var=${version} + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "Python.h"]], + [[Py_Initialize ();]])], + [have_libpython_var=yes found_usable_python=yes PYTHON_CPPFLAGS=$new_CPPFLAGS PYTHON_LIBS=$new_LIBS]) @@ -735,7 +715,7 @@ dnl no - Don't include python support. dnl yes - Include python support, error if it's missing. dnl If we find python in $PATH, use it to fetch configure options, dnl otherwise assume the compiler can find it with no help from us. -dnl Python 2.7, 2.6, 2.5, and then 2.4 are tried in turn. +dnl Python 2.7 and 2.6 are tried in turn. dnl auto - Same as "yes", but if python is missing from the system, dnl fall back to "no". dnl /path/to/python/exec-prefix - @@ -744,7 +724,7 @@ dnl If /path/to/python/exec-prefix/bin/python exists, use it to find dnl the compilation parameters. Otherwise use dnl -I/path/to/python/exec-prefix/include, dnl -L/path/to/python/exec-prefix/lib. -dnl Python 2.7, 2.6, 2.5, and then 2.4 are tried in turn. +dnl Python 2.7 and 2.6 are tried in turn. dnl NOTE: This case is historical. It is what was done for 7.0/7.1 dnl but is deprecated. dnl /path/to/python/executable - @@ -773,7 +753,7 @@ if test "${with_python}" = no; then else case "${with_python}" in [[\\/]]* | ?:[[\\/]]*) - if test -d ${with_python}; then + if test -d "${with_python}"; then # Assume the python binary is ${with_python}/bin/python. python_prog="${with_python}/bin/python" python_prefix= @@ -809,7 +789,7 @@ else python_prefix= case "${with_python}" in yes | auto) - if test ${build} = ${host}; then + if test "${build}" = "${host}"; then AC_PATH_PROG(python_prog_path, python, missing) if test "${python_prog_path}" = missing; then python_prog=missing @@ -877,58 +857,17 @@ else have_libpython=no if test "${have_python_config}" = yes; then - # Determine the Python version by extracting "-lpython" - # part of the python_libs. is usually X.Y with X and Y - # being decimal numbers, but can also be XY (seen on Windows). - # - # The extraction is performed using sed with a regular expression. - # Initially, the regexp used was using the '?' quantifier to make - # the dot in the version number optional. Unfortunately, this - # does not work with non-GNU versions of sed because, because of - # what looks like a limitation (the '?' quantifier does not work - # with back-references). We work around this limitation by using - # the '*' quantifier instead. It means that, in theory, we might - # match unexpected version strings such as "-lpython2..7", but - # this seems unlikely in practice. And even if that happens, - # an error will be triggered later on, when checking that version - # number. - python_version=`echo " ${python_libs} " \ - | sed -e 's,^.* -l\(python[[0-9]]*[[.]]*[[0-9]]*\).*$,\1,'` - case "${python_version}" in - python*) - AC_TRY_LIBPYTHON(${python_version}, have_libpython, - ${python_includes}, ${python_libs}) - ;; - *) - AC_MSG_ERROR([unable to determine python version from ${python_libs}]) - ;; - esac + AC_TRY_LIBPYTHON(have_libpython, + ${python_includes}, ${python_libs}) elif test "${have_python_config}" != failed; then if test "${have_libpython}" = no; then - AC_TRY_LIBPYTHON(python2.7, have_libpython, - ${python_includes}, "${python_libs} -lpython2.7") + AC_TRY_LIBPYTHON(have_libpython, + ${python_includes}, "-lpython2.7 ${python_libs}") fi if test "${have_libpython}" = no; then - AC_TRY_LIBPYTHON(python2.6, have_libpython, - ${python_includes}, "${python_libs} -lpython2.6") + AC_TRY_LIBPYTHON(have_libpython, + ${python_includes}, "-lpython2.6 ${python_libs}") fi - if test ${have_libpython} = no; then - AC_TRY_LIBPYTHON(python2.5, have_libpython, - ${python_includes}, "${python_libs} -lpython2.5") - fi - if test ${have_libpython} = no; then - AC_TRY_LIBPYTHON(python2.4, have_libpython, - ${python_includes}, "${python_libs} -lpython2.4") - fi - fi - if test "${have_libpython}" = python2.7 -o "${have_libpython}" = python27; then - AC_DEFINE(HAVE_LIBPYTHON2_7, 1, [Define if Python 2.7 is being used.]) - elif test "${have_libpython}" = python2.6 -o "${have_libpython}" = python26; then - AC_DEFINE(HAVE_LIBPYTHON2_6, 1, [Define if Python 2.6 is being used.]) - elif test "${have_libpython}" = python2.5 -o "${have_libpython}" = python25; then - AC_DEFINE(HAVE_LIBPYTHON2_5, 1, [Define if Python 2.5 is being used.]) - elif test "${have_libpython}" = python2.4 -o "${have_libpython}" = python24; then - AC_DEFINE(HAVE_LIBPYTHON2_4, 1, [Define if Python 2.4 is being used.]) fi if test "${have_libpython}" = no; then @@ -952,6 +891,24 @@ else fi fi +dnl Use --with-python-libdir to control where GDB looks for the Python +dnl libraries. +dnl +dnl If this is not given then the default will be based on the value +dnl passed to --with-python, which is in the python_prefix variable. +dnl If the --with-python option wasn't given then the default value in +dnl python_prefix is based on running the 'gdb/python/python-config +dnl --exec-prefix' script. +AC_ARG_WITH(python-libdir, + AS_HELP_STRING([--with-python-libdir@<:@=DIR@:>@], [search for python's libraries in DIR]), + [],[ + # If no python libdir is specified then select one based on + # python's prefix path. + if test -n "${python_prefix}"; then + with_python_libdir=${python_prefix}/lib + fi + ]) + if test "${have_libpython}" != no; then AC_DEFINE(HAVE_PYTHON, 1, [Define if Python interpreter is being linked in.]) CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)" @@ -960,13 +917,23 @@ if test "${have_libpython}" != no; then CONFIG_INSTALL="$CONFIG_INSTALL install-python" ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)" + if test -n "${with_python_libdir}"; then + AC_DEFINE_UNQUOTED(WITH_PYTHON_LIBDIR, "${with_python_libdir}", + [Directory containing Python's standard libraries from --with-python-libdir.]) + GDB_AC_DEFINE_RELOCATABLE(PYTHON_LIBDIR, [python lib], ${with_python_libdir}) + fi + # Flags needed to compile Python code (taken from python-config --cflags). # We cannot call python-config directly because it will output whatever was # used when compiling the Python interpreter itself, including flags which # would make the python-related objects be compiled differently from the # rest of GDB (e.g., -O2 and -fPIC). if test "${GCC}" = yes; then - tentative_python_cflags="-fno-strict-aliasing -DNDEBUG -fwrapv" + tentative_python_cflags="-fno-strict-aliasing -fwrapv" + # Python headers recommend -DNDEBUG, but it's unclear if that just + # refers to building Python itself. In release mode, though, it + # doesn't hurt for the Python code in gdb to follow. + $development || tentative_python_cflags="$tentative_python_cflags -DNDEBUG" fi if test "x${tentative_python_cflags}" != x; then @@ -981,15 +948,6 @@ if test "${have_libpython}" != no; then AC_MSG_RESULT(${PYTHON_CFLAGS}) fi - # On IRIX, type siginfo is not defined. Instead, sys/siginfo.h provides: - # #if _SGIAPI - # #define siginfo __siginfo - # #endif - # The problem is that including Python causes some XOPEN macros to be - # 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 @@ -999,121 +957,291 @@ if test "${have_libpython}" != no; then # 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/python.o" + CONFIG_SRCS="$CONFIG_SRCS python/python.c" fi + +# Work around Python http://bugs.python.org/issue10112. See also +# http://bugs.python.org/issue11410, otherwise -Wl,--dynamic-list has +# no effect. Note that the only test after this that uses Python is +# the -rdynamic/-Wl,--dynamic-list test, and we do want that one to be +# run without -export-dynamic too. +PYTHON_LIBS=`echo $PYTHON_LIBS | sed -e 's/-Xlinker -export-dynamic//'` + AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_CPPFLAGS) AC_SUBST(PYTHON_LIBS) +AM_CONDITIONAL(HAVE_PYTHON, test "${have_libpython}" != no) + +# -------------------- # +# 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]) + dnl scm_set_automatic_finalization_enabled added in Guile 2.2. + AC_CHECK_FUNC(scm_set_automatic_finalization_enabled, + AC_DEFINE(HAVE_GUILE_MANUAL_FINALIZATION, 1, + [Define if Guile supports manual finalization.]) + ) + 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 pkg-config --variable guild $version +dnl The script will be called with $version having each value in +dnl $try_guile_versions until --exists indicates success. + +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.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 + dnl Get the name of the 'guild' program. + case "${with_guile}" in + [[\\/]]* | ?:[[\\/]]*) + GDB_GUILE_PROGRAM_NAMES(["${with_guile}"], ["${guile_version}"]) + ;; + *) + GDB_GUILE_PROGRAM_NAMES(["${pkg_config_prog_path}"], ["${guile_version}"]) + ;; + esac + + dnl Make sure guild can handle this host. + GDB_TRY_GUILD([$srcdir/guile/lib/gdb/support.scm]) + dnl If not, disable guile support. + if test "$ac_cv_guild_ok" = no; then + have_libguile=no + AC_MSG_WARN(disabling guile support, $GUILD fails compiling for $host) + fi +fi -# Provide a --enable-libmcheck/--disable-libmcheck set of options -# allowing a user to enable this option even when building releases, -# or to disable it when building a snapshot. -AC_ARG_ENABLE(libmcheck, - AS_HELP_STRING([--enable-libmcheck], - [Try building GDB with -lmcheck if available]), +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/guile.o" + CONFIG_SRCS="$CONFIG_SRCS guile/guile.c" +fi +AC_SUBST(GUILE_CPPFLAGS) +AC_SUBST(GUILE_LIBS) +AM_CONDITIONAL(HAVE_GUILE, test "${have_libguile}" != no) + +# ---------------------------- # +# Check for source highlight. # +# ---------------------------- # + +SRCHIGH_LIBS= +SRCHIGH_CFLAGS= + +AC_ARG_ENABLE(source-highlight, + AS_HELP_STRING([--enable-source-highlight], + [enable source-highlight for source listings]), [case "${enableval}" in - yes | y) ENABLE_LIBMCHECK="yes" ;; - no | n) ENABLE_LIBMCHECK="no" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmcheck) ;; - esac]) - -# 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 -z "${ENABLE_LIBMCHECK}" \ - -a \( "${have_libpython}" = "no" \ - -o "${python_has_threads}" = "no" \) \ - && $development; then - ENABLE_LIBMCHECK=yes -fi - -if test "$ENABLE_LIBMCHECK" = "yes" ; then - if test "${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) + yes) enable_source_highlight=yes ;; + no) enable_source_highlight=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for source-highlight option) ;; +esac], +[enable_source_highlight=auto]) + +if test "${enable_source_highlight}" != "no"; then + AC_MSG_CHECKING([for the source-highlight library]) + if test "${pkg_config_prog_path}" = "missing"; then + AC_MSG_RESULT([no - pkg-config not found]) + if test "${enable_source_highlight}" = "yes"; then + AC_MSG_ERROR([pkg-config was not found in your system]) + fi + else + case "$LDFLAGS" in + *static-libstdc*) + AC_MSG_ERROR([source highlight is incompatible with -static-libstdc++; dnl +either use --disable-source-highlight or dnl +--without-static-standard-libraries]) + ;; + esac + + if ${pkg_config_prog_path} --exists source-highlight; then + SRCHIGH_CFLAGS=`${pkg_config_prog_path} --cflags source-highlight` + SRCHIGH_LIBS=`${pkg_config_prog_path} --libs source-highlight` + AC_DEFINE([HAVE_SOURCE_HIGHLIGHT], 1, + [Define to 1 if the source-highlight library is available]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + if test "${enable_source_highlight}" = "yes"; then + AC_MSG_ERROR([source-highlight was not found in your system]) + fi + fi fi - AC_CHECK_LIB(mcheck, main) fi +AC_SUBST(SRCHIGH_LIBS) +AC_SUBST(SRCHIGH_CFLAGS) # ------------------------- # # Checks for header files. # # ------------------------- # -AC_HEADER_DIRENT AC_HEADER_STDC # elf_hp.h is for HP/UX 64-bit shared library support. -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 \ +AC_CHECK_HEADERS([nlist.h machine/reg.h \ + thread_db.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 locale.h \ - dlfcn.h sys/socket.h sys/un.h linux/perf_event.h]) -AC_CHECK_HEADERS(link.h, [], [], -[#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_NLIST_H -# include -#endif -]) -AC_CHECK_HEADERS(sys/proc.h, [], [], -[#if HAVE_SYS_PARAM_H -# include -#endif -]) + sys/resource.h sys/ptrace.h ptrace.h \ + sys/reg.h sys/debugreg.h \ + termios.h elf_hp.h]) AC_CHECK_HEADERS(sys/user.h, [], [], [#if HAVE_SYS_PARAM_H # include #endif ]) -# On Solaris 2.[789], we need to define _MSE_INT_H to avoid a clash -# between and that would cause AC_CHECK_HEADERS to -# think that we don't have if we're using GCC. -case $host_os in - solaris2.[[789]]) - if test "$GCC" = yes; then - AC_DEFINE(_MSE_INT_H, 1, - [Define to 1 to avoid a clash between and on - Solaris 2.[789] when using GCC. ]) - fi ;; -esac -AC_CHECK_HEADERS(curses.h cursesX.h ncurses.h ncurses/ncurses.h ncurses/term.h) +AC_CHECK_HEADERS(curses.h cursesX.h ncurses.h ncursesw/ncurses.h ncurses/ncurses.h ncurses/term.h) AC_CHECK_HEADERS(term.h, [], [], [#if HAVE_CURSES_H # include @@ -1124,21 +1252,15 @@ AC_CHECK_HEADERS(term.h, [], [], # Checks for declarations. # # ------------------------- # -AC_CHECK_DECLS([free, malloc, realloc, strerror, strstr, getopt, - snprintf, vsnprintf]) -AM_LC_MESSAGES +libiberty_INIT -# ----------------------- # -# Checks for structures. # -# ----------------------- # - -AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize]) +AC_CHECK_DECLS([snprintf]) +AM_LC_MESSAGES # ------------------ # # Checks for types. # # ------------------ # -AC_TYPE_SIGNAL AC_CHECK_TYPES(socklen_t, [], [], [#include #include @@ -1156,86 +1278,18 @@ AC_C_BIGENDIAN # Checks for library functions. # # ------------------------------ # -AC_FUNC_ALLOCA -AC_FUNC_MMAP -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 \ +AC_CHECK_FUNCS([getuid getgid \ + pipe pread pread64 pwrite resize_term \ + getpgid setsid \ + sigaction sigsetmask socketpair \ ttrace wborder wresize setlocale iconvlist libiconvlist btowc \ - setrlimit getrlimit posix_madvise waitpid lstat]) + setrlimit getrlimit posix_madvise waitpid \ + use_default_colors]) 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 -#if HAVE_SYS_PTRACE_H -# include -#endif -#if HAVE_UNISTD_H -# include -#endif -' -# There is no point in checking if we don't have a prototype. -AC_CHECK_DECLS(ptrace, [], [ - : ${gdb_cv_func_ptrace_ret='int'} - : ${gdb_cv_func_ptrace_args='int,int,long,long'} -], $gdb_ptrace_headers) -# Check return type. Varargs (used on GNU/Linux) conflict with the -# empty argument list, so check for that explicitly. -AC_CACHE_CHECK([return type of ptrace], gdb_cv_func_ptrace_ret, - AC_TRY_COMPILE($gdb_ptrace_headers, - [extern long ptrace (enum __ptrace_request, ...);], - gdb_cv_func_ptrace_ret='long', - AC_TRY_COMPILE($gdb_ptrace_headers, - [extern int ptrace ();], - gdb_cv_func_ptrace_ret='int', - gdb_cv_func_ptrace_ret='long'))) -AC_DEFINE_UNQUOTED(PTRACE_TYPE_RET, $gdb_cv_func_ptrace_ret, - [Define as the return type of ptrace.]) -# Check argument types. -AC_CACHE_CHECK([types of arguments for ptrace], gdb_cv_func_ptrace_args, [ - AC_TRY_COMPILE($gdb_ptrace_headers, - [extern long ptrace (enum __ptrace_request, ...);], - [gdb_cv_func_ptrace_args='int,int,long,long'],[ -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 - AC_TRY_COMPILE($gdb_ptrace_headers, [ -extern $gdb_cv_func_ptrace_ret - ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4); -], [gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4"; - break 4;]) - for gdb_arg5 in 'int *' 'int' 'long'; do - AC_TRY_COMPILE($gdb_ptrace_headers, [ -extern $gdb_cv_func_ptrace_ret - ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4, $gdb_arg5); -], [ -gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4,$gdb_arg5"; - break 5;]) - done - done - done - done -done -# Provide a safe default value. -: ${gdb_cv_func_ptrace_args='int,int,long,long'} -])]) -ac_save_IFS=$IFS; IFS=',' -set dummy `echo "$gdb_cv_func_ptrace_args" | sed 's/\*/\*/g'` -IFS=$ac_save_IFS -shift -AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG3, $[3], - [Define to the type of arg 3 for ptrace.]) -if test -n "$[5]"; then - AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG5, $[5], - [Define to the type of arg 5 for ptrace.]) -fi +# Check the return and argument types of ptrace. +GDB_AC_PTRACE dnl AC_FUNC_SETPGRP does not work when cross compiling dnl Instead, assume we will have a prototype for setpgrp if cross compiling. @@ -1251,22 +1305,11 @@ else else exit (1); ], ac_cv_func_setpgrp_void=no, ac_cv_func_setpgrp_void=yes)]) -if test $ac_cv_func_setpgrp_void = yes; then +if test "$ac_cv_func_setpgrp_void" = yes; then AC_DEFINE(SETPGRP_VOID, 1) fi fi -# Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't do -# since sigsetjmp might only be defined as a macro. -AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp, -[AC_TRY_COMPILE([ -#include -], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);], -gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)]) -if test $gdb_cv_func_sigsetjmp = yes; then - AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ]) -fi - # Assume we'll default to using the included libiberty regex. gdb_use_included_regex=yes @@ -1283,7 +1326,7 @@ AC_CACHE_CHECK( #endif], gdb_cv_have_gnu_regex=yes, gdb_cv_have_gnu_regex=no)]) -if test $gdb_cv_have_gnu_regex = yes; then +if test "$gdb_cv_have_gnu_regex" = yes; then gdb_use_included_regex=no fi @@ -1305,9 +1348,10 @@ AC_CHECK_MEMBERS([struct thread.td_pcb], [], [], # See if defines `struct lwp`. AC_CACHE_CHECK([for struct lwp], gdb_cv_struct_lwp, [AC_TRY_COMPILE([#include +#define _KMEMUSER #include ], [struct lwp l;], gdb_cv_struct_lwp=yes, gdb_cv_struct_lwp=no)]) -if test $gdb_cv_struct_lwp = yes; then +if test "$gdb_cv_struct_lwp" = yes; then AC_DEFINE(HAVE_STRUCT_LWP, 1, [Define to 1 if your system has struct lwp.]) fi @@ -1317,7 +1361,7 @@ AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg, [AC_TRY_COMPILE([#include #include ], [struct reg r;], gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)]) -if test $gdb_cv_struct_reg = yes; then +if test "$gdb_cv_struct_reg" = yes; then AC_DEFINE(HAVE_STRUCT_REG, 1, [Define to 1 if your system has struct reg in .]) fi @@ -1325,13 +1369,8 @@ fi # See if supports the %fs and %gs i386 segment registers. # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'. AC_CHECK_MEMBERS([struct reg.r_fs, struct reg.r_gs], [], [], - [#include ]) - -# See if supports the %fs_base and %gs_bas amd64 segment registers. -# Older amd64 Linux's don't have the fs_base and gs_base members of -# `struct user_regs_struct'. -AC_CHECK_MEMBERS([struct user_regs_struct.fs_base, struct user_regs_struct.gs_base], - [], [], [#include ]) + [#include +#include ]) # See if provides the PTRACE_GETREGS request. AC_MSG_CHECKING(for PTRACE_GETREGS) @@ -1341,8 +1380,8 @@ AC_CACHE_VAL(gdb_cv_have_ptrace_getregs, [gdb_cv_have_ptrace_getregs=yes], [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, +if test "$gdb_cv_have_ptrace_getregs" = yes; then + AC_DEFINE(HAVE_PTRACE_GETREGS, 1, [Define if sys/ptrace.h defines the PTRACE_GETREGS request.]) fi @@ -1354,7 +1393,7 @@ AC_CACHE_VAL(gdb_cv_have_ptrace_getfpxregs, [gdb_cv_have_ptrace_getfpxregs=yes], [gdb_cv_have_ptrace_getfpxregs=no])]) AC_MSG_RESULT($gdb_cv_have_ptrace_getfpxregs) -if test $gdb_cv_have_ptrace_getfpxregs = yes; then +if test "$gdb_cv_have_ptrace_getfpxregs" = yes; then AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1, [Define if sys/ptrace.h defines the PTRACE_GETFPXREGS request.]) fi @@ -1368,7 +1407,7 @@ AC_CACHE_VAL(gdb_cv_have_pt_getdbregs, [gdb_cv_have_pt_getdbregs=yes], [gdb_cv_have_pt_getdbregs=no])]) AC_MSG_RESULT($gdb_cv_have_pt_getdbregs) -if test $gdb_cv_have_pt_getdbregs = yes; then +if test "$gdb_cv_have_pt_getdbregs" = yes; then AC_DEFINE(HAVE_PT_GETDBREGS, 1, [Define if sys/ptrace.h defines the PT_GETDBREGS request.]) fi @@ -1382,171 +1421,22 @@ AC_CACHE_VAL(gdb_cv_have_pt_getxmmregs, [gdb_cv_have_pt_getxmmregs=yes], [gdb_cv_have_pt_getxmmregs=no])]) AC_MSG_RESULT($gdb_cv_have_pt_getxmmregs) -if test $gdb_cv_have_pt_getxmmregs = yes; then +if test "$gdb_cv_have_pt_getxmmregs" = yes; then AC_DEFINE(HAVE_PT_GETXMMREGS, 1, [Define if sys/ptrace.h defines the PT_GETXMMREGS request.]) fi -# Detect which type of /proc is in use, such as for Solaris. - -if test "${target}" = "${host}"; then - case "${host}" in - *-*-sysv4.2* | *-*-sysv5* | *-*-interix* ) - 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).]) - ;; - *-*-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).]) - ;; - mips-sgi-irix5*) - # Work around needing _KMEMUSER problem on IRIX 5. - AC_DEFINE([_KMEMUSER], 1, - [Define to 1 so gets a definition of anon_hdl. Works - around a problem on IRIX 5.]) - ;; - esac -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) - BFD_HAVE_SYS_PROCFS_TYPE(pr_sigset_t) - BFD_HAVE_SYS_PROCFS_TYPE(pr_sigaction64_t) - BFD_HAVE_SYS_PROCFS_TYPE(pr_siginfo64_t) - - - dnl Check for broken prfpregset_t type - - dnl For Linux/i386, glibc 2.1.3 was released with a bogus - dnl prfpregset_t type (it's a typedef for the pointer to a struct - dnl instead of the struct itself). We detect this here, and work - dnl around it in gdb_proc_service.h. - - if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then - AC_MSG_CHECKING(whether prfpregset_t type is broken) - AC_CACHE_VAL(gdb_cv_prfpregset_t_broken, - [AC_TRY_RUN([#include - int main () - { - if (sizeof (prfpregset_t) == sizeof (void *)) - return 1; - return 0; - }], - gdb_cv_prfpregset_t_broken=no, - gdb_cv_prfpregset_t_broken=yes, - gdb_cv_prfpregset_t_broken=yes)]) - AC_MSG_RESULT($gdb_cv_prfpregset_t_broken) - if test $gdb_cv_prfpregset_t_broken = yes; then - AC_DEFINE(PRFPREGSET_T_BROKEN, 1, - [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 +# See if supports LWP names on FreeBSD +# Older FreeBSD versions don't have the pl_tdname member of +# `struct ptrace_lwpinfo'. +AC_CHECK_MEMBERS([struct ptrace_lwpinfo.pl_tdname], [], [], + [#include ]) - 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 +# See if supports syscall fields on FreeBSD. The +# pl_syscall_code member of `struct ptrace_lwpinfo' was added in +# FreeBSD 10.3. +AC_CHECK_MEMBERS([struct ptrace_lwpinfo.pl_syscall_code], [], [], + [#include ]) # Check if the compiler supports the `long long' type. @@ -1556,7 +1446,7 @@ 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 +if test "$gdb_cv_c_long_long" != yes; then # libdecnumber requires long long. AC_MSG_ERROR([Compiler must support long long for GDB.]) fi @@ -1577,7 +1467,7 @@ AC_CACHE_CHECK([for long long support in printf], gdb_cv_printf_has_long_long=yes, gdb_cv_printf_has_long_long=no, gdb_cv_printf_has_long_long=no)]) -if test $gdb_cv_printf_has_long_long = yes; then +if test "$gdb_cv_printf_has_long_long" = yes; then AC_DEFINE(PRINTF_HAS_LONG_LONG, 1, [Define to 1 if the "%ll" format works to print long longs.]) fi @@ -1596,7 +1486,7 @@ AC_CACHE_CHECK([for decfloat support in printf], gdb_cv_printf_has_decfloat=yes, gdb_cv_printf_has_decfloat=no, gdb_cv_printf_has_decfloat=no)]) -if test $gdb_cv_printf_has_decfloat = yes; then +if test "$gdb_cv_printf_has_decfloat" = yes; then AC_DEFINE(PRINTF_HAS_DECFLOAT, 1, [Define to 1 if the "%H, %D and %DD" formats work to print decfloats.]) fi @@ -1610,7 +1500,7 @@ AC_CACHE_CHECK([for long double support in compiler], gdb_cv_c_long_double, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[long double foo;]])], gdb_cv_c_long_double=yes, gdb_cv_c_long_double=no)]) -if test $gdb_cv_c_long_double = yes; then +if test "$gdb_cv_c_long_double" = yes; then AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define to 1 if the compiler supports long double.]) fi @@ -1627,14 +1517,14 @@ AC_CACHE_CHECK([for long double support in printf], gdb_cv_printf_has_long_double=yes, gdb_cv_printf_has_long_double=no, gdb_cv_printf_has_long_double=no)]) -if test $gdb_cv_printf_has_long_double = yes; then +if test "$gdb_cv_printf_has_long_double" = yes; then AC_DEFINE(PRINTF_HAS_LONG_DOUBLE, 1, [Define to 1 if the "%Lg" format works to print long doubles.]) 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 ]], @@ -1645,7 +1535,7 @@ AC_CACHE_CHECK([for long double support in scanf], gdb_cv_scanf_has_long_double=yes, gdb_cv_scanf_has_long_double=no, gdb_cv_scanf_has_long_double=no)]) -if test $gdb_cv_scanf_has_long_double = yes; then +if test "$gdb_cv_scanf_has_long_double" = yes; then AC_DEFINE(SCANF_HAS_LONG_DOUBLE, 1, [Define to 1 if the "%Lg" format works to scan long doubles.]) fi @@ -1685,18 +1575,30 @@ if test "${gdb_native}" = yes; then # 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. + + # Note the workaround for Python + # http://bugs.python.org/issue10112 earlier has removed + # -export-dynamic from PYTHON_LIBS. That's exactly what we want + # here too, as otherwise it'd make this -Wl,--dynamic-list test + # always pass. old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PYTHON_CFLAGS" + old_LIBS="$LIBS" + LIBS="$LIBS $PYTHON_LIBS" + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" AC_RUN_IFELSE( - AC_LANG_PROGRAM( - [#include "]${have_libpython}[/Python.h"], + [AC_LANG_PROGRAM( + [#include "Python.h"], [int err; Py_Initialize (); err = PyRun_SimpleString ("import itertools\n"); Py_Finalize (); - return err == 0 ? 0 : 1;]), + return err == 0 ? 0 : 1;])], [dynamic_list=true], [], [true]) + LIBS="$old_LIBS" CFLAGS="$old_CFLAGS" + CPPFLAGS="$old_CPPFLAGS" fi LDFLAGS="$old_LDFLAGS" fi @@ -1716,50 +1618,8 @@ dnl dnl Note that we only want this if we are both native (host == target), dnl and not doing a canadian cross build (build == host). -if test ${build} = ${host} -a ${host} = ${target} ; then +if test "${build}" = "${host}" -a "${host}" = "${target}" ; then case ${host_os} in - solaris*) - # See if thread_db library is around for Solaris thread debugging. - # Note that we must explicitly test for version 1 of the library - # because version 0 (present on Solaris 2.4 or earlier) doesn't have - # the same API. - AC_MSG_CHECKING(for Solaris thread debugging library) - if test -f /usr/lib/libthread_db.so.1 ; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_THREAD_DB_LIB, 1, - [Define if using Solaris thread debugging.]) - CONFIG_OBS="${CONFIG_OBS} sol-thread.o" - CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c" - # On SPARC CPUs, we also need to build sparc-sol-thread. - case ${host_cpu} in - sparc*) - CONFIG_OBS="${CONFIG_OBS} sparc-sol-thread.o" - CONFIG_SRCS="${CONFIG_SRCS} sparc-sol-thread.c" - ;; - esac - AC_CHECK_LIB(dl, dlopen) - CONFIG_LDFLAGS="${CONFIG_LDFLAGS} $RDYNAMIC" - # Sun randomly tweaked the prototypes in - # at one point. - AC_MSG_CHECKING(if is old) - AC_CACHE_VAL(gdb_cv_proc_service_is_old,[ - AC_TRY_COMPILE([ - #include - ps_err_e ps_pdwrite - (struct ps_prochandle*, psaddr_t, const void*, size_t); - ],, gdb_cv_proc_service_is_old=no, - gdb_cv_proc_service_is_old=yes) - ]) - AC_MSG_RESULT($gdb_cv_proc_service_is_old) - if test $gdb_cv_proc_service_is_old = yes; then - AC_DEFINE(PROC_SERVICE_IS_OLD, 1, - [Define if on solaris uses int instead of - size_t, and assorted other type changes.]) - fi - else - AC_MSG_RESULT(no) - fi - ;; aix*) AC_MSG_CHECKING(for AiX thread debugging library) AC_CACHE_VAL(gdb_cv_have_aix_thread_debug, @@ -1770,7 +1630,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then gdb_cv_have_aix_thread_debug=yes, gdb_cv_have_aix_thread_debug=no)]) AC_MSG_RESULT($gdb_cv_have_aix_thread_debug) - if test $gdb_cv_have_aix_thread_debug = yes; then + if test "$gdb_cv_have_aix_thread_debug" = yes; then CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c" CONFIG_OBS="${CONFIG_OBS} aix-thread.o" LIBS="$LIBS -lpthdebug" @@ -1829,45 +1689,16 @@ if test "x$gdb_cv_thread_db_h_has_td_notls" = "xyes"; then [Define if has the TD_NOTLS error code.]) fi -dnl See if we have a sys/syscall header file that has __NR_tkill. -if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then - AC_CACHE_CHECK([whether has __NR_tkill], - gdb_cv_sys_syscall_h_has_tkill, - AC_TRY_COMPILE( - [#include ], - [int i = __NR_tkill;], - gdb_cv_sys_syscall_h_has_tkill=yes, - gdb_cv_sys_syscall_h_has_tkill=no - ) - ) -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.]) -fi - -dnl Check if we can disable the virtual address space randomization. -dnl The functionality of setarch -R. -AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include ]) -define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include ], [ -# if !HAVE_DECL_ADDR_NO_RANDOMIZE -# define ADDR_NO_RANDOMIZE 0x0040000 -# endif - /* Test the flag could be set and stays set. */ - personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE); - if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE)) - return 1])]) -AC_RUN_IFELSE([PERSONALITY_TEST], - [have_personality=true], - [have_personality=false], - [AC_LINK_IFELSE([PERSONALITY_TEST], - [have_personality=true], - [have_personality=false])]) -if $have_personality -then - AC_DEFINE([HAVE_PERSONALITY], 1, - [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. @@ -1889,94 +1720,16 @@ GDB_AC_DEFINE_RELOCATABLE(TARGET_SYSTEM_ROOT, sysroot, ${ac_define_dir}) GDB_AC_WITH_DIR(SYSTEM_GDBINIT, system-gdbinit, [automatically load a system-wide gdbinit file], []) +GDB_AC_WITH_DIR(SYSTEM_GDBINIT_DIR, system-gdbinit-dir, + [automatically load system-wide gdbinit files from this directory], + []) -AC_ARG_ENABLE(werror, - AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]), - [case "${enableval}" in - yes | y) ERROR_ON_WARNING="yes" ;; - no | n) ERROR_ON_WARNING="no" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;; - esac]) - -# Enable -Werror by default when using gcc. Turn it off for releases. -if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" && $development; then - ERROR_ON_WARNING=yes -fi - -WERROR_CFLAGS="" -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 \ --Wno-unused -Wunused-value -Wunused-function \ --Wno-switch -Wno-char-subscripts -Wmissing-prototypes \ --Wdeclaration-after-statement -Wempty-body" - -# 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" ;; -esac - -AC_ARG_ENABLE(build-warnings, -AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]), -[case "${enableval}" in - yes) ;; - no) build_warnings="-w";; - ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${build_warnings} ${t}";; - *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${t} ${build_warnings}";; - *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; -esac -if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then - echo "Setting compiler warning flags = $build_warnings" 6>&1 -fi])dnl -AC_ARG_ENABLE(gdb-build-warnings, -AS_HELP_STRING([--enable-gdb-build-warnings], [enable GDB specific build-time compiler warnings if gcc is used]), -[case "${enableval}" in - yes) ;; - no) build_warnings="-w";; - ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${build_warnings} ${t}";; - *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${t} ${build_warnings}";; - *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; -esac -if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then - echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1 -fi])dnl -WARN_CFLAGS="" -if test "x${build_warnings}" != x -a "x$GCC" = xyes -then - AC_MSG_CHECKING(compiler warning flags) - # Separate out the -Werror flag as some files just cannot be - # compiled with it enabled. - for w in ${build_warnings}; do - case $w in - -Werr*) WERROR_CFLAGS=-Werror ;; - *) # Check that GCC accepts it - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $w" - AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",) - CFLAGS="$saved_CFLAGS" - esac - done - AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS}) -fi -AC_SUBST(WARN_CFLAGS) -AC_SUBST(WERROR_CFLAGS) +AM_GDB_WARNINGS +AM_GDB_UBSAN # 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])]) @@ -1988,12 +1741,13 @@ case ${host} in *go32* ) SER_HARDWIRE=ser-go32.o ;; *djgpp* ) SER_HARDWIRE=ser-go32.o ;; *mingw32*) SER_HARDWIRE="ser-base.o ser-tcp.o ser-mingw.o" ;; + *) SER_HARDWIRE="$SER_HARDWIRE ser-uds.o" ;; esac AC_SUBST(SER_HARDWIRE) # libreadline needs libuser32.a in a cygwin environment WIN32LIBS= -if test x$gdb_cv_os_cygwin = xyes; then +if test x"$gdb_cv_os_cygwin" = xyes; then WIN32LIBS="-luser32" case "${target}" in *cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp" @@ -2002,59 +1756,34 @@ if test x$gdb_cv_os_cygwin = xyes; then fi # The ser-tcp.c module requires sockets. -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 - for Cygwin.]) - WIN32LIBS="$WIN32LIBS -lws2_32" - ;; -esac -AC_SUBST(WIN32LIBS) +# Note that WIN32APILIBS is set by GDB_AC_COMMON. +WIN32LIBS="$WIN32LIBS $WIN32APILIBS" # 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)]) -if test $gdb_cv_var_elf = yes; then - CONFIG_OBS="$CONFIG_OBS elfread.o stap-probe.o" +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 dtrace-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 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 +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]) @@ -2132,7 +1861,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 @@ -2145,7 +1874,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 @@ -2183,7 +1912,7 @@ if test "${enable_gdbtk}" = "yes"; then CONFIG_INSTALL="${CONFIG_INSTALL} install-gdbtk" CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-gdbtk" - if test x$gdb_cv_os_cygwin = xyes; then + if test x"$gdb_cv_os_cygwin" = xyes; then WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32" WIN32LDAPP="-Wl,--subsystem,console" CONFIG_OBS="${CONFIG_OBS} gdbres.o" @@ -2202,8 +1931,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 @@ -2231,6 +1960,14 @@ if test "${ignore_sim}" = "false"; then SIM="${gdb_sim}" SIM_OBS="remote-sim.o" AC_DEFINE(WITH_SIM, 1, [Define if the simulator is being linked in.]) + + # Some tdep code should only be compiled in when the ppc sim is + # built. PR sim/13418. + case $target in + powerpc*-*-*) + AC_DEFINE(WITH_PPC_SIM, 1, [Define if the PPC simulator is being linked in.]) + ;; + esac fi fi AC_SUBST(SIM) @@ -2259,93 +1996,117 @@ if test "${host}" != "${target}"; then fi AC_SUBST(target_subdir) -frags= +# Import nat definitions. +nat_makefile_frag=/dev/null if test "${gdb_native}" = "yes"; then - host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh - if test ! -f ${host_makefile_frag}; then - AC_MSG_ERROR("*** Gdb does not support native target ${host}") - fi - frags="$frags $host_makefile_frag" -else - host_makefile_frag=/dev/null + . ${srcdir}/configure.nat + nativefile=$NAT_FILE fi -AC_SUBST_FILE(host_makefile_frag) -AC_SUBST(frags) - -changequote(,)dnl -if test "${gdb_native}" = "yes"; then -# We pick this up from the host configuration file (.mh) because we -# do not have a native configuration Makefile fragment. -nativefile=`sed -n ' -s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p -' ${host_makefile_frag}` -fi -changequote([,]) +AC_SUBST(NAT_FILE) +AC_SUBST(NATDEPFILES) +AC_SUBST(NAT_CDEPS) +AC_SUBST(LOADLIBES) +AC_SUBST(MH_CFLAGS) +AC_SUBST(XM_CLIBS) +AC_SUBST(NAT_GENERATED_FILES) +AC_SUBST(HAVE_NATIVE_GCORE_HOST) +AC_SUBST_FILE(nat_makefile_frag) if test x"${gdb_osabi}" != x ; then AC_DEFINE_UNQUOTED(GDB_OSABI_DEFAULT, $gdb_osabi, [Define to the default OS ABI for this configuration.]) fi -# Enable multi-ice-gdb-server. -AC_ARG_ENABLE(multi-ice, -AS_HELP_STRING([--enable-multi-ice], [build the multi-ice-gdb-server]), - [case $enableval in - yes | no) - ;; - *) AC_MSG_ERROR([bad value $enableval for --enable-multi-ice]) ;; - esac]) -if test "x$enable_multi_ice" = xyes; then - AC_CONFIG_SUBDIRS(multi-ice) -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]) -AC_ARG_ENABLE(gdbserver, -AS_HELP_STRING([--enable-gdbserver], - [automatically build gdbserver (yes/no/auto, default is auto)]), -[case "${enableval}" in - yes| no|auto) ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-gdbserver option) ;; -esac],[enable_gdbserver=auto]) - -# We only build gdbserver automatically in a native configuration, and -# only if the user did not explicitly disable its build. -if test "$gdb_native" = "yes" -a "$enable_gdbserver" != "no"; then - AC_MSG_CHECKING(whether gdbserver is supported on this host) - if test "x$build_gdbserver" = xyes; then - AC_MSG_RESULT(yes) - AC_CONFIG_SUBDIRS(gdbserver) - gdbserver_build_enabled=yes - else - AC_MSG_RESULT(no) +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; + + pos->type = BT_SEEK_BEGIN; + bt_iter_set_pos (bt_ctf_get_iter (NULL), pos); + 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 the user explicitly request the gdbserver to be built, verify that -# we were in fact able to enable it. -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 xxhash +AC_ARG_WITH(xxhash, + AC_HELP_STRING([--with-xxhash], [use libxxhash for hashing (faster) (auto/yes/no)]), + [], [with_xxhash=auto]) -# If nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link -# to an empty version. +if test "x$with_xxhash" != "xno"; then + AC_LIB_HAVE_LINKFLAGS([xxhash], [], + [#include ], + [XXH32("foo", 3, 0); + ]) + if test "$HAVE_LIBXXHASH" != yes; then + if test "$with_xxhash" = yes; then + AC_MSG_ERROR([xxhash is missing or unusable]) + fi + fi + if test "x$with_xxhash" = "xauto"; then + with_xxhash="$HAVE_LIBXXHASH" + fi +fi -files= -links= +AC_MSG_CHECKING([whether to use xxhash]) +AC_MSG_RESULT([$with_xxhash]) +NM_H= rm -f nm.h if test "${nativefile}" != ""; then case "${nativefile}" in nm-*.h ) GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}" ;; * ) GDB_NM_FILE="${nativefile}" esac - files="${files} ${GDB_NM_FILE}" - links="${links} nm.h" + AC_CONFIG_LINKS([nm.h:$GDB_NM_FILE], [echo > stamp-nmh], + [GDB_NM_FILE=$GDB_NM_FILE]) AC_DEFINE_UNQUOTED(GDB_NM_FILE, "${GDB_NM_FILE}", [nativefile]) + NM_H=nm.h fi AC_SUBST(GDB_NM_FILE) +AC_SUBST(NM_H) -AC_LINK_FILES($files, $links) +dnl Add dependency for xsltproc if building with maintainer-mode enabled. +AC_PATH_PROGS(XSLTPROC, xsltproc, missing) +if test "x$USE_MAINTAINER_MODE" = xyes; then + if test "${XSLTPROC}" = missing; then + AC_ERROR(unable to find xsltproc. maintainer-mode requires xsltproc.) + fi +fi +AC_SUBST(XSLTPROC) dnl Check for exe extension set on certain hosts (e.g. Win32) AC_EXEEXT @@ -2355,12 +2116,14 @@ 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.]) -AC_OUTPUT(Makefile gdb-gdb.gdb doc/Makefile data-directory/Makefile, -[ -case x$CONFIG_HEADERS in -xconfig.h:config.in) -echo > stamp-h ;; -esac +GDB_AC_SELFTEST([ + CONFIG_OBS="$CONFIG_OBS \$(SELFTESTS_OBS)" + CONFIG_SRCS="$CONFIG_SRCS \$(SELFTESTS_SRCS)" ]) -exit 0 +GDB_AC_TRANSFORM([gdb], [GDB_TRANSFORM_NAME]) +GDB_AC_TRANSFORM([gcore], [GCORE_TRANSFORM_NAME]) +AC_CONFIG_FILES([gcore], [chmod +x gcore]) +AC_CONFIG_FILES([Makefile gdb-gdb.gdb gdb-gdb.py doc/Makefile data-directory/Makefile]) + +AC_OUTPUT