1 dnl Autoconf configure script for GDB server.
2 dnl Copyright (C) 2000-2015 Free Software Foundation, Inc.
4 dnl This file is part of GDB.
6 dnl This program is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 3 of the License, or
9 dnl (at your option) any later version.
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 dnl GNU General Public License for more details.
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
19 dnl Process this file with autoconf to produce a configure script.
24 AC_CONFIG_HEADER(config.h:config.in)
43 # See if we are building with C++, and substitute COMPILER.
46 # Set the 'development' global.
47 . $srcdir/../../bfd/development.sh
49 # Enable -lmcheck by default (it provides cheap-enough memory
50 # mangling), but turn it off for releases.
56 GDB_AC_LIBMCHECK(${libmcheck_default})
58 ACX_NONCANONICAL_TARGET
61 # Dependency checking.
63 ZW_PROG_COMPILER_DEPENDENCIES([CC])
65 # Check for the 'make' the user wants to use.
66 AC_CHECK_PROGS(MAKE, make)
68 case "`$MAKE --version 2>&1 | sed 1q`" in
73 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
76 gnulib_extra_configure_args=
77 # If large-file support is disabled, make sure gnulib does the same.
78 if test "$enable_largefile" = no; then
79 gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile"
82 # Configure gnulib. We can't use AC_CONFIG_SUBDIRS as that'd expect
83 # to find the the source subdir to be configured directly under
84 # gdbserver/. We need to build gnulib under some other directory not
85 # "gnulib", to avoid the problem of both GDB and GDBserver wanting to
86 # build it in the same directory, when building in the source dir.
87 ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"],
88 ["$gnulib_extra_configure_args"])
90 ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"])
92 AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
93 proc_service.h sys/procfs.h linux/elf.h dnl
94 fcntl.h signal.h sys/file.h dnl
95 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
96 netinet/tcp.h arpa/inet.h)
97 AC_CHECK_FUNCS(getauxval pread pwrite pread64 setns)
101 # Check the return and argument types of ptrace.
108 AC_ARG_WITH(ust, [ --with-ust=PATH Specify prefix directory for the installed UST package
109 Equivalent to --with-ust-include=PATH/include
110 plus --with-ust-lib=PATH/lib])
111 AC_ARG_WITH(ust_include, [ --with-ust-include=PATH Specify directory for installed UST include files])
112 AC_ARG_WITH(ust_lib, [ --with-ust-lib=PATH Specify the directory for the installed UST library])
124 ustlibs="-L$with_ust/lib -lust"
125 ustinc="-I$with_ust/include "
128 if test "x$with_ust_include" != x; then
129 ustinc="-I$with_ust_include "
131 if test "x$with_ust_lib" != x; then
132 ustlibs="-L$with_ust_lib -lust"
135 if test "x$with_ust" != "xno"; then
136 saved_CFLAGS="$CFLAGS"
137 CFLAGS="$CFLAGS $ustinc"
138 AC_MSG_CHECKING([for ust])
140 #define CONFIG_UST_GDB_INTEGRATION
143 [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_UST, 1, [Define if UST is available])],
144 [AC_MSG_RESULT([no]); ustlibs= ; ustinc= ])
145 CFLAGS="$saved_CFLAGS"
148 # Flags needed for UST
152 AC_ARG_ENABLE(werror,
153 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
154 [case "${enableval}" in
155 yes | y) ERROR_ON_WARNING="yes" ;;
156 no | n) ERROR_ON_WARNING="no" ;;
157 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
160 # Enable -Werror by default when using gcc. Turn it off for releases.
161 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \
162 && test x"$enable_build_with_cxx" != x"yes" \
163 && $development; then
168 if test "${ERROR_ON_WARNING}" = yes ; then
169 WERROR_CFLAGS="-Werror"
172 build_warnings="-Wall -Wpointer-arith \
173 -Wformat-nonliteral -Wno-char-subscripts -Wempty-body"
175 # Now add in C and C++ specific options, depending on mode.
176 if test "$enable_build_with_cxx" = "yes"; then
177 build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \
180 build_warnings="$build_warnings -Wdeclaration-after-statement"
183 # The set of warnings supported by a C++ compiler is not the same as
185 if test "$enable_build_with_cxx" = "yes"; then
190 if test "x$GCC" = xyes
192 AC_MSG_CHECKING(compiler warning flags)
193 # Separate out the -Werror flag as some files just cannot be
194 # compiled with it enabled.
195 for w in ${build_warnings}; do
197 -Werr*) WERROR_CFLAGS=-Werror ;;
199 # Check whether GCC accepts it.
200 saved_CFLAGS="$CFLAGS"
202 saved_CXXFLAGS="$CXXFLAGS"
203 CXXFLAGS="$CXXFLAGS $w"
204 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
205 CFLAGS="$saved_CFLAGS"
206 CXXFLAGS="$saved_CXXFLAGS"
209 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
211 AC_SUBST(WARN_CFLAGS)
212 AC_SUBST(WERROR_CFLAGS)
214 if test "$enable_build_with_cxx" = "yes"; then
218 dnl dladdr is glibc-specific. It is used by thread-db.c but only for
219 dnl debugging messages. It lives in -ldl which is handled below so we don't
220 dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily
224 AC_CHECK_FUNCS(dladdr)
229 AC_CHECK_DECLS([strerror, perror, vasprintf, vsnprintf])
231 AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
233 AC_CHECK_TYPES(socklen_t, [], [],
234 [#include <sys/types.h>
235 #include <sys/socket.h>
240 # Starting with NDK version 9, <elf.h> actually includes definitions
241 # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
242 # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
243 # leading to conflicts with the defintions from <linux/elf.h>.
244 # This makes it impossible for us to include both <elf.h> and
245 # <linux/elf.h>, which means that, in practice, we do not have
246 # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
247 # Therefore, do not try to auto-detect availability, as it would
248 # get it wrong on this platform.
251 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
256 ACX_PKGVERSION([GDB])
257 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
258 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
259 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
261 # Check for various supplementary target information (beyond the
262 # triplet) which might affect the choices in configure.srv.
267 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
268 [save_CPPFLAGS="$CPPFLAGS"
269 CPPFLAGS="$CPPFLAGS $CFLAGS"
270 AC_EGREP_CPP([got it], [
274 ], [gdb_cv_i386_is_x86_64=yes],
275 [gdb_cv_i386_is_x86_64=no])
276 CPPFLAGS="$save_CPPFLAGS"])
279 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
280 [save_CPPFLAGS="$CPPFLAGS"
281 CPPFLAGS="$CPPFLAGS $CFLAGS"
282 AC_EGREP_CPP([got it], [
286 ], [gdb_cv_m68k_is_coldfire=yes],
287 [gdb_cv_m68k_is_coldfire=no])
288 CPPFLAGS="$save_CPPFLAGS"])
292 . ${srcdir}/configure.srv
294 # Add in the common host objects.
295 . ${srcdir}/../common/common.host
296 srv_host_obs="$common_host_obs"
298 if test "${srv_mingwce}" = "yes"; then
300 elif test "${srv_mingw}" = "yes"; then
301 LIBS="$LIBS -lws2_32"
302 elif test "${srv_qnx}" = "yes"; then
303 LIBS="$LIBS -lsocket"
304 elif test "${srv_lynxos}" = "yes"; then
305 LIBS="$LIBS -lnetinet"
308 if test "${srv_mingw}" = "yes"; then
309 AC_DEFINE(USE_WIN32API, 1,
310 [Define if we should use the Windows API, instead of the
311 POSIX API. On Windows, we use the Windows API when
312 building for MinGW, but the POSIX API when building
316 if test "${srv_linux_usrregs}" = "yes"; then
317 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
318 [Define if the target supports PTRACE_PEEKUSR for register ]
322 if test "${srv_linux_regsets}" = "yes"; then
323 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
324 [Define if the target supports register sets.])
326 AC_MSG_CHECKING(for PTRACE_GETREGS)
327 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
328 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
330 [gdbsrv_cv_have_ptrace_getregs=yes],
331 [gdbsrv_cv_have_ptrace_getregs=no])])
332 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
333 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
334 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
335 [Define if the target supports PTRACE_GETREGS for register ]
339 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
340 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
341 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
342 [PTRACE_GETFPXREGS;],
343 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
344 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
345 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
346 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
347 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
348 [Define if the target supports PTRACE_GETFPXREGS for extended ]
353 if test "${srv_linux_btrace}" = "yes"; then
354 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
355 [Define if the target supports branch tracing.])
358 if test "$ac_cv_header_sys_procfs_h" = yes; then
359 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
360 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
361 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
362 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
363 BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
366 dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
367 if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
368 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
371 dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
372 if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
373 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
376 dnl Check for libdl, but do not add it to LIBS as only gdbserver
377 dnl needs it (and gdbreplay doesn't).
379 AC_CHECK_LIB(dl, dlopen)
385 if test "$srv_linux_thread_db" = "yes"; then
386 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
388 AC_MSG_CHECKING(for the dynamic export flag)
389 old_LDFLAGS="$LDFLAGS"
390 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
392 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
393 LDFLAGS="$LDFLAGS $RDYNAMIC"
395 [found="-Wl,--dynamic-list"
396 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
397 [RDYNAMIC="-rdynamic"
398 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
404 LDFLAGS="$old_LDFLAGS"
405 AC_MSG_RESULT($found)
407 srv_libs="-lthread_db"
410 srv_thread_depfiles="thread-db.o proc-service.o"
411 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
412 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
413 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
414 [gdbsrv_cv_have_td_version=yes],
415 [gdbsrv_cv_have_td_version=no])])
416 if test $gdbsrv_cv_have_td_version = yes; then
417 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
421 AC_ARG_WITH(libthread-db,
422 AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
423 [srv_libthread_db_path="${withval}"
424 srv_libs="$srv_libthread_db_path"
427 if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
428 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
431 if test "$srv_xmlfiles" != ""; then
432 srv_xmlbuiltin="xml-builtin.o"
433 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
435 tmp_xmlfiles=$srv_xmlfiles
437 for f in $tmp_xmlfiles; do
438 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
442 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
443 GDBSERVER_LIBS="$srv_libs"
445 dnl Check whether the target supports __sync_*_compare_and_swap.
446 AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
447 gdbsrv_cv_have_sync_builtins, [
448 AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
449 gdbsrv_cv_have_sync_builtins=yes,
450 gdbsrv_cv_have_sync_builtins=no)])
451 if test $gdbsrv_cv_have_sync_builtins = yes; then
452 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
453 [Define to 1 if the target supports __sync_*_compare_and_swap])
456 dnl Check for -fvisibility=hidden support in the compiler.
457 saved_cflags="$CFLAGS"
458 CFLAGS="$CFLAGS -fvisibility=hidden"
459 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
460 [gdbsrv_cv_have_visibility_hidden=yes],
461 [gdbsrv_cv_have_visibility_hidden=no])
462 CFLAGS="$saved_cflags"
464 dnl Check if we can disable the virtual address space randomization.
465 dnl The functionality of setarch -R.
466 AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
467 define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
468 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
469 # define ADDR_NO_RANDOMIZE 0x0040000
471 /* Test the flag could be set and stays set. */
472 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
473 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
475 AC_RUN_IFELSE([PERSONALITY_TEST],
476 [gdbsrv_cv_have_personality=true],
477 [gdbsrv_cv_have_personality=false],
478 [AC_LINK_IFELSE([PERSONALITY_TEST],
479 [gdbsrv_cv_have_personality=true],
480 [gdbsrv_cv_have_personality=false])])
481 if $gdbsrv_cv_have_personality
483 AC_DEFINE([HAVE_PERSONALITY], 1,
484 [Define if you support the personality syscall.])
491 # check whether to enable the inprocess agent
492 if test "$ipa_obj" != "" \
493 -a "$gdbsrv_cv_have_sync_builtins" = yes \
494 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
500 AC_ARG_ENABLE(inprocess-agent,
501 AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
502 [case "$enableval" in
503 yes) want_ipa=true ;;
504 no) want_ipa=false ;;
505 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
507 [want_ipa=$have_ipa])
511 IPA_DEPFILES="$ipa_obj"
512 extra_libraries="$extra_libraries libinproctrace.so"
514 AC_MSG_ERROR([inprocess agent not supported for this target])
518 AC_SUBST(GDBSERVER_DEPFILES)
519 AC_SUBST(GDBSERVER_LIBS)
520 AC_SUBST(srv_xmlbuiltin)
521 AC_SUBST(srv_xmlfiles)
522 AC_SUBST(IPA_DEPFILES)
523 AC_SUBST(extra_libraries)
525 GNULIB=build-gnulib-gdbserver/import
528 if test x"$STDINT_H" != x; then
529 GNULIB_STDINT_H=$GNULIB/$STDINT_H
531 AC_SUBST(GNULIB_STDINT_H)
534 [case x$CONFIG_HEADERS in