2013-04-25 00:45:45 +08:00
|
|
|
dnl Autoconf configure snippets for common.
|
2020-01-01 14:20:01 +08:00
|
|
|
dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
|
2013-04-25 00:45:45 +08:00
|
|
|
dnl
|
|
|
|
dnl This file is part of GDB.
|
|
|
|
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
|
|
|
|
dnl (at your option) any later version.
|
|
|
|
dnl
|
|
|
|
dnl This program is distributed in the hope that it will be useful,
|
|
|
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
dnl GNU General Public License for more details.
|
|
|
|
dnl
|
|
|
|
dnl You should have received a copy of the GNU General Public License
|
|
|
|
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], [
|
2020-03-13 02:18:00 +08:00
|
|
|
# Set the 'development' global.
|
|
|
|
. $srcdir/../bfd/development.sh
|
|
|
|
|
2013-04-25 00:45:45 +08:00
|
|
|
AC_HEADER_STDC
|
|
|
|
AC_FUNC_ALLOCA
|
|
|
|
|
2019-10-23 06:22:58 +08:00
|
|
|
WIN32APILIBS=
|
|
|
|
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.])
|
|
|
|
WIN32APILIBS="-lws2_32"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2013-04-25 00:45:45 +08:00
|
|
|
dnl Note that this requires codeset.m4, which is included
|
|
|
|
dnl by the users of common.m4.
|
|
|
|
AM_LANGINFO_CODESET
|
|
|
|
|
|
|
|
AC_CHECK_HEADERS(linux/perf_event.h locale.h memory.h signal.h dnl
|
Remove ioctl-based procfs support on Solaris
This is the previously mentioned patch to get rid of
unstructured/ioctl-based procfs support in procfs.c. Given that support
for structured procfs was introduced in Solaris 2.6 back in 1997 and
we're just removing support for Solaris < 10, there's no point in
carrying that baggage (and tons of support for IRIX and OSF/1 as well)
around any longer.
Most of the patch should be straightforward (removing support for
!NEW_PROC_API, non-Solaris OSes and pre-Solaris 10 quirks).
Only a few points need explanations:
* <sys/syscall.h> was already included unconditionally in most places,
so there's no need to have guards in a few remaining ones.
* configure.host already obsoletes i?86-*-sysv4.2, i?86-*-sysv5, so
NEW_PROC_API detection for those in configure.ac can go.
* I'm still including <sys/procfs.h> with #define _STRUCTURED_PROC 1.
Theoretically, it would be better to include <procfs.h> on Solaris
(which includes that define), but that breaks the build over
<procfs.h> vs. gdb's "procfs.h", and doesn't exist on Linux.
* I've regenerated syscall_table[] in proc-events.c with a small script
from Solaris 10, 11.3, 11.4 <sys/syscall.h>, so there should be no
traces of older Solaris versions and other OSes left.
* prsysent_t and DYNAMIC_SYSCALLS was only used for AIX 5, but AIX
doesn't use procfs.c any longer, so all related code can go.
The patch was generated with diff -w so one can easier see changes
without being distracted by simple reindentations.
So far, it has only been compiled and smoke-tested on
amd64-pc-solaris2.1[01], sparcv9-sun-solaris2.1[01], and
x86_64-pc-linux-gnu. Certainly needs more testing (Solaris 11.3
vs. 11.4, 32-bit gdb, testsuite once I've figured out what's wrong on
Solaris 10 etc.), but it's enough to get a first impression how much
cleanup is possible here.
* configure.ac Don't check for sys/fault.h, sys/syscall.h,
sys/proc.h.
(NEW_PROC_API): Remove.
(prsysent_t, pr_sigset_t, pr_sigaction64_t, pr_siginfo64_t):
Likewise.
* common/common.m4 (GDB_AC_COMMON): Don't check for sys/syscall.h.
* configure: Regenerate.
* config.in: Regenerate.
* gdbserver/configure: Regenerate.
* gdbserver/config.in: Regenerate.
* i386-sol2-nat.c (_initialize_amd64_sol2_nat): Remove
NEW_PROC_API test.
* sparc-sol2-nat.c (_initialize_sparc_sol2_nat): Likewise.
* linux-btrace.c: Remove HAVE_SYS_SYSCALL_H test.
* proc-api.c: Remove !NEW_PROC_API support.
Remove HAVE_SYS_PROC_H and HAVE_SYS_USER_H tests.
Remove tests for macros always defined on Solaris.
* proc-events.c: Remove !NEW_PROC_API support.
Remove Remove HAVE_SYS_SYSCALL_H, HAVE_SYS_PROC_H and
HAVE_SYS_USER_H tests.
(init_syscall_table): Remove non-Solaris syscalls.
Remove tests for syscalls present on all Solaris versions.
Add missing Solaris 10+ syscalls.
(signal_table): Remove non-Solaris signals.
Remove tests for signals present on all Solaris versions.
(fault_table): Remove non-Solaris faults.
Remove tests for faults present on all Solaris versions.
* proc-flags.c: Remove !NEW_PROC_API support.
(pr_flag_table): Remove non-Solaris and pre-Solaris 7 comments.
Remove non-Solaris flags.
* proc-why.c: Remove !NEW_PROC_API support.
(pr_why_table): Remove meaningless comments.
Remove tests for reasons present on all Solaris versions.
Remove OSF/1 cases.
(proc_prettyfprint_why): Likewise.
* procfs.c: Remove !NEW_PROC_API and DYNAMIC_SYSCALLS support.
Remove HAVE_SYS_FAULT_H and HAVE_SYS_SYSCALL_H tests.
Remove WA_READ test, IRIX watchpoint support.
(gdb_sigset_t, gdb_sigaction_t, gdb_siginfo_t): Replace by base
types. Change users.
(gdb_praddset, gdb_prdelset, gdb_premptysysset, gdb_praddsysset)
(gdb_prdelset, gdb_pr_issyssetmember): Replace by base macros.
Change callers.
Remove CTL_PROC_NAME_FMT tests.
(gdb_prstatus_t, gdb_lwpstatus_t): Replace by base types. Change
users.
(sysset_t_size): Remove. Use sizeof (sysset_t) in callers.
Remove PROCFS_DONT_PIOCSSIG_CURSIG support.
(proc_modify_flag): Replace GDBRESET by PCUNSET.
Remove PR_ASYNC, PR_KLC tests.
(proc_unset_inherit_on_fork): Remove PR_ASYNC test.
(proc_parent_pid): Remove PCWATCH etc. tests.
(proc_set_watchpoint): Remove !PCWATCH && !PIOCSWATCH support.
Remove PCAGENT test.
(proc_get_nthreads) [PIOCNTHR && PIOCTLIST]: Remove.
Remove SYS_lwpcreate || SYS_lwp_create test.
(proc_get_current_thread): Likewise.
[PIOCNTHR && PIOCTLIST]: Remove.
[PIOCLSTATUS]: Remove.
(procfs_debug_inferior): Remove non-Solaris cases, conditionals.
[PRFS_STOPEXEC]: Remove.
(syscall_is_lwp_exit): Remove non-Solaris cases, conditionals.
(syscall_is_exit): Likewise.
(syscall_is_exec): Likewise.
(syscall_is_lwp_create): Likewise.
Remove SYS_syssgi support.
(procfs_wait): Remove PR_ASYNC, !PIOCSSPCACT tests.
[SYS_syssgi]: Remove.
Remove non-Solaris cases, conditionals.
(unconditionally_kill_inferior) [PROCFS_NEED_PIOCSSIG_FOR_KILL]:
Remove.
(procfs_init_inferior) [SYS_syssgi]: Remove.
(procfs_set_exec_trap) [PRFS_STOPEXEC]: Remove.
(procfs_inferior_created) [SYS_syssgi]: Remove.
(procfs_set_watchpoint): Remove !AIX5 test.
(procfs_stopped_by_watchpoint): Remove FLTWATCH test, FLTKWATCH
case.
(mappingflags) [MA_PHYS]: Remove.
(info_mappings_callback): Remove PCAGENT test.
Remove PIOCOPENLWP || PCAGENT test.
2017-11-30 23:05:30 +08:00
|
|
|
sys/resource.h sys/socket.h dnl
|
2013-04-25 00:45:45 +08:00
|
|
|
sys/un.h sys/wait.h dnl
|
2017-04-12 09:05:12 +08:00
|
|
|
thread_db.h wait.h dnl
|
2019-08-22 04:22:45 +08:00
|
|
|
termios.h dnl
|
Move many configure checks to common.m4
This moves many needed configure checks from gdb and gdbserver into
common.m4. This helps gdbsupport, nat, and target be self-contained.
The result is a bit spaghetti-ish, because gdbsupport uses another m4
file from gdb/. The resulting code is somewhat non-obvious. However,
these problems already exist, so it's not really that much worse than
what is already done.
gdb/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Move many checks to ../gdbsupport/common.m4.
gdb/gdbserver/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Remove any checks that were added to common.m4.
* acinclude.m4: Include lib-ld.m4, lib-prefix.m4, and
lib-link.m4.
gdbsupport/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure, Makefile.in, aclocal.m4, common.m4, config.in:
Rebuild.
* common.m4 (GDB_AC_COMMON): Move many checks from
gdb/configure.ac.
* acinclude.m4: Include bfd.m4, ptrace.m4.
Change-Id: I931eaa94065df268b30a2f1354390710df89c7f8
2019-12-20 07:40:15 +08:00
|
|
|
dlfcn.h dnl
|
|
|
|
linux/elf.h sys/procfs.h proc_service.h)
|
2013-04-25 00:45:45 +08:00
|
|
|
|
Move many configure checks to common.m4
This moves many needed configure checks from gdb and gdbserver into
common.m4. This helps gdbsupport, nat, and target be self-contained.
The result is a bit spaghetti-ish, because gdbsupport uses another m4
file from gdb/. The resulting code is somewhat non-obvious. However,
these problems already exist, so it's not really that much worse than
what is already done.
gdb/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Move many checks to ../gdbsupport/common.m4.
gdb/gdbserver/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Remove any checks that were added to common.m4.
* acinclude.m4: Include lib-ld.m4, lib-prefix.m4, and
lib-link.m4.
gdbsupport/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure, Makefile.in, aclocal.m4, common.m4, config.in:
Rebuild.
* common.m4 (GDB_AC_COMMON): Move many checks from
gdb/configure.ac.
* acinclude.m4: Include bfd.m4, ptrace.m4.
Change-Id: I931eaa94065df268b30a2f1354390710df89c7f8
2019-12-20 07:40:15 +08:00
|
|
|
AC_FUNC_MMAP
|
|
|
|
AC_FUNC_VFORK
|
2019-10-18 10:51:44 +08:00
|
|
|
AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction \
|
Move many configure checks to common.m4
This moves many needed configure checks from gdb and gdbserver into
common.m4. This helps gdbsupport, nat, and target be self-contained.
The result is a bit spaghetti-ish, because gdbsupport uses another m4
file from gdb/. The resulting code is somewhat non-obvious. However,
these problems already exist, so it's not really that much worse than
what is already done.
gdb/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Move many checks to ../gdbsupport/common.m4.
gdb/gdbserver/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Remove any checks that were added to common.m4.
* acinclude.m4: Include lib-ld.m4, lib-prefix.m4, and
lib-link.m4.
gdbsupport/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure, Makefile.in, aclocal.m4, common.m4, config.in:
Rebuild.
* common.m4 (GDB_AC_COMMON): Move many checks from
gdb/configure.ac.
* acinclude.m4: Include bfd.m4, ptrace.m4.
Change-Id: I931eaa94065df268b30a2f1354390710df89c7f8
2019-12-20 07:40:15 +08:00
|
|
|
ptrace64 sbrk setns sigaltstack sigprocmask \
|
|
|
|
setpgid setpgrp getrusage getauxval])
|
|
|
|
|
|
|
|
dnl Check if we can disable the virtual address space randomization.
|
|
|
|
dnl The functionality of setarch -R.
|
|
|
|
AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
|
|
|
|
define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
|
|
|
|
# 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
|
2013-04-25 00:45:45 +08:00
|
|
|
|
2019-11-07 03:57:52 +08:00
|
|
|
AC_CHECK_DECLS([strstr])
|
2014-08-07 22:53:21 +08:00
|
|
|
|
Move many configure checks to common.m4
This moves many needed configure checks from gdb and gdbserver into
common.m4. This helps gdbsupport, nat, and target be self-contained.
The result is a bit spaghetti-ish, because gdbsupport uses another m4
file from gdb/. The resulting code is somewhat non-obvious. However,
these problems already exist, so it's not really that much worse than
what is already done.
gdb/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Move many checks to ../gdbsupport/common.m4.
gdb/gdbserver/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Remove any checks that were added to common.m4.
* acinclude.m4: Include lib-ld.m4, lib-prefix.m4, and
lib-link.m4.
gdbsupport/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure, Makefile.in, aclocal.m4, common.m4, config.in:
Rebuild.
* common.m4 (GDB_AC_COMMON): Move many checks from
gdb/configure.ac.
* acinclude.m4: Include bfd.m4, ptrace.m4.
Change-Id: I931eaa94065df268b30a2f1354390710df89c7f8
2019-12-20 07:40:15 +08:00
|
|
|
# ----------------------- #
|
|
|
|
# Checks for structures. #
|
|
|
|
# ----------------------- #
|
|
|
|
|
|
|
|
AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
|
|
|
|
|
|
|
|
AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd,
|
|
|
|
[AC_DEFINE(HAVE_KINFO_GETFILE, 1,
|
|
|
|
[Define to 1 if your system has the kinfo_getfile function. ])])
|
|
|
|
|
2019-03-16 07:38:06 +08:00
|
|
|
# Check for std::thread. This does not work on some platforms, like
|
|
|
|
# mingw and DJGPP.
|
|
|
|
AC_LANG_PUSH([C++])
|
|
|
|
AX_PTHREAD([threads=yes], [threads=no])
|
|
|
|
if test "$threads" = "yes"; then
|
|
|
|
save_LIBS="$LIBS"
|
|
|
|
LIBS="$PTHREAD_LIBS $LIBS"
|
|
|
|
save_CXXFLAGS="$CXXFLAGS"
|
|
|
|
CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
|
|
|
|
AC_CACHE_CHECK([for std::thread],
|
|
|
|
gdb_cv_cxx_std_thread,
|
|
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
|
|
[[#include <thread>
|
|
|
|
void callback() { }]],
|
|
|
|
[[std::thread t(callback);]])],
|
|
|
|
gdb_cv_cxx_std_thread=yes,
|
|
|
|
gdb_cv_cxx_std_thread=no)])
|
Add RAII class for blocking gdb signals
This adds configury support and an RAII class that can be used to
temporarily block signals that are used by gdb. (This class is not
used in this patch, but it split out for easier review.)
The idea of this patch is that these signals should only be delivered
to the main thread. So, when creating a background thread, they are
temporarily blocked; the blocked state is inherited by the new thread.
The sigprocmask man page says:
The use of sigprocmask() is unspecified in a multithreaded
process; see pthread_sigmask(3).
This patch changes gdb to use pthread_sigmask when appropriate, by
introducing a convenience define.
I've updated gdbserver as well, because I had to touch gdbsupport, and
because the threading patches will make it link against the thread
library.
I chose not to touch the NTO code, because I don't know anything about
that platform and because I cannot test it.
Finally, this modifies an existing spot in the Guile layer to use the
new facility.
gdb/ChangeLog
2019-11-26 Tom Tromey <tom@tromey.com>
* gdbsupport/signals-state-save-restore.c (original_signal_mask):
Remove comment.
(save_original_signals_state, restore_original_signals_state): Use
gdb_sigmask.
* linux-nat.c (block_child_signals, restore_child_signals_mask)
(_initialize_linux_nat): Use gdb_sigmask.
* guile/guile.c (_initialize_guile): Use block_signals.
* Makefile.in (HFILES_NO_SRCDIR): Add gdb-sigmask.h.
* gdbsupport/gdb-sigmask.h: New file.
* event-top.c (async_sigtstp_handler): Use gdb_sigmask.
* cp-support.c (gdb_demangle): Use gdb_sigmask.
* gdbsupport/common.m4 (GDB_AC_COMMON): Check for
pthread_sigmask.
* configure, config.in: Rebuild.
* gdbsupport/block-signals.h: New file.
gdb/gdbserver/ChangeLog
2019-11-26 Tom Tromey <tom@tromey.com>
* remote-utils.c (block_unblock_async_io): Use gdb_sigmask.
* linux-low.c (linux_wait_for_event_filtered, linux_async): Use
gdb_sigmask.
* configure, config.in: Rebuild.
Change-Id: If3f37dc57dd859c226e9e4d79458a0514746e8c6
2019-09-29 22:50:15 +08:00
|
|
|
|
|
|
|
# This check must be here, while LIBS includes any necessary
|
|
|
|
# threading library.
|
2019-10-13 03:06:18 +08:00
|
|
|
AC_CHECK_FUNCS([pthread_sigmask pthread_setname_np])
|
Add RAII class for blocking gdb signals
This adds configury support and an RAII class that can be used to
temporarily block signals that are used by gdb. (This class is not
used in this patch, but it split out for easier review.)
The idea of this patch is that these signals should only be delivered
to the main thread. So, when creating a background thread, they are
temporarily blocked; the blocked state is inherited by the new thread.
The sigprocmask man page says:
The use of sigprocmask() is unspecified in a multithreaded
process; see pthread_sigmask(3).
This patch changes gdb to use pthread_sigmask when appropriate, by
introducing a convenience define.
I've updated gdbserver as well, because I had to touch gdbsupport, and
because the threading patches will make it link against the thread
library.
I chose not to touch the NTO code, because I don't know anything about
that platform and because I cannot test it.
Finally, this modifies an existing spot in the Guile layer to use the
new facility.
gdb/ChangeLog
2019-11-26 Tom Tromey <tom@tromey.com>
* gdbsupport/signals-state-save-restore.c (original_signal_mask):
Remove comment.
(save_original_signals_state, restore_original_signals_state): Use
gdb_sigmask.
* linux-nat.c (block_child_signals, restore_child_signals_mask)
(_initialize_linux_nat): Use gdb_sigmask.
* guile/guile.c (_initialize_guile): Use block_signals.
* Makefile.in (HFILES_NO_SRCDIR): Add gdb-sigmask.h.
* gdbsupport/gdb-sigmask.h: New file.
* event-top.c (async_sigtstp_handler): Use gdb_sigmask.
* cp-support.c (gdb_demangle): Use gdb_sigmask.
* gdbsupport/common.m4 (GDB_AC_COMMON): Check for
pthread_sigmask.
* configure, config.in: Rebuild.
* gdbsupport/block-signals.h: New file.
gdb/gdbserver/ChangeLog
2019-11-26 Tom Tromey <tom@tromey.com>
* remote-utils.c (block_unblock_async_io): Use gdb_sigmask.
* linux-low.c (linux_wait_for_event_filtered, linux_async): Use
gdb_sigmask.
* configure, config.in: Rebuild.
Change-Id: If3f37dc57dd859c226e9e4d79458a0514746e8c6
2019-09-29 22:50:15 +08:00
|
|
|
|
2019-03-16 07:38:06 +08:00
|
|
|
LIBS="$save_LIBS"
|
|
|
|
CXXFLAGS="$save_CXXFLAGS"
|
|
|
|
fi
|
2019-12-19 05:03:07 +08:00
|
|
|
if test "$gdb_cv_cxx_std_thread" = "yes"; then
|
2019-03-16 07:38:06 +08:00
|
|
|
AC_DEFINE(CXX_STD_THREAD, 1,
|
|
|
|
[Define to 1 if std::thread works.])
|
|
|
|
fi
|
|
|
|
AC_LANG_POP
|
|
|
|
|
2014-08-07 22:53:21 +08:00
|
|
|
dnl Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't
|
|
|
|
dnl do since sigsetjmp might only be defined as a macro.
|
2020-01-15 07:16:39 +08:00
|
|
|
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)])
|
|
|
|
if test "$gdb_cv_func_sigsetjmp" = "yes"; then
|
|
|
|
AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
|
|
|
|
fi
|
Move many configure checks to common.m4
This moves many needed configure checks from gdb and gdbserver into
common.m4. This helps gdbsupport, nat, and target be self-contained.
The result is a bit spaghetti-ish, because gdbsupport uses another m4
file from gdb/. The resulting code is somewhat non-obvious. However,
these problems already exist, so it's not really that much worse than
what is already done.
gdb/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Move many checks to ../gdbsupport/common.m4.
gdb/gdbserver/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure: Rebuild.
* configure.ac: Remove any checks that were added to common.m4.
* acinclude.m4: Include lib-ld.m4, lib-prefix.m4, and
lib-link.m4.
gdbsupport/ChangeLog
2020-01-14 Tom Tromey <tom@tromey.com>
* configure, Makefile.in, aclocal.m4, common.m4, config.in:
Rebuild.
* common.m4 (GDB_AC_COMMON): Move many checks from
gdb/configure.ac.
* acinclude.m4: Include bfd.m4, ptrace.m4.
Change-Id: I931eaa94065df268b30a2f1354390710df89c7f8
2019-12-20 07:40:15 +08:00
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
2013-04-25 00:45:45 +08:00
|
|
|
])
|