dnl Autoconf configure snippets for common.
-dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2021 Free Software Foundation, Inc.
dnl
dnl This file is part of GDB.
dnl
dnl Invoke configury needed by the files in 'common'.
AC_DEFUN([GDB_AC_COMMON], [
+ # Set the 'development' global.
+ . $srcdir/../bfd/development.sh
+
AC_HEADER_STDC
AC_FUNC_ALLOCA
sys/un.h sys/wait.h dnl
thread_db.h wait.h dnl
termios.h dnl
- dlfcn.h)
+ dlfcn.h dnl
+ linux/elf.h proc_service.h dnl
+ poll.h sys/poll.h sys/select.h)
- AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction \
- sigprocmask])
+ AC_FUNC_MMAP
+ AC_FUNC_FORK
+ AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 poll socketpair sigaction \
+ ptrace64 sbrk setns sigaltstack sigprocmask \
+ setpgid setpgrp getrusage getauxval sigtimedwait])
AC_CHECK_DECLS([strstr])
+ # ----------------------- #
+ # Checks for structures. #
+ # ----------------------- #
+
+ AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
+
+ # On FreeBSD we need libutil for the kinfo_get* functions. On
+ # GNU/kFreeBSD systems, FreeBSD libutil is renamed to libutil-freebsd.
+ # Figure out which one to use.
+ AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd)
+
+ # Define HAVE_KINFO_GETFILE if kinfo_getfile is available.
+ AC_CHECK_FUNCS(kinfo_getfile)
+
# Check for std::thread. This does not work on some platforms, like
# mingw and DJGPP.
AC_LANG_PUSH([C++])
dnl Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't
dnl do since sigsetjmp might only be defined as a macro.
- AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
- [AC_TRY_COMPILE([
- #include <setjmp.h>
- ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
- gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
+ AC_CACHE_CHECK(
+ [for sigsetjmp],
+ [gdb_cv_func_sigsetjmp],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <setjmp.h>],
+ [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
+
+ AC_ARG_WITH(intel_pt,
+ AS_HELP_STRING([--with-intel-pt], [include Intel Processor Trace support (auto/yes/no)]),
+ [], [with_intel_pt=auto])
+ AC_MSG_CHECKING([whether to use intel pt])
+ AC_MSG_RESULT([$with_intel_pt])
+
+ if test "${with_intel_pt}" = no; then
+ AC_MSG_WARN([Intel Processor Trace support disabled; some features may be unavailable.])
+ HAVE_LIBIPT=no
+ else
+ AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
+ #include <linux/perf_event.h>
+ #ifndef PERF_ATTR_SIZE_VER5
+ # error
+ #endif
+ ]])], [perf_event=yes], [perf_event=no])
+ if test "$perf_event" != yes; then
+ if test "$with_intel_pt" = yes; then
+ AC_MSG_ERROR([linux/perf_event.h missing or too old])
+ else
+ AC_MSG_WARN([linux/perf_event.h missing or too old; some features may be unavailable.])
+ fi
+ fi
+
+ AC_LIB_HAVE_LINKFLAGS([ipt], [], [#include "intel-pt.h"], [pt_insn_alloc_decoder (0);])
+ if test "$HAVE_LIBIPT" != yes; then
+ if test "$with_intel_pt" = yes; then
+ AC_MSG_ERROR([libipt is missing or unusable])
+ else
+ AC_MSG_WARN([libipt is missing or unusable; some features may be unavailable.])
+ fi
+ else
+ save_LIBS=$LIBS
+ LIBS="$LIBS $LIBIPT"
+ AC_CHECK_FUNCS(pt_insn_event)
+ AC_CHECK_MEMBERS([struct pt_insn.enabled, struct pt_insn.resynced], [], [],
+ [#include <intel-pt.h>])
+ LIBS=$save_LIBS
+ fi
+ fi
+
+ BFD_SYS_PROCFS_H
+ if test "$ac_cv_header_sys_procfs_h" = yes; then
+ 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(lwpid_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
+ fi
])