Updated Serbian and Russian translations for various sub-directories
[binutils-gdb.git] / gdbsupport / common.m4
index 9e15940eead9de85087c6b8a8bf74852d373ff59..901c454ea8cbbb9c3ecf7aa8ff2978d70738cbc3 100644 (file)
@@ -1,5 +1,5 @@
 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 
@@ -18,6 +18,9 @@ dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 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
 
@@ -42,13 +45,32 @@ AC_DEFUN([GDB_AC_COMMON], [
                   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++])
@@ -82,12 +104,74 @@ AC_DEFUN([GDB_AC_COMMON], [
 
   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
 ])