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>
238 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
242 ACX_PKGVERSION([GDB])
243 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
244 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
245 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
247 # Check for various supplementary target information (beyond the
248 # triplet) which might affect the choices in configure.srv.
253 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
254 [save_CPPFLAGS="$CPPFLAGS"
255 CPPFLAGS="$CPPFLAGS $CFLAGS"
256 AC_EGREP_CPP([got it], [
260 ], [gdb_cv_i386_is_x86_64=yes],
261 [gdb_cv_i386_is_x86_64=no])
262 CPPFLAGS="$save_CPPFLAGS"])
265 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
266 [save_CPPFLAGS="$CPPFLAGS"
267 CPPFLAGS="$CPPFLAGS $CFLAGS"
268 AC_EGREP_CPP([got it], [
272 ], [gdb_cv_m68k_is_coldfire=yes],
273 [gdb_cv_m68k_is_coldfire=no])
274 CPPFLAGS="$save_CPPFLAGS"])
278 . ${srcdir}/configure.srv
280 # Add in the common host objects.
281 . ${srcdir}/../common/common.host
282 srv_host_obs="$common_host_obs"
284 if test "${srv_mingwce}" = "yes"; then
286 elif test "${srv_mingw}" = "yes"; then
287 LIBS="$LIBS -lws2_32"
288 elif test "${srv_qnx}" = "yes"; then
289 LIBS="$LIBS -lsocket"
290 elif test "${srv_lynxos}" = "yes"; then
291 LIBS="$LIBS -lnetinet"
294 if test "${srv_mingw}" = "yes"; then
295 AC_DEFINE(USE_WIN32API, 1,
296 [Define if we should use the Windows API, instead of the
297 POSIX API. On Windows, we use the Windows API when
298 building for MinGW, but the POSIX API when building
302 if test "${srv_linux_usrregs}" = "yes"; then
303 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
304 [Define if the target supports PTRACE_PEEKUSR for register ]
308 if test "${srv_linux_regsets}" = "yes"; then
309 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
310 [Define if the target supports register sets.])
312 AC_MSG_CHECKING(for PTRACE_GETREGS)
313 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
314 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
316 [gdbsrv_cv_have_ptrace_getregs=yes],
317 [gdbsrv_cv_have_ptrace_getregs=no])])
318 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
319 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
320 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
321 [Define if the target supports PTRACE_GETREGS for register ]
325 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
326 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
327 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
328 [PTRACE_GETFPXREGS;],
329 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
330 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
331 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
332 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
333 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
334 [Define if the target supports PTRACE_GETFPXREGS for extended ]
339 if test "${srv_linux_btrace}" = "yes"; then
340 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
341 [Define if the target supports branch tracing.])
344 if test "$ac_cv_header_sys_procfs_h" = yes; then
345 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
346 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
347 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
348 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
349 BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
352 dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
353 if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
354 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
357 dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
358 if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
359 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
362 dnl Check for libdl, but do not add it to LIBS as only gdbserver
363 dnl needs it (and gdbreplay doesn't).
365 AC_CHECK_LIB(dl, dlopen)
371 if test "$srv_linux_thread_db" = "yes"; then
372 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
374 AC_MSG_CHECKING(for the dynamic export flag)
375 old_LDFLAGS="$LDFLAGS"
376 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
378 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
379 LDFLAGS="$LDFLAGS $RDYNAMIC"
381 [found="-Wl,--dynamic-list"
382 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
383 [RDYNAMIC="-rdynamic"
384 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
390 LDFLAGS="$old_LDFLAGS"
391 AC_MSG_RESULT($found)
393 srv_libs="-lthread_db"
396 srv_thread_depfiles="thread-db.o proc-service.o"
397 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
398 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
399 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
400 [gdbsrv_cv_have_td_version=yes],
401 [gdbsrv_cv_have_td_version=no])])
402 if test $gdbsrv_cv_have_td_version = yes; then
403 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
407 AC_ARG_WITH(libthread-db,
408 AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
409 [srv_libthread_db_path="${withval}"
410 srv_libs="$srv_libthread_db_path"
413 if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
414 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
417 if test "$srv_xmlfiles" != ""; then
418 srv_xmlbuiltin="xml-builtin.o"
419 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
421 tmp_xmlfiles=$srv_xmlfiles
423 for f in $tmp_xmlfiles; do
424 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
428 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
429 GDBSERVER_LIBS="$srv_libs"
431 dnl Check whether the target supports __sync_*_compare_and_swap.
432 AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
433 gdbsrv_cv_have_sync_builtins, [
434 AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
435 gdbsrv_cv_have_sync_builtins=yes,
436 gdbsrv_cv_have_sync_builtins=no)])
437 if test $gdbsrv_cv_have_sync_builtins = yes; then
438 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
439 [Define to 1 if the target supports __sync_*_compare_and_swap])
442 dnl Check for -fvisibility=hidden support in the compiler.
443 saved_cflags="$CFLAGS"
444 CFLAGS="$CFLAGS -fvisibility=hidden"
445 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
446 [gdbsrv_cv_have_visibility_hidden=yes],
447 [gdbsrv_cv_have_visibility_hidden=no])
448 CFLAGS="$saved_cflags"
450 dnl Check if we can disable the virtual address space randomization.
451 dnl The functionality of setarch -R.
452 AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
453 define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
454 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
455 # define ADDR_NO_RANDOMIZE 0x0040000
457 /* Test the flag could be set and stays set. */
458 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
459 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
461 AC_RUN_IFELSE([PERSONALITY_TEST],
462 [gdbsrv_cv_have_personality=true],
463 [gdbsrv_cv_have_personality=false],
464 [AC_LINK_IFELSE([PERSONALITY_TEST],
465 [gdbsrv_cv_have_personality=true],
466 [gdbsrv_cv_have_personality=false])])
467 if $gdbsrv_cv_have_personality
469 AC_DEFINE([HAVE_PERSONALITY], 1,
470 [Define if you support the personality syscall.])
477 # check whether to enable the inprocess agent
478 if test "$ipa_obj" != "" \
479 -a "$gdbsrv_cv_have_sync_builtins" = yes \
480 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
486 AC_ARG_ENABLE(inprocess-agent,
487 AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
488 [case "$enableval" in
489 yes) want_ipa=true ;;
490 no) want_ipa=false ;;
491 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
493 [want_ipa=$have_ipa])
497 IPA_DEPFILES="$ipa_obj"
498 extra_libraries="$extra_libraries libinproctrace.so"
500 AC_MSG_ERROR([inprocess agent not supported for this target])
504 AC_SUBST(GDBSERVER_DEPFILES)
505 AC_SUBST(GDBSERVER_LIBS)
506 AC_SUBST(srv_xmlbuiltin)
507 AC_SUBST(srv_xmlfiles)
508 AC_SUBST(IPA_DEPFILES)
509 AC_SUBST(extra_libraries)
511 GNULIB=build-gnulib-gdbserver/import
514 if test x"$STDINT_H" != x; then
515 GNULIB_STDINT_H=$GNULIB/$STDINT_H
517 AC_SUBST(GNULIB_STDINT_H)
520 [case x$CONFIG_HEADERS in